Может ли что-нибудь с процессором Z80 запускать игры Gameboy?

Поскольку процессор Gameboy, LR35902, представляет собой гибрид Z80 и Intel 8080, имея в виду, что Z80 и Intel 8080 в любом случае были разработаны, чтобы быть в основном кросс-совместимыми, может ли что-либо, имеющее процессор Z80, запускать коды операций, которые были предназначен для LR35902? Мне было интересно не потому, что я надеялся использовать свой TI84, чтобы играть в покемонов в учебном зале.

РЕДАКТИРОВАТЬ: я знаю, что мне придется перепрограммировать элементы управления и, возможно, способ доступа игры к ОЗУ, но я бы предпочел просто сделать это, чем переносить всю игру.


person Rachel McMann    schedule 24.08.2018    source источник
comment
Этот вопрос, вероятно, лучше подходит для ретрокомпьютинга.   -  person Sebastian Redl    schedule 24.08.2018
comment
Я ожидаю, что сложная часть — это устройства ввода-вывода, такие как графическое и звуковое оборудование. И доступные микросхемы таймера и так далее. Они будут совершенно другими на TI84 и Gameboy.   -  person Peter Cordes    schedule 24.08.2018
comment
Я не очень хорошо знаком с набором инструкций LR35902, но когда я прочитал о нем, там были некоторые инструкции, которых нет в Z80. Как следствие, эмуляция нетривиальна. Тем не менее, для серии TI-84+ (а также для цветных моделей) существует довольно хороший эмулятор. Проверьте ticalc.org, omnimaga.org и cemetech.net.   -  person Zeda    schedule 25.08.2018


Ответы (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 доступны на обоих и просто используют разные коды операций.

person George Phillips    schedule 25.08.2018