【问题标题】:Could anything with a Z80 processor run Gameboy games?带有 Z80 处理器的任何东西都可以运行 Gameboy 游戏吗?
【发布时间】:2019-01-31 04:52:13
【问题描述】:

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

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

【问题讨论】:

  • 这个问题可能更适合Retrocomputing
  • 我认为最困难的部分是 I/O 设备,例如图形和声音硬件。以及可用的定时器芯片等。这些在 TI84 和 Gameboy 上会完全不同。
  • 我对 LR35902 指令集不太熟悉,但是当我阅读它时,有些指令在 Z80 上不可用。因此,仿真并非微不足道。也就是说,对于 TI-84+ 系列(以及彩色模型)来说,存在一个相当不错的模拟器。检查 ticalc.org、omimaga.org 和 cemetech.net

标签: intel z80 gameboy retro-computing intel-8080


【解决方案1】:

Z-80 指令集是 8080 指令集的超集。 LR35902 与 8080 有很多共同点,但用不同的指令替换了一些 8080 指令,并在与 Z-80 不同的方向上扩展了指令集。 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 在两者上都可用并且只需使用不同的操作码,这是一个小小的帮助。

【讨论】:

    猜你喜欢
    • 2017-05-12
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 2019-09-25
    • 1970-01-01
    相关资源
    最近更新 更多