Это старая версия документа!
Содержание
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, а также встроенный парсер файловой системы ISO9660 без ограничений на количество файлов. Дополнительно реализована поддержка многосессионных дисков и возможность обхода региональных ограничений на поддерживаемых моделях консоли;
- Полноценная поддержка MDEC для аппаратного ускорения декомпрессии изображений (с потерями) и воспроизведения видео;
- Ограниченная поддержка аркадной платформы Konami System 573;
- Экспериментальная поддержка динамической линковки в рантайме, включая интроспекцию функций и переменных посредством загрузки файла карты (map file), созданного на этапе сборки.
Стоит отметить, что, хотя API PSn00bSDK в определенной мере совместим с PsyQ, этот проект не задумывался как его прямая замена; это обусловлено как огромным объемом работ, необходимых для полной переработки SDK, так и тем, что многие компоненты PsyQ неэффективны, громоздки, либо не представляют особой ценности.
Внимание: некоторые компоненты libpsn00b (в частности, libpsxgte) получены путем дизассемблирования библиотек Sony, что делает статус PSn00bSDK юридически неоднозначным. Автор не скрывает этого факта.
Хост-платформы
PSn00bSDK доступен в собранном виде для Windows и Linux. CMake в поставку не входит.
