我之前使用nesasm来编写代码,现在想转到asm6。
但是发现一个差别,nesasm有BANK指令以及BANK()函数,asm6却没有。
BANK函数在调用切换的bank中的function时很方便,通过BANK函数可以得到function所在的BANK号。
例如以下nesasm 宏代码(MMC3):
Code: Select all
;*******************************************
;bank_jsr 调用在另外的bank中的地址,调用完后返回原bank
;参数1 调用函数地址
;*******************************************
macro bank_jsr
IF \1<$a000
LDA <bankno1
PHA
LDX #BANK(\1)
JSR bankswitch1
JSR \1
PLA
TAX
JMP bankswitch1 ;换到原来的块 switch back
;
else
;
LDA <bankno2
PHA
LDX #BANK(\1)
JSR bankswitch2
JSR \1
PLA
TAX
JMP bankswitch2
endif
endm
bankswitch1和bankswitch2是切换bank的function。
使用 LDX #BANK(\1) 即可取得参数1所在bank号用于切换。
例如我想调用function1,无论function1在哪个bank,
我只要写:
Code: Select all
bank_jsr function1
谢谢大家:D