获取游戏男孩 ROM 映像
Fetching a game boy ROM image
我已经开始用 C 为 game boy 开发一个非常简单的模拟器,我已经研究了 Z80 的 cpu 和相关操作码的锄头工作,但我心中有一个问题我从来没有找到答案。
当我使用打开 ROM 映像时
fopen(文件名,"rb")
如何获得指令来模拟?我试过这样做:
fp = fopen(filename,"rb");
fread(buf,sizeof(buf),1,fp);
但我不知道 Game Boy 的 ROM 是如何构造的..有人可以解释一下如何从 ROM 中获取指令及其结构吗?
Cartridge ROM 的执行总是从偏移量 0x100 开始。编写模拟器时,您有两种实现方式:
- 执行真正的gameboy boot ROM,它将通过跳转到卡带ROM中的0x100来完成它的执行
- 自己用值填充所有寄存器。引导 ROM 完成 CPU 的寄存器后,各种其他设备将保留特定值。您可以手动设置它们并自己从 0x100 开始执行卡带 ROM。这样你甚至不需要引导 ROM。您可以在 Gameboy CPU 手册中找到这些值。
我已经开始用 C 为 game boy 开发一个非常简单的模拟器,我已经研究了 Z80 的 cpu 和相关操作码的锄头工作,但我心中有一个问题我从来没有找到答案。
当我使用打开 ROM 映像时
fopen(文件名,"rb")
如何获得指令来模拟?我试过这样做:
fp = fopen(filename,"rb");
fread(buf,sizeof(buf),1,fp);
但我不知道 Game Boy 的 ROM 是如何构造的..有人可以解释一下如何从 ROM 中获取指令及其结构吗?
Cartridge ROM 的执行总是从偏移量 0x100 开始。编写模拟器时,您有两种实现方式:
- 执行真正的gameboy boot ROM,它将通过跳转到卡带ROM中的0x100来完成它的执行
- 自己用值填充所有寄存器。引导 ROM 完成 CPU 的寄存器后,各种其他设备将保留特定值。您可以手动设置它们并自己从 0x100 开始执行卡带 ROM。这样你甚至不需要引导 ROM。您可以在 Gameboy CPU 手册中找到这些值。