Gecko's PSX Development Corner

Добро пожаловать на мою страничку, посвященную PlayStation (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.


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


Файлы

PsyQ SDK 4.6 (6,5 Мб)

PsyQ SDK 4.6. Тулчейн для разработки под PSX. Включает компилятор CCPSX, стандартную библиотеку и базовый набор утилит. Это основной SDK, на который рассчитаны все утилиты и документация на этом сайте (если не указано иное). SDK сконфигурирован для установки в C:\psyq - если вам нужно установить его в другое место, отредактируйте файл PSX.BAT. Архив не включает документацию.

cpe2psx (42,4 кб)

Утилита для конвертации исполняемых файлов CPE в PSX.EXE, замена старому CPE2X из SDK, который не работает на 64-битных системах. Есть исходники.

mkpsxiso (40,6 кб)

Утилита для патчинга образов дисков лицензионной информацией, чтобы диск мог запуститься на реальном PSX.

lameguy64 mkpsxiso 1.10 (187,9 кб)

Продвинутая замена mkpsxiso от LameGuy64. Это генератор лицензированных дисковых образов под PSX, позволяющий полностью контролировать структуру диска через описание на XML. В частности, он позволяет вручную задавать физическую очередность файлов на диске (необходимо для оптимизации чтения), а также поддерживает дорожки CD-аудио, которые создаются из обычных WAV-файлов. Выдает файлы ISO или CUE+BIN. Очень полезная и удобная в использовании программа, незаменимый инструмент для сложных проектов. https://github.com/Lameguy64/mkpsxiso

img2tim-0.60 (1,3 Мб)

Утилита для конвертации изображений в формат TIM.

VAG Tools (28,8 кб)

Утилиты wav2vag и vag2wav для конвертации, соответственно, WAV в VAG и наоборот. Исходники включены.

TMD Tools.zip (50,5 кб)

Набор инструментов для создания RSD и TMD (файлов моделей PSX). Включает скрипт-экспортер RSD для Blender 2.69 и утилиту RSDLINK для компиляции RSD в TMD.

SMX Tool 0.18b (1 Мб)

Программа для просмотра моделей RSD и конвертации в формат SMX.

Mimefilt (18,4 кб)

Утилита MIMEFILT для создания VDF, файлов описания анимации.


Эмуляторы

PCSX ReARMed

Один из самых старых и проверенных временем эмуляторов. Форк PCSX Reloaded (который, в свою очередь, был форком PCSX-df, а тот форком PCSX - такая вот у этого проекта длинная родословная). Существует также в виде libretro-ядра, доступен в RetroArch. У меня почему-то ядро из репозитория RetroArch глючит с некоторыми играми, так что выкладываю версию, которую использую сам.

no$psx

no$psx (или nocashpsx) - эмулятор PSX для разработчиков. Включает встроенный отладчик, профайлер, просмотровщик RAM и VRAM, дизассемблер и TTY-вывод. Не требует установки плагинов, содержит собственную версию BIOS (но можно установить и оригинальную). Очень крутая штука.


Документация

PsyQ docs (8,6 Мб)

Полный набор официальной документации по разработке для PSX - описание аппаратной части, подробный справочник по всем функциям стандартной библиотеки PsyQ, по встроенной операционной системе консоли (которую еще называют BIOS) и форматам файлов. Маст хэв для каждого.

Playstation Emulation Guide (1,0 Мб)

Руководство по эмуляции центрального процессора и видеопроцессора PSX. Подробное описание всех инструкций, регистров, портов, команд GPU и т.д. Ваша настольная книга, если вы хотите досконально разобраться в консоли на самом низком уровне. Референсную реализацию эмулятора на Rust по этому руководству см. тут: https://gitlab.com/flio/rustation-ng/

LameGuy64 Tutorials

Цикл вводных уроков от LameGuy64. Охватывают основы PsyQ SDK, рисование примитивов, работу с текстурами и CLUT, контроллером и CD-ROM.


Библиотеки

PSXLib

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


Ссылки

Сайт Lameguy64

Разработки Lameguy64: PSn00bSDK, mkpsxiso, img2tim и др.

Сайт Hitman'а

Содержит много различных старых демок, исходников и библиотек.