由于Gameboy的处理器LR35902是Z80和Intel 8080的混合体,因此请记住,Z80和Intel 8080的设计基本上都是交叉兼容的,任何运行Z80处理器的产品LR35902专用的操作码?我想知道不是因为我希望使用TI84在自习室玩口袋妖怪。
编辑:我知道我将不得不对控件进行重新编程,可能还需要重新编程游戏访问RAM的方式,但是我宁愿这样做,也不愿将整个游戏移植过来。
答案 0 :(得分:4)
Z-80指令集是8080指令集的超集。 LR35902与8080有很多共同点,但是用Z-80替换了一些8080指令,并在一些不同的方向上扩展了指令集。 LR35902与Z-80不兼容,也与8080不兼容。
您将必须找到不兼容指令的所有用法,并将其替换为提供相同功能的补丁。由于TI84比原始GameBoy CPU快得多,因此无需花费额外的时间,并且可以很容易地编写指令本身的代码替换。拆卸ROM并从数据中分离代码非常耗时。
但是,您可以使用现有的GameBoy仿真器并对其进行检测,以记录其在Z-80上执行的不同指令的位置。广泛玩游戏应该找到必须修补代码的大部分地方。
有关快速概览,请参见LR35902 instructions的图表并与Z-80进行比较。您还需要this description of LR35902 instructions。
这是LR35902和Z-80之间的简要调试指令操作码差异。
Opcode LR35902 Z-80
------ -------------- ----------
F2 LD A,(C) JP P,nn
E2 LD (C),A JP NV,nn
EA LD (nn),A JP V,nn
FA LD A,(nn) JP M,nn
3A LDD A,(HL) LD A,(nn)
32 LDD (HL),A LD (nn),A
2A LDI A,(HL) LD HL,(nn)
22 LDI (HL),A LD (nn),HL
08 LD (nn),SP EX AF,AF'
E0 LDH (n),A RET NV
F0 LDH A,(n) RET P
F8 LD HL,(SP+e) RET M
E8 ADD SP,e RET V
CB 3x SWAP r SL1 r (undocumented)
10 STOP DJNZ
D9 RETI EXX
LD A,(nn)
和LD (nn),A
都可以使用并且仅使用不同的操作码是一个小帮助。