Z80 アセンブリを使用してゲームボーイ プログラミングの実験を開始しましたが、奇妙なものを見つけました。
遅延を作成するために使用されるコードのスニペットを見つけました。
simpleDelay:
dec bc
ld a,b
or c
jr nz, simpleDelay
ret
それをいじってみると、dec bc を 2 回書き込むと遅延が短くなることがわかりましたが、3 回書き込むと 1 回または 2 回使用するよりも遅延が長くなります。dec
偶数のステートメントを使用すると遅延が短縮されるのはなぜですか?
編集:遅延を呼び出すコードのスニペットは次のとおりです。
ld hl,Title2
ld de, _SCRN0+3+(SCRN_VY_B*5) ;
ld bc, Title2End-Title2
call mem_CopyVRAM
call simpleDelay