yandagui 发表于 2016-11-19 22:19:45

[FC][魂斗罗旋风终板END暂停显菜单]

本帖最后由 yandagui 于 2016-11-19 23:11 编辑

   [魂斗罗旋风终板END暂停显菜单]
作者:FlameCyclone(flamecyclone.ys168.com)
时间:2016/11/19 21:46:00
更新日志:
2016.11.19:加入暂停显菜单(共5页).
2016.11.12:加入无限跳跃.
2016.11.12:加入速度调节.
2016.11.11:加入敌我子弹对消功能.
2016.11.11:加入全屏闪灭功能.
2016.06.08:加入全屏瞄准功能.
2016.05.31:加入弹速调节功能.
2016.01.01:加入高难度模式.
2015.12.12:修复消除威胁不足,使得移动BOSS关卡(第2,4,5,6)正常通过.
2014.07.05:由于对打功能不完善,直接去除,更改为生命锁定.
2014.07.05:双人切换功能优化.
2014.06.01:修复第三关浮空到BOSS前必须关闭浮空后跳跃才能见BOSS的麻烦.
2014.06.01:取消生命锁定,改为生命锁定模式下剩余生命不会少于一条.
2014.01.18:修复GAME OVER字样只有G和O的错误,原来想拉大字母间距离,看来行不通.
2014.01.18:浮空模式下,P2飞行高度未限制导致死亡,原来是指令本该用绝对X变址的被用成了绝对寻址.
2014.02.08:拿手机无聊时又发现一些错误,所以修正生命剩余勋章显示的错误(某天用读卡器插在DVD上测试发现机器读不了卡,原因是目录级数超过三级,只有刻录成光盘来测试,结果发现生命勋章的显示竟然无压力!)
2014.02.13:加入自动演示通关.
内容:
23.暂停菜单:        暂停后,自动显示菜单,选择键翻页,方向键和BA键进行各种功能的开关操作.
22.无限跳跃:        暂停后,选择键4次,按下开启,开启后游戏时无限跳跃.
21.速度调节:        暂停后,选择键4次,按左右调节行走速度(0-3级).
20.子弹对消:        暂停后,选择键4次,再按A键切换,此时敌人子弹可以打掉.
19.全屏闪灭:        暂停后,选择键4次,再按B键切换,开启后游戏时按选择键屏幕内敌人闪灭.
18.全屏瞄准:        暂停后,选择键2次,再按B开启/关闭,子弹对消开启时无效.
17.弹速调节:        暂停后,选择键3次,下开启,非暂停时按选择键调节,默认为1级,共5级.
16.困难模式:        暂停后,选择键3次,右键切换,我不相信你能够无伤通关.
01.子弹切换:        暂停后,选择键0次,上=快S,下=快L,左=快M,右=快F,B=快普通,A=取消当前子弹加速状态.
02.无敌锁定:        暂停后,选择键1次,上开启/关闭,不用讲了,金身无敌.
03.生命锁定:        暂停后,选择键1次,下开启/关闭,生命锁定为16条.
04.角色双控:        暂停后,选择键1次,左开启/关闭,无非就是主机控制副机.
05.生命底限:        暂停后,选择键1次,右开启/关闭,锁定剩余生命数不少于1条.
06.一击必杀:        暂停后,选择键1次,再按B开启/关闭,即使是第8关BOSS,一发花生米依然要其老命.
07.角色浮空:        暂停后,选择键1次,再按A开启/关闭,第三关浮空时按选择键向上卷画面轴.
08.弹数加强:        暂停后,选择键2次,上开启/关闭,此时所有子弹发射数为15发.
09.皮肤更换:        暂停后,选择键2次,下开启/关闭,主机开启时橙黄色,副机开启时为蓝色.
10.混合子弹:        暂停后,选择键2次,左开启/关闭,此时连射时所有子弹混合.
11.敌人锁定:        暂停后,选择键2次,右开启/关闭,此时敌人原位跑不动.
12.跳过一关:        暂停后,选择键3次,再按B使用,使用后可以直接到下一关.
13.单双切换:        暂停后,选择键3次,再按A键切换单双人游戏模式.
14.子弹方向:        暂停后,选择键3次,上开启/关闭,开启后发射的子弹攻击方向会随着操作的方向按键变化,第二关和第四关的小关建议关闭(开启的话打中敌人太难了哦).
15.消除威胁:        暂停后,选择键3次,左开启/关闭,此时游戏时按B键使得移动物体被消除。
A.做了一些汉化(小字体),剧情,关卡名及通关后的文字未汉化.
B.自动演示通关,双人合体打通关,演示时有背景音乐,通关后一样会有结尾及恐怖台词,之后游戏进入选关(相当于游戏自动开始了).注:通关后P1及P2会获得16条生命!也就是说看完演示自动开始后第一版有16条生命!
C.生命显示加强:最大显示15个剩余生命勋章!电脑端请开启精灵超过8个(这样勋章不会闪烁),手机端认命了,不过不影响正常操作.

    如果有什么好的修改建议,恳请通过QQ(1490868135)联系我(也许我不在线,可以留言在QQ里)
欢迎大家转载,转载时必须注明出处.

**** Hidden Message *****

忙了一个星期,觉都没睡好,眼睛也疲惫不堪啊.终于找到解决方法了,目前VIRTUANES运行不了,请使用其他模拟器玩.
这几天的劳动成果如下: .ORG $B400


PROREG:
PHA
TXA
PHA
TYA
PHA
LDA $25
CMP #$01
BNE RE
LDA $010A
CMP #$00
BEQ P1

RE:
JMP PPUWRITE

P1:                ; 条件判断
LDA $7FFF
CMP #$FF
BNE P1RP
LDA $7FA0
CMP #$00
BNE P1CMP
LDA $2001
PHA
LDA #$00
STA $2001
LDA #$FF
STA $7FA0
JSR CLEANA
PLA
STA $2001
JMP PPUWRITE
P1CMP:
LDA $7FFF
CMP #$00
BNE RE
P1RP:
LDA $2002
LDA #$00
STA $2001
LDA #$FF
STA $7FFF
STA $7FA0
JSR COPYPPU
PIRP2:
JSR CLEANA
JMP PPUWRITE

COPYPPU:
L0:
LDA $30
CMP #$02
BNE UNPROFC
LDA $FC
STA $7EFC
LDA #$00
STA $FC
UNPROFC:
LDA $FD
STA $7EFD
LDA $FF
STA $7EFF
LDA #$00
STA $FD
LDA #$B0
STA $FF
LDA $07C1
STA $7FC1
LDA #$3F
STA $2006
LDA #$01
STA $2006
LDA #$24
STA $2007
LDA $07F6
STA $7FFE
LDA $00FE
STA $7FFD
LDX #$00
LDY #$00
LDA $BD
PHA
LDA $BC
PHA
LDA $BB
PHA
LDA $BA
PHA
LDA $B9
PHA
LDA $B8
PHA
LDA #$00
STA $B8
STA $B9
STA $BA
STA $BB
STA $BC
STA $BD
LDA #$00
STA $BA
LDA #$20
STA $BB
LDA #$00
STA $BC
LDA #$60
STA $BD

L1:                ; PPU复制
LDA $BB
CMP #$30
BNE L2
LDA $BA
CMP #$00
BEQ PROADPLA

L2:
LDA $BB
STA $2006
LDA $BA
STA $2006

L3:
LDA $2007
LDA $2007
STA ($BC),Y

L4:
LDA #$00
STA $2000
INX
INC $BA
INC $BC
CPX #$00
BNE L1
INC $BB
INC $BD
JMP L1

PROADPLA:                ;出栈
PLA
STA $B8
PLA
STA $B9
PLA
STA $BA
PLA
STA $BB
PLA
STA $BC
PLA
STA $BD
CPRE:
RTS

CLEANA:                ; PPU清空
LDA $BD
PHA
LDA $BC
PHA
LDA $BB
PHA
LDA $BA
PHA
LDA $B9
PHA
LDA $B8
PHA
LDA #$00
STA $B8
STA $B9
STA $BA
STA $BB
STA $BC
STA $BD
LDX #$00
LDY #$00
LDA #$00
STA $BA
LDA #$20
STA $BB

CL1:
LDA $BB
CMP #$30
BNE CL2
LDA $BA
CMP #$00
BEQ FREEWRIYE

CL2:
LDA $BB
STA $2006
LDA $BA
STA $2006

CL3:
LDA #$00
STA $2007

CL4:
LDA #$00
STA $2000
INX
INC $BA
CPX #$00
BNE CL1
INC $BB
JMP CL1


FREEWRIYE:
JSR FREE





CLEANF:                ; 恢复现场
LDA #$08
STA $FE
LDA #$00
STA $07F6
LDA #$24
STA $7FC0
PLA
STA $B8
PLA
STA $B9
PLA
STA $BA
PLA
STA $BB
PLA
STA $BC
PLA
STA $BD
CLRF:
RTS

W_DATA:
.BYTE $00,$01,$02,$03,$04

W_PPU:
.BYTE $98,$97,$90,$9D,$96

P1_STRING:
.BYTE $9A,$82,$00                ;"P1"

P2_STRING:
.BYTE $9A,$83,$00                ;"P2"

WEAPON_STRING:
.BYTE $A1,$8F,$8B,$9A,$99,$98,$00;"WEAPON"

RELIFE_STRING:
.BYTE $9C,$8F,$96,$93,$90,$8F,$00;"RELIFE"

P1_PPU:
LDX #$00

P1_PPUW:
JSR PPUADDR_PROCESS
LDA P1_STRING,X
STA $2007
INX
INC $BA
CPX #$03
BCC P1_PPUW
LDX #$00
RTS

P2_PPU:
LDX #$00

P2_PPUW:
JSR PPUADDR_PROCESS
LDA P2_STRING,X
STA $2007
INX
INC $BA
CPX #$03
BCC P2_PPUW
LDX #$00
RTS


LDA $BB
STA $2006
LDA $BA
STA $2006
RTS



PLAYERLIFE:
JSR LIFETODEC
LIFEPPU1:
LDX #$00
LIFEPPU1RE:
JSR PPUADDR_PROCESS
LDA RELIFE_STRING,X
STA $2007
INX
INC $BA
CPX #$07
BCC LIFEPPU1RE

LIFEDEC:                ;生命显示写入
LDX #$00
LIFEDECRE:
LDA $7A03,X
CLC
ADC #$81
STA $2007
INX
INC $BA
CPX #$03
BCC LIFEDECRE
LDX #$00
RTS

LIFETODEC:                ;十进制转换
LIFEL1:        ;initialise
STA $7A00        ;$7A00=F3
LDA #$00
STA $7A03        ;$7A03=00
STA $7A04        ;$7A04=00
STA $7A05        ;$7A05=00
LIFEL2:        ;copy data $7A00 to 6001
LDA $7A00
STA $7A01

LIFEL3:       ;hundred
LDA $7A01
CMP #$64
BCC LIFEL6                ;$7A01<100 goto L6
LIFEL4:
LDA $7A01
SEC
SBC #$64        ;$7A01=$7A01-100
STA $7A01
INC $7A03        ;hundred++
LIFEL5:
LDA $7A01
CMP #$64
BCS LIFEL4                ;$7A01>100 goto L4

LIFEL6:        ;decade
LDA $7A01
CMP #$0A
BCC LIFEL9                ;$7A01<10 goto L9
LIFEL7:       
LDA $7A01
SEC
SBC #$0A
STA $7A01        ;$7A01=$7A01-10
INC $7A04        ;decade++
LIFEL8:
LDA $7A01
CMP #$0A
BCS LIFEL7                ;$7A01>10 goto L7
;unit
LIFEL9:
LDA $7A01        ;$7A05=$7A01
STA $7A05        ;unit
RTS        ;return



WEA:                ;武器ppu写入
LDX #$00
WEARE:
JSR PPUADDR_PROCESS
LDA WEAPON_STRING,X
STA $2007
LDA #$00
STA $2000
INX
INC $BA
CPX #$07
BCC WEARE

READ_WEA:
LDA $B9
AND #$10
BEQ NWEA
SWEA:

LDA #$9D
STA $2007
LDA #$00
STA $2000
INC $BA
LDX #$00
JMP WEAREAD
NWEA:

LDA #$8D
STA $2007
LDA #$00
STA $2000
INC $BA
LDX #$00
WEAREAD:
LDA $B9
AND #$EF
CMP W_DATA,X
BNE WEACMP

LDA W_PPU,X
STA $2007
LDA #$00
STA $2000

WEACMP:
INX
CPX #$05
BCC WEAREAD
RTS


PPUWRITE:
PLA
TAY
PLA
TAX
PLA
LDA $25
CMP #$00
BEQ WP1
LDA $25
CMP #$01
BNE WRE
LDA $F5,X
AND #$EF
BEQ WRE
LDA #$00
STA $7FA0

WRE:
JMP $A000

WP1:
LDA $7FFF
CMP #$FF
BNE WRE
LDA #$00
STA $2001
LDA $BD
PHA
LDA $BC
PHA
LDA $BB
PHA
LDA $BA
PHA
LDA $B9
PHA
LDA $B8
PHA
LDA #$00
STA $B8
STA $B9
STA $BA
STA $BB
STA $BC
STA $BD
LDA #$00
STA $7FFF
LDA $30
CMP #$02
BNE UNPROCPL
LDA $7EFC
STA $FC
LDA #$00
STA $A4
STA $A5
UNPROCPL:
LDA $7EFD
STA $FD
LDA $7EFF
STA $FF

WL0:
LDX #$00
LDY #$00
LDA #$00
STA $BA
LDA #$20
STA $BB
LDA #$00
STA $BC
LDA #$60
STA $BD

WL1:
LDA $BD
CMP #$70
BNE WL2
LDA $BC
CMP #$00
BEQ WLR

WL2:
LDA $BD
STA $2006
LDA $BC
STA $2006

WL3:
LDA ($BC),Y
STA $2007

WL4:
LDA #$00
STA $2000
INX
INC $BA
INC $BC
CPX #$00
BNE WL1
INC $BB
INC $BD
JMP WL1

WLR:
LDA $7FFE
STA $07F6
LDA $7FFD
STA $00FE
LDA $7FC1
STA $07C1
LDA #$3F
STA $2006
LDA #$01
STA $2006
LDA $07C1
STA $2007
LDA #$00
STA $2000
PLA
STA $B8
PLA
STA $B9
PLA
STA $BA
PLA
STA $BB
PLA
STA $BC
PLA
STA $BD
JMP $A000

FREE:                ; 暂存器保护
LDA $BD
PHA
LDA $BC
PHA
LDA $BB
PHA
LDA $BA
PHA
LDA $B9
PHA
LDA $B8
PHA
LDA #$00
STA $B8
STA $B9
STA $BA
STA $BB
STA $BC
STA $BD

WEAWRITE:                ;武器ppu写入
LDX #$00
LDA $AA
STA $B9
WEAINI:                ;地值初始化
LDA #$A4
STA $BA
LDA #$20
STA $BB


JSR WEA
LDX #$00                ;武器ppu写入
LDA $AB
STA $B9
LDA #$B3
STA $BA
LDA #$20
STA $BB


JSR WEA

LDX #$00
LDA #$E4
STA $BA
LDA #$20
STA $BB


LDA $32
JSR PLAYERLIFE

LDX #$00
LDA #$F3
STA $BA
LDA #$20
STA $BB


LDA $33
JSR PLAYERLIFE


JSR PLAYER_01_PPU
JSR PLAYER_02_PPU


JSR PAGE_PPU
JSR PAGESELECT













PLAPRO:                ;恢复现场
PLA
STA $B8
PLA
STA $B9
PLA
STA $BA
PLA
STA $BB
PLA
STA $BC
PLA
STA $BD
FREERTS:
RTS

INVINC_STRING:                        ;invincible
.BYTE $93,$98,$A0,$93,$98,$8D,$80

INVINC_PPU:
LDX #$00
LDA #$62
STA $BA
LDA #$21
STA $BB


JSR UP_PPU
JSR INVINC_WRITE
LDX #$00
LDA $07A0
AND #$01
JSR ON_OFF_PPU
LDX #$00
LDA #$71
STA $BA
LDA #$21
STA $BB


JSR UP_PPU
JSR INVINC_WRITE
LDX #$00
LDA $07A1
AND #$01
JSR ON_OFF_PPU
RTS

INVINC_WRITE:
LDX #$00
INWRITE:
JSR PPUADDR_PROCESS
LDA INVINC_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC INWRITE
RTS

ON_STRING:
.BYTE $99,$98,$80

OFF_STRING:
.BYTE $99,$90,$90

ON_OFF_PPU:
BEQ OFFWR
ONWR:
JSR PPUADDR_PROCESS
LDA ON_STRING,X
STA $2007
INC $BA
INX
CPX #$03
BCC ONWR
RTS
OFFWR:
JSR PPUADDR_PROCESS
LDA OFF_STRING,X
STA $2007
INC $BA
INX
CPX #$03
BCC OFFWR
RTS

LIFELC15_STRING:
.BYTE $96,$93,$90,$8F,$82,$86,$80

LIFELC15_WRITE:
LDX #$00
LIFELC15:
JSR PPUADDR_PROCESS
LDA LIFELC15_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC LIFELC15
RTS

LIFELC15_PPU:
LDX #$00
LDA #$A2
STA $BA
LDA #$21
STA $BB
JSR DN_PPU
JSR LIFELC15_WRITE
LDX #$00
LDA $07A0
AND #$02
JSR ON_OFF_PPU
LDX #$00
LDA #$B1
STA $BA
LDA #$21
STA $BB
JSR DN_PPU
JSR LIFELC15_WRITE
LDX #$00
LDA $07A1
AND #$02
JSR ON_OFF_PPU
RTS

DOUCON_STRING:
.BYTE $8E,$99,$9F,$8D,$99,$98,$80

DOUCON_WRITE:
LDX #$00
DOUCON:
JSR PPUADDR_PROCESS
LDA DOUCON_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC DOUCON
RTS

DOUCON_PPU:
LDX #$00
LDA #$E2
STA $BA
LDA #$21
STA $BB
JSR LF_PPU
JSR DOUCON_WRITE
LDX #$00
LDA $07A0
AND #$04
JSR ON_OFF_PPU
LDX #$00
LDA #$F1
STA $BA
LDA #$21
STA $BB
JSR LF_PPU
JSR DOUCON_WRITE
LDX #$00
LDA $07A1
AND #$04
JSR ON_OFF_PPU
RTS

LIFELOW_STRING:
.BYTE $96,$93,$90,$96,$99,$A1,$80

LIFELOW_WRITE:
LDX #$00
LIFELOW:
JSR PPUADDR_PROCESS
LDA LIFELOW_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC LIFELOW
RTS

LIFELOW_PPU:
LDX #$00
LDA #$22
STA $BA
LDA #$22
STA $BB


JSR RG_PPU
JSR LIFELOW_WRITE
LDX #$00
LDA $07A0
AND #$08
JSR ON_OFF_PPU
LDX #$00
LDA #$31
STA $BA
LDA #$22
STA $BB


JSR RG_PPU
JSR LIFELOW_WRITE
LDX #$00
LDA $07A1
AND #$08
JSR ON_OFF_PPU
RTS

KILLON_STRING:
.BYTE $95,$93,$96,$96,$99,$98,$80

KILLON_WRITE:
LDX #$00
KILLON:
JSR PPUADDR_PROCESS
LDA KILLON_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC KILLON
RTS

KILLON_PPU:
LDX #$00
LDA #$62
STA $BA
LDA #$22
STA $BB


JSR B_PPU
JSR KILLON_WRITE
LDX #$00
LDA $07A0
AND #$10
JSR ON_OFF_PPU
LDX #$00
LDA #$71
STA $BA
LDA #$22
STA $BB


JSR B_PPU
JSR KILLON_WRITE
LDX #$00
LDA $07A1
AND #$10
JSR ON_OFF_PPU
RTS

SKYFLY_STRING:
.BYTE $9D,$95,$A3,$90,$96,$A3,$80

SKYFLY_WRITE:
LDX #$00
SKYFLY:
JSR PPUADDR_PROCESS
LDA SKYFLY_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC SKYFLY
RTS

SKYFLY_PPU:
LDX #$00
LDA #$A2
STA $BA
LDA #$22
STA $BB


JSR A_PPU
JSR SKYFLY_WRITE
LDX #$00
LDA $07A0
AND #$20
JSR ON_OFF_PPU
LDX #$00
LDA #$B1
STA $BA
LDA #$22
STA $BB


JSR A_PPU
JSR SKYFLY_WRITE
LDX #$00
LDA $07A1
AND #$20
JSR ON_OFF_PPU
RTS

BULADD_STRING:
.BYTE $8C,$9F,$96,$8B,$8E,$8E,$80

BULADD_WRITE:
LDX #$00
BULADD:
JSR PPUADDR_PROCESS
LDA BULADD_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC BULADD
RTS

BULADD_PPU:
LDX #$00
LDA #$62
STA $BA
LDA #$21
STA $BB


JSR UP_PPU
JSR BULADD_WRITE
LDX #$00
LDA $07A2
AND #$01
JSR ON_OFF_PPU
LDX #$00
LDA #$71
STA $BA
LDA #$21
STA $BB


JSR UP_PPU
JSR BULADD_WRITE
LDX #$00
LDA $07A3
AND #$01
JSR ON_OFF_PPU
RTS

MENU_PAGE_STRING:
.BYTE $97,$8F,$98,$9F,$80,$9A,$8B,$91,$8F,$80,$81

PAGE_PPU:
LDX #$00
LDA #$0A
STA $BA
LDA #$23
STA $BB


MENU_PAGE:
JSR PPUADDR_PROCESS
LDA MENU_PAGE_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$0B
BCC MENU_PAGE
LDA $07AA
CLC
ADC #$82
STA $2007
LDA #$00
STA $2000
RTS


SKINGE_STRING:
.BYTE $9D,$95,$93,$98,$91,$8F,$80

SKINGE_WRITE:
LDX #$00
SKINGE:
JSR PPUADDR_PROCESS
LDA SKINGE_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC SKINGE
RTS

SKINGE_PPU:
LDX #$00
LDA #$A2
STA $BA
LDA #$21
STA $BB


JSR DN_PPU
JSR SKINGE_WRITE
LDX #$00
LDA $07A2
AND #$02
JSR ON_OFF_PPU
LDX #$00
LDA #$B1
STA $BA
LDA #$21
STA $BB


JSR DN_PPU
JSR SKINGE_WRITE
LDX #$00
LDA $07A3
AND #$02
JSR ON_OFF_PPU
RTS

BULMIX_STRING:
.BYTE $8C,$9F,$96,$97,$93,$A2,$80

BULMIX_WRITE:
LDX #$00
BULMIX:
JSR PPUADDR_PROCESS
LDA BULMIX_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC BULMIX
RTS

BULMIX_PPU:
LDX #$00
LDA #$E2
STA $BA
LDA #$21
STA $BB


JSR LF_PPU
JSR BULMIX_WRITE
LDX #$00
LDA $07A2
AND #$04
JSR ON_OFF_PPU
LDX #$00
LDA #$F1
STA $BA
LDA #$21
STA $BB


JSR LF_PPU
JSR BULMIX_WRITE
LDX #$00
LDA $07A3
AND #$04
JSR ON_OFF_PPU
RTS

ENELOC_STRING:
.BYTE $8F,$98,$8F,$96,$99,$8D,$80

ENELOC_WRITE:
LDX #$00
ENELOC:
JSR PPUADDR_PROCESS
LDA ENELOC_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC ENELOC
RTS

ENELOC_PPU:
LDX #$00
LDA #$22
STA $BA
LDA #$22
STA $BB


JSR RG_PPU
JSR ENELOC_WRITE
LDX #$00
LDA $07A2
AND #$08
JSR ON_OFF_PPU
LDX #$00
LDA #$31
STA $BA
LDA #$22
STA $BB


JSR RG_PPU
JSR ENELOC_WRITE
LDX #$00
LDA $07A3
AND #$08
JSR ON_OFF_PPU
RTS

FOCFUL_STRING:
.BYTE $90,$99,$8D,$90,$9F,$96,$80


FOCFUL_WRITE:
LDX #$00
FOCFUL:
JSR PPUADDR_PROCESS
LDA FOCFUL_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC FOCFUL
RTS

FOCFUL_PPU:
LDX #$00
LDA #$62
STA $BA
LDA #$22
STA $BB


JSR B_PPU
JSR FOCFUL_WRITE
LDX #$00
LDA $07A2
AND #$10
JSR ON_OFF_PPU
LDX #$00
LDA #$71
STA $BA
LDA #$22
STA $BB


JSR B_PPU
JSR FOCFUL_WRITE
LDX #$00
LDA $07A3
AND #$10
JSR ON_OFF_PPU
RTS

BULCON_STRING:
.BYTE $8C,$9F,$96,$8D,$99,$98,$80


BULCON_WRITE:
LDX #$00
BULCON:
JSR PPUADDR_PROCESS
LDA BULCON_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC BULCON
RTS

BULCON_PPU:
LDX #$00
LDA #$62
STA $BA
LDA #$21
STA $BB


JSR UP_PPU
JSR BULCON_WRITE
LDX #$00
LDA $07A4
AND #$08
JSR ON_OFF_PPU
LDX #$00
LDA #$71
STA $BA
LDA #$21
STA $BB


JSR UP_PPU
JSR BULCON_WRITE
LDX #$00
LDA $07A5
AND #$08
JSR ON_OFF_PPU
RTS

SPEBUL_STRING:
.BYTE $9D,$9A,$8F,$8C,$9F,$96,$80


SPEBUL_WRITE:
LDX #$00
SPEBUL:
JSR PPUADDR_PROCESS
LDA SPEBUL_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC SPEBUL
RTS

SPEBUL_PPU:
LDX #$00
LDA #$A2
STA $BA
LDA #$21
STA $BB


JSR DN_PPU
JSR SPEBUL_WRITE
LDX #$00
LDA $07A4
AND #$02
JSR ON_OFF_PPU
LDX #$00
LDA #$B1
STA $BA
LDA #$21
STA $BB


JSR DN_PPU
JSR SPEBUL_WRITE
LDX #$00
LDA $07A5
AND #$02
JSR ON_OFF_PPU
RTS

.ORG $A500
CLEALL_STRING:
.BYTE $8D,$96,$8F,$8B,$96,$96,$80


CLEALL_WRITE:
LDX #$00
CLEALL:
JSR PPUADDR_PROCESS
LDA CLEALL_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC CLEALL
RTS

CLEALL_PPU:
LDX #$00
LDA #$E2
STA $BA
LDA #$21
STA $BB


JSR LF_PPU
JSR CLEALL_WRITE
LDX #$00
LDA $07A4
AND #$04
JSR ON_OFF_PPU
LDX #$00
LDA #$F1
STA $BA
LDA #$21
STA $BB


JSR LF_PPU
JSR CLEALL_WRITE
LDX #$00
LDA $07A5
AND #$04
JSR ON_OFF_PPU
RTS

HARDMODE_STRING:
.BYTE $92,$8B,$8E,$97,$99,$8E,$80


HARDMODE_WRITE:
LDX #$00
HARDMODE:
JSR PPUADDR_PROCESS
LDA HARDMODE_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC HARDMODE
RTS

HARDMODE_PPU:
LDX #$00
LDA #$22
STA $BA
LDA #$22
STA $BB
JSR RG_PPU
JSR HARDMODE_WRITE
LDX #$00
LDA $07A4
AND #$01
JSR ON_OFF_PPU
LDX #$00
LDA #$31
STA $BA
LDA #$22
STA $BB


JSR RG_PPU
JSR HARDMODE_WRITE
LDX #$00
LDA $07A5
AND #$01
JSR ON_OFF_PPU
RTS

B_TO_JMPSTG_STRING:
.BYTE $80,$8C,$80,$9E,$99,$80,$94,$97,$9A,$9D,$9E,$91,$80


B_TO_JMPSTG_WRITE:
LDX #$00
B_TO_JMPSTG:
JSR PPUADDR_PROCESS
LDA B_TO_JMPSTG_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$0D
BCC B_TO_JMPSTG
LDX #$00
LDA $7FE0
JSR ON_OFF_PPU
RTS

B_TO_JMPSTG_PPU:
LDX #$00
LDA #$68
STA $BA
LDA #$22
STA $BB
JSR B_TO_JMPSTG_WRITE
RTS


A_TO_PLAMOD_STRING:
.BYTE $80,$8B,$80,$9E,$99,$80,$9A,$96,$8B,$97,$99,$8E,$80


A_TO_PLAMOD_WRITE:
LDX #$00
A_TO_PLAMOD:
JSR PPUADDR_PROCESS
LDA A_TO_PLAMOD_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$0D
BCC A_TO_PLAMOD
LDX #$00
LDA $39
JSR ONE_TWO_PPU
RTS

A_TO_PLAMOD_PPU:
LDX #$00
LDA #$A8
STA $BA
LDA #$22
STA $BB
JSR A_TO_PLAMOD_WRITE
RTS

MOVSPE_STRING:
.BYTE $97,$99,$A0,$9D,$9A,$8F,$80


MOVSPE_WRITE:
LDX #$00
MOVSPE:
JSR PPUADDR_PROCESS
LDA MOVSPE_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC MOVSPE
RTS

MOVSPE_PPU:
LDX #$00
LDA #$69
STA $BA
LDA #$21
STA $BB


JSR UP_PPU
JSR MOVSPE_WRITE
LDX #$00
LDA $079F
AND #$08
JSR ON_OFF_PPU
LDA #$80
STA $2007
RTS


UNLJMP_STRING:
.BYTE $9F,$98,$96,$94,$97,$9A,$80


UNLJMP_WRITE:
LDX #$00
UNLJMP:
JSR PPUADDR_PROCESS
LDA UNLJMP_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC UNLJMP
RTS

UNLJMP_PPU:
LDX #$00
LDA #$A9
STA $BA
LDA #$21
STA $BB


JSR DN_PPU
JSR UNLJMP_WRITE
LDX #$00
LDA $079F
AND #$04
JSR ON_OFF_PPU
RTS


DESTRO_STRING:
.BYTE $8E,$8F,$9D,$9E,$9C,$99,$80


DESTRO_WRITE:
LDX #$00
DESTRO:
JSR PPUADDR_PROCESS
LDA DESTRO_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC DESTRO
RTS

DESTRO_PPU:
LDX #$00
LDA #$E9
STA $BA
LDA #$21
STA $BB


JSR B_PPU
JSR DESTRO_WRITE
LDX #$00
LDA $079F
AND #$40
JSR ON_OFF_PPU
RTS


EQUBUL_STRING:
.BYTE $8F,$9B,$9F,$8C,$9F,$96,$80


EQUBUL_WRITE:
LDX #$00
EQUBUL:
JSR PPUADDR_PROCESS
LDA EQUBUL_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$07
BCC EQUBUL
RTS

EQUBUL_PPU:
LDX #$00
LDA #$29
STA $BA
LDA #$22
STA $BB


JSR A_PPU
JSR EQUBUL_WRITE
LDX #$00
LDA $079F
AND #$80
JSR ON_OFF_PPU
RTS



BULSEL_UP_STRING:
.BYTE $9F,$9A,$80,$9E,$99,$80,$9D,$9D,$80

BULSEL_DN_STRING:
.BYTE $8E,$98,$80,$9E,$99,$80,$9D,$96,$80

BULSEL_LF_STRING:
.BYTE $96,$90,$80,$9E,$99,$80,$9D,$97,$80

BULSEL_RG_STRING:
.BYTE $9C,$91,$80,$9E,$99,$80,$9D,$90,$80

BULSEL_B_STRING:
.BYTE $80,$8C,$80,$9E,$99,$80,$9D,$98,$80

BULSEL_A_STRING:
.BYTE $80,$8B,$80,$9E,$99,$80,$8D,$99,$97,$97,$99,$98,$80,$9D,$9A,$8F,$8F,$8E


BULSEL_UP_WRITE:
LDX #$00
BULSEL_UP:
JSR PPUADDR_PROCESS
LDA BULSEL_UP_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$09
BCC BULSEL_UP
RTS
BULSEL_DN_WRITE:
LDX #$00
BULSEL_DN:
JSR PPUADDR_PROCESS
LDA BULSEL_DN_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$09
BCC BULSEL_DN
RTS
BULSEL_LF_WRITE:
LDX #$00
BULSEL_LF:
JSR PPUADDR_PROCESS
LDA BULSEL_LF_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$09
BCC BULSEL_LF
RTS
BULSEL_RG_WRITE:
LDX #$00
BULSEL_RG:
JSR PPUADDR_PROCESS
LDA BULSEL_RG_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$09
BCC BULSEL_RG
RTS
BULSEL_B_WRITE:
LDX #$00
BULSEL_B:
JSR PPUADDR_PROCESS
LDA BULSEL_B_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$09
BCC BULSEL_B
RTS
BULSEL_A_WRITE:
LDX #$00
BULSEL_A:
JSR PPUADDR_PROCESS
LDA BULSEL_A_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$12
BCC BULSEL_A
RTS



BULSEL_PPU:
LDA #$6C
STA $BA
LDA #$21
STA $BB
JSR BULSEL_UP_WRITE

LDA #$AC
STA $BA
LDA #$21
STA $BB
JSR BULSEL_DN_WRITE

LDA #$EC
STA $BA
LDA #$21
STA $BB
JSR BULSEL_LF_WRITE

LDA #$2C
STA $BA
LDA #$22
STA $BB
JSR BULSEL_RG_WRITE

LDA #$6C
STA $BA
LDA #$22
STA $BB
JSR BULSEL_B_WRITE

LDA #$A7
STA $BA
LDA #$22
STA $BB
JSR BULSEL_A_WRITE
RTS



UP_STRING:
.BYTE $9F,$9A,$80

DN_STRING:
.BYTE $8E,$98,$80

LF_STRING:
.BYTE $96,$90,$80

RG_STRING:
.BYTE $9C,$91,$80

B_STRING:
.BYTE $80,$8C,$80

A_STRING:
.BYTE $80,$8B,$80


UP_WRITE:
LDX #$00
UP:
JSR PPUADDR_PROCESS
LDA UP_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$03
BCC UP
RTS

DN_WRITE:
LDX #$00
DN:
JSR PPUADDR_PROCESS
LDA DN_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$03
BCC DN
RTS

LF_WRITE:
LDX #$00
LF:
JSR PPUADDR_PROCESS
LDA LF_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$03
BCC LF
RTS

RG_WRITE:
LDX #$00
RG:
JSR PPUADDR_PROCESS
LDA RG_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$03
BCC RG
RTS

B_WRITE:
LDX #$00
B:
JSR PPUADDR_PROCESS
LDA B_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$03
BCC B
RTS

A_WRITE:
LDX #$00
A:
JSR PPUADDR_PROCESS
LDA A_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$03
BCC A
RTS


UP_PPU:
JSR UP_WRITE
RTS

DN_PPU:
JSR DN_WRITE
RTS

LF_PPU:
JSR LF_WRITE
RTS

RG_PPU:
JSR RG_WRITE
RTS

B_PPU:
JSR B_WRITE
RTS

A_PPU:
JSR A_WRITE
RTS


PAGESELECT:
PAGE0:
LDA $07AA
CMP #$00
BNE PAGE1

PAGE_00:
JSR BULSEL_PPU
RTS

PAGE1:
LDA $07AA
CMP #$01
BNE PAGE2

PAGE_01:
JSR INVINC_PPU
JSR LIFELC15_PPU
JSR DOUCON_PPU
JSR KILLON_PPU
JSR SKYFLY_PPU
JSR LIFELOW_PPU
RTS

PAGE2:
LDA $07AA
CMP #$02
BNE PAGE3

PAGE_02:
JSR BULADD_PPU
JSR SKINGE_PPU
JSR BULMIX_PPU
JSR ENELOC_PPU
JSR FOCFUL_PPU
RTS

PAGE3:
LDA $07AA
CMP #$03
BNE PAGE4

PAGE_03:
JSR BULCON_PPU
JSR SPEBUL_PPU
JSR CLEALL_PPU
JSR HARDMODE_PPU
JSR B_TO_JMPSTG_PPU
JSR A_TO_PLAMOD_PPU
RTS

PAGE4:
LDA $07AA
CMP #$04
BNE PAGERTS

PAGE_04:
JSR MOVSPE_PPU
JSR UNLJMP_PPU
JSR DESTRO_PPU
JSR EQUBUL_PPU
JSR MOVESPEED_PPU
PAGERTS:
RTS


PLAYER_01_STRING:
.BYTE $9A,$96,$8B,$A3,$8F,$9C,$80,$81,$82,$80


PLAYER_01_WRITE:
LDX #$00
PLAYER_01:
JSR PPUADDR_PROCESS
LDA PLAYER_01_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$0A
BCC PLAYER_01
RTS

PLAYER_01_PPU:
LDX #$00
LDA #$64
STA $BA
LDA #$20
STA $BB
JSR PLAYER_01_WRITE
RTS

PLAYER_02_STRING:
.BYTE $9A,$96,$8B,$A3,$8F,$9C,$80,$81,$83,$80


PLAYER_02_WRITE:
LDX #$00
PLAYER_02:
JSR PPUADDR_PROCESS
LDA PLAYER_02_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$0A
BCC PLAYER_02
RTS

PLAYER_02_PPU:
LDX #$00
LDA #$73
STA $BA
LDA #$20
STA $BB
JSR PLAYER_02_WRITE
RTS

PPUADDR_PROCESS:
LDA $BB
STA $2006
LDA $BA
STA $2006
RTS



ONE_STRING:
.BYTE $99,$98,$8F

TWO_STRING:
.BYTE $9E,$A1,$99

ONE_TWO_PPU:
BNE ONEWR
TWOWR:
JSR PPUADDR_PROCESS
LDA TWO_STRING,X
STA $2007
INC $BA
INX
CPX #$03
BCC TWOWR
RTS
ONEWR:
JSR PPUADDR_PROCESS
LDA ONE_STRING,X
STA $2007
INC $BA
INX
CPX #$03
BCC ONEWR
RTS

MOVESPEED_STRING:
.BYTE $97,$99,$A0,$8F,$80,$9D,$9A,$8F,$8F,$8F,$80


MOVESPEED_WRITE:
LDX #$00
MOVESPEED:
JSR PPUADDR_PROCESS
LDA MOVESPEED_STRING,X
STA $2007
LDA #$00
STA $2000
INC $BA
INX
CPX #$0B
BCC MOVESPEED
RTS

MOVESPEED_PPU:
LDX #$00
LDA #$AA
STA $BA
LDA #$22
STA $BB
JSR MOVESPEED_WRITE
LDA $7003
CLC
ADC #$82
STA $2007
RTS

hanjungex 发表于 2016-11-20 00:59:08

真是太強了,感覺樓主可以直接當D商了.

huanhuan05 发表于 2016-11-20 01:30:16

不错谢谢分享!

liujunbtx 发表于 2016-11-20 03:01:53

这个修改好厉害、、、、

afti 发表于 2016-11-20 08:57:10

非常强大的修改!

kexiao1223 发表于 2016-11-20 11:17:32

好东西,收下了

ckc7213 发表于 2016-11-20 12:03:09

太强了!佩服佩服!

nmclib1 发表于 2016-11-20 21:28:21

这修改太全面了 ,

wjb19780515 发表于 2016-11-21 09:59:17

这东西找了好久勒,谢谢!!

tariq017 发表于 2016-11-21 12:40:20

感谢楼主分享

datone 发表于 2016-11-21 19:36:29

感谢楼主分享

迎风飘扬 发表于 2016-12-2 15:48:07

qinxitong 发表于 2016-12-7 15:53:12

谢谢分享

yoyo2720 发表于 2023-7-28 22:49:06

看上去好复杂
页: [1]
查看完整版本: [FC][魂斗罗旋风终板END暂停显菜单]