请问NMI中断向量为0时,如何处理的?
nes吧
全部回复
仅看楼主
level 1
Viktor_Tsoi 楼主
最近在写模拟器,我看NMI中断会跳转到FFFA存储的地址,但是为0时,该怎么处理?我暂时跳转到8000,在我这个代码上跑没问题。这样处理正确吗?
;;--- 程序开始 ---;;
; INES 文件头
.inesprg 1 ; 1 段代码
.ineschr 1 ; 1 段数据
.inesmir 1 ; 总是1
.inesmap 0 ; 使用mapper 0
.bank 1
.org $FFFA
.dw 0 ; VBlank中断向量
.dw Start ; 复位向量
.dw VBlank_Routine ; 当BRK指令执行时的中断向量,改天再谈
.bank 0 ; bank 0 - 代码段
.org $0000
VBlankOrNo .db 0
.org $0300 ; OAM镜像从这里开始
Sprite1_Y: .db 0 ; 1号主角的纵坐标
Sprite1_T: .db 0 ; 1号主角的瓷砖编号
Sprite1_S: .db 0 ; 1号主角的特殊待遇
Sprite1_X: .db 0 ; 1号主角的横坐标
.org $8000 ; 代码从 $8000开始
VBlank_Routine:
;VBlank子程序开始
inc VBlankOrNo
; 使变量VBlankOrNo增1
;jmp end
rti ; RTI 意思是中断返回 (Interrupt RETurn or ReTurn from Interrupt)
Start: ;还记得大明湖畔的复位向量吗?
lda #%00001000 ; 就像那天说的一样设置PPU
sta $2000 ;
lda #%00011110 ;
sta $2001 ;
ldx #$00 ; 准备载入调色板
lda #$3F ;
sta $2006 ;
lda #$00 ;
sta $2006
2017年06月28日 07点06分 1
level 1
汇编大神,给跪了
2017年08月24日 09点08分 2
1