超级任天堂编程/乘法
外观
< 超级任天堂编程
这里有一个将 16 位 A 与 8 位 Y 相乘的子例程,其中较低的 16 位结果在 A 中,较高的 8 位结果在 Y 中。
multiplication:
sep #$20
sta $4202
sty $4303
nop
nop
nop
nop
lda $4216
ldy $4217
xba
sta $4202
nop
nop
tya
clc
adc $4216
ldy $4217
bcc carry_bit
iny
carry_bit:
xba
rep #$20
rts
这将使用 Mode-7 寄存器。如果您已经在使用 Mode-7 寄存器,则可以使用此子例程。如果 PPU 当前正在渲染 Mode-7 图形,这将产生错误。
multiplication:
sep #$20
sta $211b
xba
sta $211b
sty $211c
sty $211c
rep #$20
lda $2134
ldy $2136
rts