[FC][忍者神龟2][END选关]
本帖最后由 yandagui 于 2017-4-2 13:21 编辑[忍者神龟2]
时间:2017.3.31
作者:FlameCyclone .ORG $B9E0
ora_data:
.BYTE $08,$04,$02,$01,$80,$40,$20,$10
and_data:
.BYTE $F7,$FB,$FD,$FE,$7F,$BF,$DF,$EF
button = $F8
flag = $6000
pause = $3D
.org $BA00
PHA
TXA
PHA
TYA
PHA
JSR KEY_OPERATE
JSR INV
JSR LIFE
JSR BLOOD
PLA
TAY
PLA
TAX
PLA
RTS
KEY_OPERATE:
data_protect:
PHA
TXA
PHA
TYA
PHA
FLAG_CMP:
LDA $600F
CMP #$7F ;标志数据初始化条件判断
BEQ pause_cmp
LDA #$80
STA $A001 ;6000-7FFF写入启用
LDA #$00
STA $6000 ;数据初始化
STA $6001 ;数据初始化
LDA #$7F
STA $600F
pause_cmp:
LDA pause
CMP #$01
BEQ button_press
PLA
TAY
PLA
TAX
PLA
RTS
button_press:
ini_Y:
LDY #$00
button_cmp:
LDA button,X
CMP ora_data,Y
BNE count_Y_cmp
flag_cmp:
LDA flag,X
AND ora_data,Y
BNE flag_and
flag_ora:
LDA flag,X
ORA ora_data,Y
STA flag,X
BNE count_Y_cmp
flag_and:
LDA flag,X
AND and_data,Y
STA flag,X
count_Y_cmp:
INY
CPY #$08
BCC button_cmp
data_extract:
PLA
TAY
PLA
TAX
PLA
return:
RTS
INV: ;无敌
LDA $6000,X
AND #$08
BEQ INV_RTS
LDA #$05
STA $93,X
INV_RTS:
RTS
LIFE: ;生命
LDA $6000,X
AND #$04
BEQ LIFE_RTS
LDA #$09
STA $4D,X
LIFE_RTS:
RTS
BLOOD: ;血量
LDA $6000,X
AND #$01
BEQ BLOOD_RTS
LDA #$38
STA $0568,X
BLOOD_RTS:
RTS
.ORG $FEFE
JSR $FF60
NOP
.ORG $FF60
STA $F8,X
STY $3A,X
PHA
TXA
PHA
TYA
PHA
LDA #$02
JSR $DB11 ;调用系统切页
PLA
TAY
PLA
TAX
PLA
JSR $BA00
RTS
;[忍者神龟PPU]
.ORG $BC00
STY $4014 ;补上覆盖的精灵写入指令
PHA
TXA
PHA
TYA
PHA
LDA $018
CMP #$01 ;比较是否为标题画面
BNE RET
LDA $019
CMP #$01 ;比较是否为标题画面
BEQ PPU_STAGE
RET:
PLA
TAY
PLA
TAX
PLA
RTS
PPU_STAGE: ;STAGE显示程序
LDA PPU_ADDR_DATA
STA $2006
LDA PPU_ADDR_DATA+1
STA $2006 ;坐标设置
LDX #$00
PPU_STAGE_WROTE: ;写入STAGE字模
LDA STAGE_DATA,X
CMP #$FF
BEQ STAGE_CMP
STA $2007
INX
BCC PPU_STAGE_WROTE
STAGE_CMP:
LDA $6010
CMP #$FF ;关卡数据初始化条件判断
BNE KEY_B
LDA #$00
STA $6010 ;关卡数据初始化
KEY_B: ;关卡减少
LDA $F8
AND #$42 ;按键B或左减关
BEQ KEY_A
LDA #$FF
STA $40
LDA $6010
CMP #$00 ;关卡比较
BEQ KEY_A
DEC $6010 ;减关
LDA #$57
JSR $DB52 ;按键音效
KEY_A: ;关卡增加
LDA $F8
AND #$81 ;按键A或右加关
BEQ PPU_NUM_WRITE
LDA #$FF
STA $40
LDA $6010
CMP #$0B ;关卡比较
BEQ PPU_NUM_WRITE
INC $6010 ;加关
LDA #$57
JSR $DB52 ;按键音效
PPU_NUM_WRITE:
LDA PPU_ADDR_DATA
STA $2006
LDA PPU_ADDR_DATA+1
CLC
ADC #$06
STA $2006 ;坐标设置
LDA $6010
TAX
LDA STAGE_D1,X ;写入数字
STA $2007
LDA PPU_ADDR_DATA
STA $2006
LDA PPU_ADDR_DATA+1
CLC
ADC #$0B
STA $2006 ;坐标设置
LDA $6010
TAX
LDA STAGE_D2,X ;写入数字
STA $2007
STAHE_WRITE:
LDA $6010
STA $42 ;初始关卡写入
PPU_RTS:
PLA
TAY
PLA
TAX
PLA
RTS
STAGE_DATA: ;关卡文字S,T,A,G,E,X,-,X字模数据
.BYTE $1D,$1E,$0B,$11,$0F,$00,$00,$00,$1E,$19,$00,$00,$00,$FF
STAGE_D1: ;关卡数字
.BYTE $02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$08,$08
STAGE_D2: ;场景数字
.BYTE $02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$02,$03
PPU_ADDR_DATA:
.BYTE $23,$4B
.ORG $FE21
JSR $FF40
.ORG $FF40
LDA $BCDF
CMP #$7F
BNE ADDRFF56
LDA $0018
CMP #$04
BNE $FF52
LDA $6010
STA $0042
JSR $BC00
RTS
ADDRFF56:
STY $4014
RTS
内容:
1.关卡选择: 标题时,左或B减,右或A加;
2.一击必杀: 暂停后,按B键切换;
3.无敌锁定: 暂停后,按上键切换;
4.生命加满: 暂停后,按下键切换;
5.血量锁满: 暂停后,按右键切换;
http://www.emu618.org/data/attachment/album/201703/31/234012a25mlhm25yfm92d1.pnghttp://www.emu618.org/data/attachment/album/201703/31/234012jqcaxb2qfjqb9q6f.pnghttp://www.emu618.org/data/attachment/album/201703/31/234013ocdfrfinxczdygdj.pnghttp://www.emu618.org/data/attachment/album/201703/31/234013ktphkb0t0xeh0hgf.pnghttp://www.emu618.org/data/attachment/album/201703/31/234014z71q6znq31k76y3d.png
FlameCyclone.ys168.com
www.nesbbs.com
**** Hidden Message *****
这游戏最终BOSS不好打。。。。。 楼主辛苦了! 辛苦了,改得漂亮 2代难度比3代更大 感谢修改。这作感觉比三代还要好玩。 每一分的付出都应该获得相应的回报。3分送上,顶你{:4_137:} 谢谢分享,修改辛苦了 感谢楼主分享新游戏 不管东西咋样 还是先谢谢了
楼主厉害,顶一个 楼主终于圆了我的梦想,楼主真的太辛苦了,谢谢,谢谢,谢谢,谢谢。{:4_159:} 感谢楼主分享! 辛苦了,改得漂亮 真的没人看了 感谢分享 已经适配nestopia模拟器 谢谢分享 下载玩玩看 小时候最爱 好的游戏