Содержание
PSn00bSDK
Свободный комплект разработки (SDK) под PlayStation, созданный Джоном Уилбертом Вилламором, известным также как Lameguy64. Один из самых мощных независимых SDK из когда-либо созданных, но, к сожалению, перестал развиваться примерно с 2024 года.
https://github.com/Lameguy64/PSn00bSDK
В состав SDK входят тулчейн C/C++ и набор библиотек, а также система сборки на базе CMake, утилита для создания образов CD-ROM (mkpsxiso) и инструменты для конвертации игровых ресурсов.
libpsn00b
Основой PSn00bSDK является библиотека libpsn00b, которая реализует большую часть функциональности PsyQ (за исключением библиотек высокого уровня), а также содержит ряд собственных расширений. Благодаря этому PSn00bSDK является отличным выбором для тех, у кого уже есть готовый код игры, зависящий от PsyQ.
libpsn00b поддерживает следующие возможности:
- Функциональность GPU, включая все типы примитивов (отрезки, полигоны, спрайты), а также передачу данных через DMA. Управление осуществляется посредством программной очереди команд, которую при необходимости можно дополнить собственными командами. Полностью поддерживаются видеостандарты NTSC и PAL;
- Работа с GTE - операции вращения, переноса, перспективной коррекции и расчета освещения. Взаимодействие с GTE осуществляется через ассемблерные макросы C;
- Система обработки прерываний на базе BIOS, позволяющая регистрировать пользовательские обработчики прерываний;
- Базовая поддержка ввода с геймпада через BIOS, а также опциональная ограниченная поддержка прямого опроса (polling) состояния контроллера;
- Полноценная поддержка последовательного ввода/вывода с буферизацией и драйвером консоли, позволяющим перенаправлять стандартный ввод и вывод BIOS на последовательный порт. Поддерживается аппаратное управление потоком данных (hardware flow control);
- Поддержка CD-ROM, включающая асинхронное чтение данных, воспроизведение аудиоформатов CD-DA и XA-ADPCM, а также встроенный парсер файловой системы ISO 9660 без ограничений на количество файлов. Дополнительно реализована поддержка многосессионных дисков и возможность обхода региональных ограничений на поддерживаемых моделях консоли;
- Полноценная поддержка MDEC для аппаратного ускорения декомпрессии изображений и воспроизведения видео;
- Ограниченная поддержка аркадной платформы Konami System 573, основанной на аппаратном обеспечении PlayStation;
- Экспериментальная поддержка динамической линковки в рантайме, включая интроспекцию функций и переменных посредством загрузки файла карты (map file), созданного на этапе сборки.
Стоит отметить, что, хотя API PSn00bSDK в определенной мере совместим с PsyQ, этот проект не задумывался как его прямая замена; это обусловлено как огромным объемом работ, необходимых для полной переработки SDK, так и тем, что многие компоненты PsyQ неэффективны, громоздки, либо не представляют особой ценности.
Внимание: некоторые компоненты libpsn00b (в частности, libpsxgte) получены путем дизассемблирования библиотек Sony, что делает статус PSn00bSDK юридически неоднозначным. Автор не скрывает этого факта. Кроме того, многие указывают на факт использования документации Sony, что также может быть трактовано как нарушение clean-room дизайна.
Хост-платформы
PSn00bSDK доступен в собранном виде для Windows и Linux. CMake в поставку не входит.
