Может ли что-нибудь с процессором Z80 запускать игры Gameboy?
Поскольку процессор Gameboy, LR35902, является гибридом Z80 и Intel 8080, имея в виду, что Z80 и Intel 8080 были разработаны для обеспечения большей степени кросс-совместимости в любом случае, может ли что-либо, что имеет коды операций процессора Z80, работать с предназначен для LR35902? Мне было интересно не потому, что я надеялся использовать свой TI84 для игры в покемонов в учебном зале.
РЕДАКТИРОВАТЬ: я знаю, что мне придется перепрограммировать элементы управления, и, вероятно, способ, которым игра получает доступ к оперативной памяти, но я бы предпочел просто сделать это, чем портировать всю игру.
1 ответ
Набор команд 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
доступны на обоих и просто использовать разные коды операции.