1
Ромхакинг / [SMD] RoboCop versus The Terminator Improvement
« : 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)
Будет здорово, если исправишь.
Проблема в процедуре 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)
Будет здорово, если исправишь.
).
) пишет сохраненку, тоже начиная с середины сектора, причем проверяет не состояние машины статуса, а прям ворд читает и сравнивает с исходным значением.




















. Какие кусочные апдейты? Файл обновлений всегда был есть и будет только один, "bootin.bin". Он во всех крайних обновлениях этого года одного размера. Всё остальное это шелуха, и нужна она только мне, карту в процессе обновления на всё кроме bootin.bin наплевать.


