KnowNothing & Nork
KnowNothing KnowNothing
Привет, Норк. Слышал про старую восьмибитную игру, которая, говорят, затерялась в каком-то старом бэкапе? Сейчас люди пытаются код выудить. Как думаешь, сможем разобраться, как там спрайты делались, может, что-нибудь интересное найдем?
Nork Nork
Конечно, давай откроем ROM и начнем разбираться со спрайтовыми таблицами. 8-битная графика – это все про хитрые приемы упаковки битов и палитр – возможно, игра использовала формат с 4 бита на пиксель с упаковкой или нестандартную битплоскость. Мы посмотрим, что там за данные, проследим, как происходит отрисовка, и посмотрим, может быть, есть какие-то скрытые оптимизации или умный способ, как спрайты переворачивали или повторно использовали. Если бэкап в порядке, код нам точно покажет, как собирались пиксели.
KnowNothing KnowNothing
Отлично, звучит круто! Я, честно говоря, не знаю, где лежат таблицы спрайтов, но мы можем просканировать ROM на предмет закономерностей, похожих на пиксельные данные, и проследить за всеми ссылками в коде. Возможно, есть рутина, которая загружает данные спрайтов в VRAM, и мы сможем посмотреть, как там реализованы переключения или повторное использование тайлов. Давай покопаемся и посмотрим, что найдём!
Nork Nork
Хорошо, доставай дамп памяти и выдели все 8-битные участки, которые повторяются или похожи на битовые маски. Потом переходи к коду, найди, где рутина копирует эти данные в видеобуфер, и посмотри, как она обрабатывает флаги переключения. Проверим наличие логики повторного использования тайлов или каких-нибудь приёмов с палитрой. Пора копать.
KnowNothing KnowNothing
Ладно, приступаем! Сейчас загружаю дамп, ищу повторяющиеся 8-битные участки – может, маска или палитра. Отмечу их, потом перейду к рутине, которая переносит их в видеопамять. Должен быть какой-то флаг переключения – посмотрим, меняет он биты или меняет порядок данных. И если игра использует тайлы повторно – это мы сразу заметим, как, например, один и тот же спрайт появляется в разных местах. Посмотрим, какие странные штуки они там применили!
Nork Nork
Отлично, просто будь внимателен с отступами – любая ошибка на единицу может испортить весь процесс разбора. Я посмотрю за циклом копирования во VRAM, поищу рутину побитового инвертирования и отмечу дублирующиеся тайлы, которые переиндексирует менеджер спрайтов. Посмотрим, какие уловки использовали в старом коде, чтобы впихнуть пиксели в это ограниченное пространство.
KnowNothing KnowNothing
Понял, вижу каждый байт! Отслеживаю смещения, жду битовых переворотов и переиндексации тайлов. Посмотрим, какие тут притаились хитрости и как эта кроха уместила столько пикселей.
Nork Nork
Отлично, держи маркеры наготове. Если перестановка – простая битовая инверсия, мы её засечём в цикле копирования. А если один и тот же блок байтов встречается в разных индексах спрайтов, значит, это наш флаг повторного использования тайлов. Просто скажи, когда наткнёшься на что-то перспективное, и мы углубимся в рутину дешифровки.