Извлечение образа ROM для игрового мальчика
Я начал разрабатывать очень простой эмулятор для Game Boy в C, я уже изучал, как работать с процессором Z80 и относительными кодами операций, но у меня есть вопрос, который я так и не нашел ответа. Когда я открываю образ ROM, используя fopen(имя файла,"rb"), как можно получить инструкции для эмуляции? Я пытался сделать:fp = fopen(filename,"rb");
fread(buf,sizeof(buf),1,fp);
но я не знаю, как устроено ПЗУ Game Boy... кто-нибудь может объяснить мне, как получить инструкцию из ПЗУ и их структуру?
1 ответ
Решение
Выполнение ПЗУ картриджа всегда начинается со смещения 0x100. При написании эмулятора у вас есть два способа реализовать это:
- Запустите настоящий загрузочный диск для Gameboy, который завершит свое выполнение, перейдя к 0x100 в картридже ROM.
- Заполните все регистры ценностями самостоятельно. После того, как загрузочное ПЗУ закончено, регистры для CPU и других устройств остаются с определенными значениями. Вы можете установить их вручную и начать выполнять ПЗУ картриджа с 0x100 самостоятельно. Таким образом, вам даже не нужен загрузочный диск. Вы можете найти значения в Руководстве по Gameboy CPU.