由于Gameboy的处理器LR35902是Z80和Intel 8080的混合体,因此请记住,Z80和Intel 8080的设计基本上都是相互兼容的,拥有Z80处理器的任何东西都可以运行是指LR35902吗?我想知道不是因为我希望使用TI84在自习室玩口袋妖怪。
编辑:我知道我将不得不对控件进行重新编程,可能还需要重新编程游戏访问RAM的方式,但是我宁愿这样做,也不愿移植整个游戏。
最佳答案
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
都可以使用,并且仅使用不同的操作码是一个很小的帮助。关于intel - Z80处理器可以运行Gameboy游戏吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52009005/