As usual this is a fairly large update, combining several months' worth of work (although I haven't really worked on the SDK over the last month). Here is a quick summary of what changed:
CI
GCC and binutils have been updated to version 12.2.0 and 2.39 respectively.
Ninja is now bundled by default with prebuilt releases to simplify installation. The only external dependency required now is CMake.
More detailed documentation on how to use the prebuilt releases has been added to both the README and doc/installation.md.
Libraries and tools
psxgpu, psxspu and psxetc have been rewritten from the ground up in C, fixing several bugs and slightly improving performance along the way. Among other things, non-DMA SPU transfers are now supported and StopCallback() and RestartCallback() now behave exactly like their official SDK counterparts.
The default memory allocator has also been replaced with a more efficient implementation from the experimental PSYQo SDK.
Two different Huffman decoder implementations have been added to psxpress, allowing for compressed image decoding and FMV playback with the help of additional CD streaming code (not yet written).
Header files have been cleaned up; in particular inline_c.h got expanded with additional macros from Nugget's inline_n.h and leftover PSXSDK headers have been made fully compatible with C++.
Executables that use the full 8 MB of RAM on development/arcade systems can now be created, and _start() can be overridden with a custom function to manipulate the stack pointer or perform other kinds of preliminary initialization.
Examples
sound/spustream is now built by default and comes with an example audio file.
Simple face texturing was added to graphics/gte. Other examples that used textures have been cleaned up and modified to use psn00bsdk_target_incbin() to efficiently embed texture files into the binary.
As usual this is a fairly large update, combining several months' worth of work (although I haven't really worked on the SDK over the last month). Here is a quick summary of what changed:
CI
doc/installation.md
.Libraries and tools
psxgpu
,psxspu
andpsxetc
have been rewritten from the ground up in C, fixing several bugs and slightly improving performance along the way. Among other things, non-DMA SPU transfers are now supported andStopCallback()
andRestartCallback()
now behave exactly like their official SDK counterparts.psxpress
, allowing for compressed image decoding and FMV playback with the help of additional CD streaming code (not yet written).inline_c.h
got expanded with additional macros from Nugget'sinline_n.h
and leftover PSXSDK headers have been made fully compatible with C++._start()
can be overridden with a custom function to manipulate the stack pointer or perform other kinds of preliminary initialization.Examples
sound/spustream
is now built by default and comes with an example audio file.graphics/gte
. Other examples that used textures have been cleaned up and modified to usepsn00bsdk_target_incbin()
to efficiently embed texture files into the binary.