Мой уголок, посвященный разработке под PlayStation aka PSX.

PSX — это культовая ретро-консоль, появившаяся во времена, когда далеко не каждый PC тянул игры сложнее Дума, и для многих ставшая окном в мир 3D-графики в реальном времени. Всеми фанатами PSX вспоминается с теплотой и ностальгией. Некоторые игры под нее настолько всем полюбились, что в них играют до сих пор — если не на реальной приставке, то на эмуляторах. Появляются новые переводы, хаки и даже homebrew-игры, разработке которых и посвящена эта страничка.

История homebrew (любительского, «домашнего» программирования) для PSX берет свое начало еще в 1997 году, когда вышел Net Yaroze, официальный девкит от Sony для любительской разработки. Его еще называют «черным PSX», поскольку в комплект входила специальная отладочная модель приставки черного цвета, которая подключалась к ПК через последовательный порт для загрузки программ. Net Yaroze стала очень популярной в Японии и породила вокруг себя большое сообщество — некоторые любительские проекты того времени были настолько качественными, что привлекли внимание профессиональных студий. Примером служит Мицуру Камияма, чья ролевая игра Terra Incognita помогла ему устроиться на работу в Square Enix. Однако у «Ярозы» был большой недостаток — полное отсутствие возможности записывать программы на CD. То есть, вся игра, включая машинный код, графику и звуки, должна была полностью умещаться в 2 мегабайта оперативной памяти консоли. При этом около 500 кб «съедал» собственный рантайм Yaroze, так что на игру оставалось и того меньше. Да и цена комплекта в $750 была способна отпугнуть кого угодно.

Со временем сообщество распалось, и сегодня активных Yaroze-программистов уже почти нет. Одно время существовал проект по созданию свободного SDK под PSX, основанного на GNU-тулчейне (MIPS-GCC), но к нему так и не были написаны полноценные библиотеки, и каких-то значимых проектов на этом SDK не появилось.

В какой-то момент в Сети появился легендарный PsyQ — официальный SDK, который в свое время использовался профессиональными студиями для создания коммерческих игр под PSX. Именно это событие дало homebrew-сообществу новый толчок, и сегодня PsyQ можно считать главным и самым доступным средством для любительской разработки.

Англоязычным центром сообщества PsyQ является сайт http://psxdev.net, который, к сожалению, недавно закрылся на профилактику (владелец собирает донаты на более мощное серверное железо, когда сайт вернется — пока не известно).

Что нужно для разработки?

  • Компьютер с установленным Windows (можно Linux + Wine). Желательно 32-битный, поскольку на 64-битных системах некоторые утилиты PsyQ не работают. Впрочем, им есть замены, так что разрядность системы сегодня особого значения не имеет, при желании можно все запускать и на 64 битах.
  • Собственно PsyQ SDK. Это, по сути, набор из MIPS-тулчейна (компилятора CCPSX) и стандартной библиотеки. Библиотека предоставляет высокоуровневый API для работы с графикой, звуком, CD и другими мультимедийными возможностями приставки.
  • Программа для создания образов дисков. Тут есть из чего выбрать, но я лично рекомендую mkpsxiso от Lameguy64. Также для запуска игр на реальной PlayStation нужна лицензионная информация для патчинга образов.
  • Утилиты для конвертирования изображений, звуков и моделей. Все это я вскоре тут выложу.
  • Графические и звуковые редакторы. Вполне сгодятся GIMP, Blender и Audacity.
  • Эмулятор PSX для тестирования игр. Подойдет любой, но если вам нужны отладочные инструменты, то нет ничего лучше no$psx.
  • Опционально — «живая» PSX и CD-болванки для финальных тестов.

Файлы

Тут пока WIP

Эмуляторы

  • PCSX ReARMed. Один из самых старых и проверенных временем эмуляторов. Форк PCSX Reloaded (который, в свою очередь, был форком PCSX-df, а тот форком PCSX — такая вот у этого проекта длинная родословная). Существует также в виде libretro-ядра, доступен в RetroArch. У меня почему-то ядро из репозитория RetroArch глючит с некоторыми играми, так что выкладываю версию, которую использую сам.
  • no$psx (или nocashpsx). Эмулятор PSX для разработчиков. Включает встроенный отладчик, профайлер, просмотровщик RAM и VRAM, дизассемблер и TTY-вывод. Не требует установки плагинов, содержит собственную версию BIOS (но можно установить и оригинальную). Очень крутая штука.
  • DuckStation. Быстрый и функциональный эмулятор с удобным интерфейсом на основе Qt. Поддерживает аппаратное ускорение с использованием различных графических API, постпроцессинг и много чего еще. К сожалению, при всех своих достоинствах, распространяется по несвободной лицензии CC BY-NC-ND.

Библиотеки

  • PSXLib. Моя свободная стандартная библиотека на замену встроенной в PsyQ. В данный момент поддерживает инициализацию GPU и управление OT, загрузку изображений TIM в видеопамять, отрисовку 2D-примитивов, вывод текста, считывание кнопок контроллера, TTY-вывод. Некоторые функции сделаны похожими на PsyQ, другие вдохновлены библиотекой Blade. В репозиторий включен пример проекта (отрисовка анимированного спрайта) со скриптом сборки. Для компиляции нужен установленный Psy-Q SDK 4.6. Для создания играбельного образа диска нужны утилиты cpe2psx и mkpsxiso от LameGuy64 (версии для Windows прилагаются).

Ссылки

  • Сайт Lameguy64. Разработки Lameguy64: PSn00bSDK, mkpsxiso, img2tim и др.
  • Сайт Hitman’а. Содержит много различных старых демок, исходников и библиотек.
  • Моя PlayStation Вики, которую я постепенно наполняю спеками, описаниями форматов и тулзов и прочей полезной информацией.