This PR includes various bugfixes and contributions I have made to PSn00bSDK over the last few months, most notably the following ones:
Continuous integration
Full support for CI using GitHub Actions: both the toolchain and the SDK are built and packaged for Windows and Linux on each commit. Built packages can be downloaded from the artifacts page of each CI run. Toolchain builds are cached for 7 days.
When creating a tag, a matching release is automatically built and published to the GitHub releases page.
The changelog has been reformatted into markdown and is now parsed by a Python script (.github/scripts/generate_release_notes.py) to generate a description for each release.
Build system
The default toolchain target prefix is now mipsel-none-elf instead of mipsel-unknown-elf. This matches the toolchain used by other PS1 SDKs.
New examples
io/system573: minimal example showing how to read JAMMA inputs and control lights on a Konami System 573 PS1-based arcade board (tested on real hardware by @DinsFire64).
sound/spustream: simple SPU custom audio streaming implementation. Includes a script to convert 2 mono .VAG files into a stereo stream file.
Library fixes and improvements
CdGetSector() now takes the number of 32-bit words to read, rather than the number of bytes, for consistency with the official SDK (pointed out by @cuckydev).
CdSearchFile() accepts both forward slashes and backslashes as separators.
Support for the %@ format specifier (binary integer) in printf() and scanf() has been fixed.
The psxpad.h header has been refactored with separate controller and memory card request/response structs.
The dynamic linker API (dlfcn.h) has been revised. All functions that rely on BIOS file APIs (dlopen(), DL_LoadSymbolMapFromFile()) have been disabled due to bugs.
I have already merged the changes from the latest commit. The work-in-progress psxspi library is not included as it's still incomplete and needs more testing.
This PR includes various bugfixes and contributions I have made to PSn00bSDK over the last few months, most notably the following ones:
Continuous integration
.github/scripts/generate_release_notes.py
) to generate a description for each release.Build system
mipsel-none-elf
instead ofmipsel-unknown-elf
. This matches the toolchain used by other PS1 SDKs.New examples
io/system573
: minimal example showing how to read JAMMA inputs and control lights on a Konami System 573 PS1-based arcade board (tested on real hardware by @DinsFire64).sound/spustream
: simple SPU custom audio streaming implementation. Includes a script to convert 2 mono .VAG files into a stereo stream file.Library fixes and improvements
CdGetSector()
now takes the number of 32-bit words to read, rather than the number of bytes, for consistency with the official SDK (pointed out by @cuckydev).CdSearchFile()
accepts both forward slashes and backslashes as separators.%@
format specifier (binary integer) inprintf()
andscanf()
has been fixed.psxpad.h
header has been refactored with separate controller and memory card request/response structs.dlfcn.h
) has been revised. All functions that rely on BIOS file APIs (dlopen()
,DL_LoadSymbolMapFromFile()
) have been disabled due to bugs.I have already merged the changes from the latest commit. The work-in-progress
psxspi
library is not included as it's still incomplete and needs more testing.