我只是不知道如何在 gbz80“汇编”中编写一个简单的睡眠/延迟周期
我必须承认我的 gbz80 知识几乎没有,但我在想类似的事情:
ld bc,XXX
call WaitCyclEx
WaitCyclEx:
ld bc,(&FF05)
dec bc
jr nz,WaitCyclEx
ret
其背后的想法是,通过修改“bc”寄存器值,一旦调用“WaitCyclEx”函数,该值将被加载到寄存器 FF05,它是定时器计数器,也是 gbz80 的唯一计数器。然后该值递减并且该函数被重复直到该值达到零。
要知道循环是否正常工作,我添加了一些这样的声音......
;some noise
ld a,%00010101
ld (&FF10),a
ld a,%10010110
ld (&FF11),a
ld a,%01110011
ld (&FF12),a
ld a,187
ld (&FF13),a
ld a,%10000101
ld (&FF14),a
;delay
ld bc,65535 ; loading the "wait time" value
call WaitCyclEx
;some noise again
ld a,%00010101
ld (&FF10),a
ld a,%10010110
ld (&FF11),a
ld a,%01110011
ld (&FF12),a
ld a,187
ld (&FF13),a
ld a,%10000101
ld (&FF14),a
di
halt
根据 vasm 的说法,一切正常......但我只听到一种声音而不是两种声音......
考虑到处理器的 4Mhz,重复循环 65535 次至少应该让我有时间注意到两个声音之间的轻微延迟......
任何帮助将不胜感激