-1

我已经开始用 C 语言为游戏男孩开发一个非常简单的模拟器,我已经研究过 Z80 的 cpu 和相关的操作码,但我心中有一个问题我从未找到答案。当我使用 fopen(filename,"rb") 打开 ROM 映像时,如何获得模拟指令?我尝试过这样做: fp = fopen(filename,"rb"); fread(buf,sizeof(buf),1,fp);但我不知道 Game Boy 的 ROM 是如何构成的。有人可以解释一下如何从 ROM 中获取指令及其结构吗?

4

1 回答 1

1

磁带 ROM 执行总是从偏移量 0x100 开始。在编写模拟器时,您有两种方法来实现它:

  1. 执行真正的gameboy boot ROM,它将通过跳转到卡带ROM中的0x100来完成它的执行
  2. 自己用值填充所有寄存器。引导 ROM 完成后,CPU 和其他各种设备的寄存器都保留了特定值。您可以手动设置它们并自己从 0x100 开始执行盒式 ROM。这样你甚至不需要启动 ROM。您可以在 Gameboy CPU 手册中找到这些值。
于 2018-12-29T19:35:12.900 回答