Продолжил изучение возможности переноса игры с Game Boy на ZX Spectrum. Попробовал автоматически конвертировать разными способами 2-х битную (4-х цветную) графику в однобитную:
Становится совершенно очевидно, что без ручной перерисовки графики не обойтись. Автоматически конвертированную графику можно использовать разве что для отладки, в качестве заглушки.
Для понимания того, как работает программа очень помогает эмулятор BGB, который имеет встроенный отладчик и прочие полезные инструменты, облегчающие понимание работы программы. Например, в листинг дизассемблера автоматически вставляются некоторые полезные комментарии, а в карте тайлов подсвечиваются те, которые прямо сейчас отображаются на экране.
Эмулятор позволяет сохранять как дамп памяти, так и ассемблерный листинг (почему-то без комментариев):
Код:
ROM0:0150 CD 81 28 call 2881
ROM0:0153 31 FF DF ld sp,DFFF
ROM0:0156 AF xor a
ROM0:0157 E0 47 ld (ff00+47),a
ROM0:0159 E0 48 ld (ff00+48),a
ROM0:015B E0 49 ld (ff00+49),a
ROM0:015D 21 00 80 ld hl,8000
ROM0:0160 01 00 18 ld bc,1800
ROM0:0163 CD 99 29 call 2999
ROM0:0166 CD A8 28 call 28A8
ROM0:0169 CD 8A 29 call 298A
ROM0:016C 3E 01 ld a,01
ROM0:016E EA 00 21 ld (2100),a
ROM0:0171 CD 19 7D call 7D19
ROM0:0174 CD C0 FF call FFC0
ROM0:0177 CD CE 40 call 40CE
ROM0:017A CD 6B 2B call 2B6B
ROM0:017D 3E 44 ld a,44
ROM0:017F E0 41 ld (ff00+41),a
ROM0:0181 3E 4F ld a,4F
ROM0:0183 E0 45 ld (ff00+45),a
ROM0:0185 3E 01 ld a,01
ROM0:0187 EA AF DB ld (DBAF),a
ROM0:018A 3E 01 ld a,01
ROM0:018C E0 FF ld (ff00+FF),a
ROM0:018E 3E 01 ld a,01
ROM0:0190 EA 00 21 ld (2100),a
ROM0:0193 CD 0F 46 call 460F
Но, к сожалению, в любом случае задача оказалась несколько сложнее, чем я себе изначально её представлял.
P.S. Исследуемая Зельда на осцилографе.