gameboy bootrom在比较值时陷入困境

时间:2018-06-06 19:06:14

标签: emulation gameboy

我正在制作一个Gameboy模拟器,我目前仍然坚持使用bootrom的这段代码:

0x00E0 – LD HL, $0x0104 # point to Nintendo Logo in cartridge
0x00E3 – LD DE, $0x00A8 # point to Nintendo Logo in boot ROM
0x00E6 – LD A, (DE) # load next byte to compare to
0x00E7 – INC DE # point to next byte
0x00E8 – CP (HL) # compare bytes
0x00E9 – JRNZ .+0xfe # jump to 0x00E9 if no match (lock up)
0x00EB – INC HL # point to next byte
0x00EC – LD A, L # …
0x00ED – CP $0x34 # test if end of comparison
0x00EF – JRNZ +.0xf5 # if not the end, jump back to 0x00E6

问题在于,通过将内存地址0x00ED与内存地址L进行比较,0x34对它进行了测试。 内存地址0x34等于0x11,读取的最后一个字节位于内存地址133,但增加HL变为134,因此L等于34,内存地址34是问题所在的0x11。它应该在那里结束但它早于0x110结束,这使得L等于0x10并且等于0x11

所以我的问题是你怎么能解决这个问题。提前谢谢。

0 个答案:

没有答案