Автор Тема: [SMD] RoboCop versus The Terminator Improvement  (Прочитано 11422 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн masyanya

  • Пользователь
  • Сообщений: 547
  • Пол: Мужской
  • ...there's no knowledge that is not power...
    • Youtube
    • Просмотр профиля
[SMD] RoboCop versus The Terminator Improvement
« Ответ #90 : 14 Март 2026, 19:11:20 »
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)
Будет здорово, если исправишь.