Skip to content

Releases: Lameguy64/PSn00bSDK

v0.24

03 Jul 06:20
06e65be
Compare
Choose a tag to compare

New in version 0.24 (contributed by spicyjpeg):

  • libc: Fixed various mistakes in the GTE leading zero count intrinsics and the setjmp.h header.

  • psxgpu: PutDispEnv() no longer requires manual adjustments in order to center the screen in PAL mode. FntSort() now supports printing multiple lines.

  • smd: The .SMD model parser code from n00bdemo has been split off into its own library, usable from any PSn00bSDK project.

  • examples: beginner/hello, beginner/cppdemo and system/timer have been rewritten completely. cdrom/cdxa now checks for the end of the file properly rather than relying on it to be encoded in a specific way. sound/cdstream has been refactored to use a ring buffer in main RAM and includes a reusable SPU audio streaming library.

  • Added some missing register macros (SPU_CH_ADSR_VOL) to hwregs_c.h and fixed some previously wrong kernel-related constants.

  • Removed the PSN00BSDK_LIBGCC CMake variable and related code, as the GCC toolchain can automatically find libgcc on its own.


These notes have been generated automatically. See the changelog or commit history for more details.

v0.23

12 May 16:15
513a6e9
Compare
Choose a tag to compare

New in version 0.23 (contributed by spicyjpeg):

  • libc: Fixed bugs in some string manipulation and number parsing functions. Added memccpy(). Removed the SYSTEM.CNF argument parser as it would interfere with manual argc/argv passing in some edge cases.

  • psxgpu: Added IsIdleGPU() and fixed a bug in SetVideoMode(). Added new "tagless" primitive structures with the _T suffix (e.g. POLY_FT4_T, SPRT_T, ...) and related macros (setPolyFT4_T(), setSPRT_T(), ...) that can be used to group multiple primitives into a single display list packet for better performance. Fixed some macros not working properly with negative values. Renamed DR_MASK and setDrawMask() to DR_STP and setDrawStp() respectively for consistency with the official SDK.

  • psxcd: Added CdUnlock(). Improved reliability of CdGetRegion() on early Japanese console models.

  • psxetc: Added SetDMAPriority() and GetDMAPriority().

  • psxapi: Added PCDRV (host file I/O) API, declared in the psxsn.h header.

  • psxpress: Fixed bugs in the MDEC API. Added support for bitstream version 3 to the GTE-accelerated decoder. Replaced DecDCTvlcCopyTable() with DecDCTvlcCopyTableV2() and DecDCTvlcCopyTableV3() for better control over how much of the scratchpad is used for lookup tables.

  • examples: mdec/strvideo is now (finally) functional on real hardware and can properly detect the end of a video file even if immediately followed by another video on the disc. Added previously missing CD image dependencies to the CMake scripts of the examples that make use of CD images.

  • tools: elf2x no longer adds region strings to converted executables, fixing issues with DuckStation's region autodetection. Updated mkpsxiso to 2.03 in order to fix a bug with its thread pool implementation on Linux.

  • Updated binutils and recompiled the GCC toolchain with the --disable-hosted-libstdcxx option, allowing a subset of the C++ STL to be used in PSn00bSDK projects.

  • libc: Added some missing C++ STL headers (cassert, cctype, cstdint, cstdio, cstdlib, cstring). Added setjmp() and longjmp() as well as the jmp_buf type.

  • psxgpu: Added SetDrawOpType() and the GPU_DrawOpType enum for more flexibility when using custom drawing queue callbacks with EnqueueDrawOp(). Added GPU IRQ variants of all display list sending APIs (DrawOTagIRQ(), DrawOTagEnvIRQ(), DrawBufferIRQ() and so on).

  • examples: Cleaned up beginner/cppdemo and updated it to use the new STL headers.

  • docs: Added drawing_queue.md, a reference on the internals of the GPU library's drawing queue implementation.


These notes have been generated automatically. See the changelog or commit history for more details.

v0.22

18 Dec 16:09
728b945
Compare
Choose a tag to compare

New in version 0.22 (contributed by spicyjpeg):

  • psxspu: Fixed bugs in SpuInit() and in SpuWrite() when using manual transfer mode (SPU_TRANSFER_BY_IO). Added SpuWritePartly().

  • psxetc: Added IRQ_Channel and DMA_Channel enums.

  • examples: Refactored and bugfixed all sound examples. Renamed the old spustream example to cdstream and added a new spustream example demonstrating SPU audio streaming from main RAM. Both streaming examples now make use of the interleaved .VAG file format.

  • libc: Fixed assert() macro and removed redundant type definitions. Added GTE-accelerated leading zero count intrinsics (__builtin_clz()).

  • psxcd: Rewritten some parts of the library in pure C. Added CdCommand() and CdCommandF() for advanced usage of the CD-ROM, as well as CdReadRetry(), CdReadBreak() and CdGetRegion().

  • psxgpu: PutDrawEnv() and DrawOTagEnv() now properly apply the texture page and window attributes in the DRAWENV structure. RECTs passed to LoadImage() and StoreImage() are now copied into a private buffer. Added setColor*() macros.

  • psxspu: Fixed setting of bus wait states when using SpuRead().

  • psxetc: Fixed several critical bugs in the dynamic linker. GOT relocation and linking of variables and objects are now handled properly.

  • psxapi: Added FastEnterCriticalSection() and FastExitCriticalSection() inline macros for quick enabling and disabling of interrupts.

  • Renamed some registers in hwregs_c.h, hwregs_a.inc and updated examples accordingly.

  • All projects are now compiled with -Og in debug mode and -O2 in release mode by default. CD images created using psn00bsdk_add_cd_image() are now only rebuilt if necessary (i.e. if any of their dependencies change).


These notes have been generated automatically. See the changelog or commit history for more details.

v0.19

25 Mar 03:47
Compare
Choose a tag to compare

New in version 0.19 (contributed by lameguy64, spicyjpeg):

  • examples: Replaced sample image of mdec/mdecimage with different artwork.
    Original image: http://lameguy64.net/?page=drawings&post_id=9

  • examples: Updated readme file in examples directory to reference the new
    mdecimage example program.

  • psxsio: Added dummy hooks to unsupported device functions for tty device.

  • docs: Minor corrections on dev_notes.md.

  • docs: Updated documentation for CdGetSector() and CdReadCallback()
    functions in libn00bref.odt.

2022-02-27:

  • libpsn00b: Added hwregs_c.h header and renamed some registers in
    hwregs_a.h. Added assert() as a proper macro.

  • libpsn00b: Added new MDEC library; psxpress.

  • psxspu: Fixed critical bug in SpuSetReverb().

  • psxetc: Fixed minor typos and bugs in dlfcn.h. Replaced DL_CALL() macro
    with DL_PRE_CALL().

  • psxapi: Rewritten all BIOS API stubs using a Python script and a JSON list,
    both of which are included in the library's source directory.

  • examples: Updated io/system573 with bugfixed I/O board code and separated
    the APIs into a separate source file. Fixed timing bugs in io/pads.

  • mkpsxiso: Switched back to the master repository. The dumpsxiso command is
    now included in PSn00bSDK installations.

  • Added psn00bsdk_target_incbin() and psn00bsdk_target_incbin_a() CMake
    functions for quickly embedding binary files into executables and libraries.
    The examples have been modified to use this function where applicable.

  • Added LIBPSN00B_GENERATOR CMake option to allow the host-side tools to be
    compiled with MSVC or Xcode while still using Ninja or make to build the
    libraries and examples. This is required as neither MSBuild nor Xcode support
    custom toolchains.

  • Updated LICENSE.md with additional license information as well as a full
    copy of the GPLv2 and GPLv3 (under which mkpsxiso and GCC are licensed
    respectively).


These notes have been generated automatically.
See the changelog or commit history for more details.