Си, makefile — то что надо. Для работы с UART нашёл замечательный проект — https://github.com/ste2425/PSP-Serial-Example
Чтение UART происходит на уровне ядра, чистая PSP ожидает исключительно команды пульта, никакой альтернативной логики не подразумевалось. А этот проект реализует работу с UART на уровне ядра и позволяет взаимодействовать с UART в обычных играх/приложениях!
Рекомендую ознакомиться с проектом, ради которого ste2425 делал эту либу — он разработал плату с ESP32 для подключения к PSP популярных геймпадов! Геймпад подключается к ESP32 по BT, и ESP32 передаёт данные о нажатии кнопок на PSP по UART
В синте для стабильной работы чтение MIDI и генерация аудио разбиты на два потока. Интерфейс отрисован при помощи pspDebugScreen
Запустить приложение на эмуляторе, например, PPSSPP, не выйдет, так как эмуляторы не поддерживают кастомные kernel‑модуль
// CONFIG
#define SAMPLE_RATE 44100
#define BUF_SAMPLES 512
#define MAX_VOICES 4
#define VOLUME PSP_AUDIO_VOLUME_MAX
#define TWO_PI 6.28318530718f
#define GAIN_SINE 2.1f
#define GAIN_TRIANGLE 2.4f
#define GAIN_SAW 1.2f
#define GAIN_SQUARE 1.0f
В начале main.c есть конфиг, через него можно настроить громкости каждой отдельной формы волны, так как квадрат громче треугольника и синуса
Для установки синтезатора на PSP:
Скачайте проект https://github.com/AlexKaut/PSP_MidiSynth
Скопируйте папку /PSP_MidiSynth и вставьте её на PSP по пути PSP/GAME/