Half-Life перенесли на PlayStation 1 при помощи открытого стека PSoXide

Разработчик Эмануэле Бонура, также известный под именами Manny и izzy88izzy, показал работающий перенос Half-Life на оригинальную PlayStation. Проект HL-PSX запускается непосредственно на консоли, а не внутри эмулятора. Рендерер и игровая среда исполнения написаны на Rust поверх открытого набора средств разработки PSoXide.
В опубликованной видеозаписи разработчик прошёл все семь карт обучающего раздела Hazard Course на консоли SCPH-9002. Средняя частота кадров составляет около 17 кадров в секунду. Большую часть времени игра выдаёт примерно 20 кадров, но в крупных помещениях производительность снижается до 10–16 кадров. Работают сохранения, загрузка, оружие, противники, интерфейс и сценарные последовательности, хотя проблемы остаются в обработке звука, столкновений и некоторых элементов графики.
По словам автора, в проект уже импортированы все 96 карт из 19 глав Half-Life. Это не означает, что кампанию можно пройти без ошибок: большая часть уровней ещё нуждается в проверке и доработке.
Для размещения игры в 2 Мбайт основной памяти PlayStation используется отдельный конвертер. Он преобразует BSP-карты в формат с целочисленными координатами, удаляет неиспользуемые текстуры и недостижимые данные столкновений, сокращает палитры до 16 цветов и упаковывает игровые параметры в структуры фиксированного размера. Полученные блоки сжимаются и загружаются с компакт-диска по мере необходимости.
Модели также переводятся в специальный формат. Вместо хранения полного набора вершин для каждого кадра анимации используются базовая геометрия и заранее рассчитанные преобразования костей. В память загружаются только персонажи, необходимые для текущей карты. Звук преобразуется в поддерживаемый PlayStation формат ADPCM и разделяется на постоянный и зависящий от уровня наборы.
Игра работает в разрешении 320×240 с 15-разрядным цветом и двойной буферизацией. Два кадровых буфера занимают около 300 Кбайт из 1 Мбайт видеопамяти консоли. Помимо ограниченного объёма памяти, основными препятствиями остаются производительность 33-мегагерцевого процессора, обработка моделей и высокая стоимость повторной отрисовки геометрии.
HL-PSX создаётся на основе PSoXide — открытого стека разработки для PlayStation, включающего эмулятор и отладчик, SDK для Rust без стандартной библиотеки, игровую среду исполнения, редактор ресурсов и средства формирования образов дисков.
PSoXide распространяется под лицензией GPL-2.0-or-later. Выбор лицензии связан в том числе с использованием кода PCSX-Redux, также распространяемого под GPL. В репозитории проекта отдельно описывается происхождение заимствованных компонентов. Автор также прямо указывает, что значительная часть реализации создавалась при помощи средств генерации кода, при этом архитектура, проверка на настоящем оборудовании и принятие технических решений выполнялись человеком.
Сам HL-PSX пока не является открытым проектом: его репозиторий остаётся закрытым, а отдельная лицензия ещё не опубликована. Разработчик обратился к Valve за письменным разрешением на некоммерческое распространение исходного кода по схеме bring your own assets. Он также сообщил, что при отсутствии ответа примерно в течение месяца намерен расценить это как отсутствие возражений и открыть репозиторий.
Готового образа диска или собранной игры публиковать не планируется. Конвертер должен считывать ресурсы из принадлежащей пользователю версии Half-Life в Steam или с оригинального диска и локально формировать образ для PlayStation. Код и ресурсы Valve в состав проекта включаться не будут.
При реализации поведения игры автор использовал в качестве справочного материала опубликованный Valve Half-Life SDK. Однако этот SDK и оригинальные ресурсы Half-Life не являются свободным программным обеспечением. Поэтому даже после публикации кода HL-PSX проект будет сочетать свободный стек PSoXide с проприетарными данными, которые пользователь должен получить отдельно.
Окончательная лицензия HL-PSX, дата публикации репозитория и позиция Valve пока неизвестны.
>>> Источник
