Новый взгляд на старые игры

в 5:28, , рубрики: genesis, Lua, sega, Sonic the hedgehog, Игровые приставки, Программирование, старое железо, метки: , , ,

Задумывались ли вы когда-нибудь над тем, как могли бы выглядеть ваши любимые игры времён 90-х, если бы среди кнопок джойстика была кнопка «Zoom out»? Как заядлого любителя (и ассистирующего спидраннера) игр Sonic the Hedgehog и их современных модификаций-хаков, меня однажды заинтересовала эта тема. Подробности под катом.

Мой интерес к данной теме вырос из этого видео:

Привычная мне игра выглядела в таком виде весьма необычно, и мне стало интересно, каким образом автор этого видео сделал это. Тогда я нашёл на его канале следующий видео-отчёт.

Нет-нет, вы не ошиблись: видео действительно полностью создано вручную, кадр за кадром его автор позиционировал маленькую картинку в нужное место большой. Безусловно, это мазохизм, но мазохизм этот вызывает уважение и восхищение железным терпением автора.

И тогда я задумался: а есть ли смысл во всей этой работе? Ведь в процессе игры сама игрушка всегда «знает» координаты видимого участка карты. А тасерский эмулятор позволяет с лёгкостью получить доступ к любой ячейке памяти и написать скрипт, выполняющий те или иные рутинные действия. Гениально! Достаточно просто делать скриншот каждого кадра игрового процесса, считывать из памяти координаты «камеры», затем, обзаведясь картой уровня, вырезать из неё нужные фрагменты, вставить в них наши скриншоты, и скомпоновать из них готовое видео!

Для работы с изображениями я выбрал lua-gd, так как с библиотекой gd уже достаточно хорошо знаком (работал с ней из PHP и C). К сожалению, моя первая попытка установки lua-gd в среду эмулятора не увенчалась успехом: периодически случались досадные падения.

Новый взгляд на старые игры

На помощь пришёл друг-тасер AnS (кстати, наш соотечественник). Он обнаружил, что крах происходит только с последними версиями Gens, в то время как одна из более старых версий работает надёжно. Поэтому в качестве workaround было принято решение просто заменить Gens.

Дело сдвинулось с мёртвой точки — был написан первый код на Lua, найдены карты уровней. К сожалению, не для всех уровней классических игр Sonic существуют нормальные карты, а средства создания карт есть только у экспертов-ромхакеров. Исключение составляет лишь игра Sonic 3 and Knuckles, для которой есть программа Sonic Extractor, позволяющая с лёгкостью создавать карты самостоятельно, а также определять, какие объекты будут на этих картах отображаться, а какие — нет. Также отдельную благодарность заслуживает опытный TAS-ер и ромхакер marzojr, подсказавший, каким образом можно «спрятать» информационный блок, содержащий время, число собранных колец и тому подобную информацию.

В качестве заключения — видео, созданное с использованием указанного способа, а также оригинал этого прохождения.

Оригинал

Atlas encode

Ссылки

Автор: WST

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js