使用 Z80 处理器 运行 Gameboy 游戏可以吗?

Could anything with a Z80 processor run Gameboy games?

由于 Gameboy 的处理器 LR35902 是 Z80 和 Intel 8080 的混合体,请记住 Z80 和 Intel 8080 的设计基本上是交叉兼容的,任何具有 Z80 的东西都可以处理器 运行 用于 LR35902 的操作码?我想知道不是因为我希望用我的TI84在自习室玩口袋妖怪

编辑:我知道我必须重新编程控件,可能还有游戏访问 RAM 的方式,但我宁愿这样做也不愿移植整个游戏。

Z-80指令集是8080指令集的超集。 LR35902 与 8080 有很多共同之处,但用不同的指令替换了一些 8080 指令,并在一些与 Z-80 不同的方向上扩展了指令集。 LR35902 与 Z-80 不兼容,也不与 8080 兼容。

您必须找到不兼容指令的所有用途,并用提供相同功能的补丁替换它们。由于 TI84 比原来的 GameBoy CPU 快得多,因此花费的额外时间不会成为问题,并且很容易为指令本身编写代码替换。 ROM的反汇编和代码与数据的分离将非常耗时。

但是,您可以使用现有的 GameBoy 模拟器并对其进行检测,以记录它执行的指令的位置,这些指令在 Z-80 上是不同的。广泛玩游戏应该能找到大部分需要打补丁的地方。

如需快速概览,请参阅 LR35902 instructions and compare with the Z-80. You'll also need 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 两者都可用,只是使用不同的操作码,这对我有一点帮助。