Razor, привет! Работа над хаком отличная, изменения по графике и геймплею в
Improvement Mode 1 очень радуют. Но есть один важный технический момент по совместимости с оригинальным железом.
Проблема в процедуре
TMSS Unlock — она либо полностью отсутствует, либо выполняется в коде
слишком поздно. На реальных консолях (Model 1/2) это приводит к аппаратной блокировке VDP при первой же попытке обращения к видеоконтроллеру.
Самый точный на сегодня эмулятор
BlastEm (который по таймингам и логике шины максимально близок к живому железу) при старте выдает прямой
Fatal Error:
machine freeze due to VDP read from C00004 without TMSS unlockВ чем суть:Код пытается писать/читать состояние VDP по адресу
$C00004, не успев предварительно прописать строку
SEGA в защитный регистр
$A14000. В итоге система ловит фриз через миллисекунды после экрана лицензии. На обычных эмуляторах или флеш-картриджах с собственным меню (которое само разлочивает консоль перед стартом игры) баг незаметен, но на «голом» железе с обычного картриджа — это гарантированный черный экран.
И есть ещё одна тема с инициализацией: ром может подхватить «случайное значение» из неинициализированной рабочей памяти (Work RAM) и пропустить настройку VDP.
Добавил вектор инициализации, только ради примера реализации:
ROM (TMSS FIX)Будет здорово, если исправишь.