PlayStation
Мой уголок, посвященный разработке под 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 Вики, которую я постепенно наполняю спеками, описаниями форматов и тулзов и прочей полезной информацией.