Набор инструкций Z-80 является надмножеством набора инструкций 8080. LR35902 имеет много общего с 8080, но заменяет некоторые инструкции 8080 другими и расширяет набор инструкций в некоторых направлениях, отличных от Z-80. LR35902 не совместим ни с Z-80, ни с 8080.
Вам придется найти все случаи использования несовместимых инструкций и заменить их патчами, обеспечивающими ту же функциональность. Поскольку TI84 намного быстрее, чем исходный процессор GameBoy, дополнительное время не будет проблемой, и будет легко написать замену для самих инструкций. Разборка ПЗУ и отделение кода от данных займет много времени.
Однако вы можете взять существующий эмулятор GameBoy и настроить его так, чтобы он записывал расположение выполняемых им инструкций, которые отличаются на Z-80. Активно играя в игру, вы должны найти большинство мест, где код должен быть исправлен.
Для краткого обзора см. эту таблицу с инструкциями LR35902 и сравните с Z-80. . Вам также понадобится это описание инструкций LR35902.
Вот краткое изложение различий в кодах операций инструкций между 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
доступны на обоих и просто используют разные коды операций.
person
George Phillips
schedule
25.08.2018