Lameguy64 Banner
PSn00bSDK - Lameguy64's Website

The Open Source PS1 SDK Project that Doesn't Suck! But still kinda sucks...

This is a PlayStation SDK project of my own creation capable of achieving high performance graphics which other SDK projects had been most lacking at for years. With extensive GPU and GTE and someday full SPU and MDEC support, this SDK project may very well replace the official SDK for homebrew development, and would pave the way for 100% legal homebrews to be developed that would make use of the hardware just as well if not better than the official SDK.

What can PSn00bSDK do so far?

(All screenshots are captured from real hardware)

PSn00bSDK vs. Other Open Source SDKs

Feature PSn00bSDK Other SDKs
Polygon Primitives Yes No/Limited
DMA Ordering Table Upload Yes No
DMA VRAM Transfers Yes No
Geometry Transformation Engine Yes No
SPU Support Partial (currently) Limited and no DMA
MDEC Support No No
Full CD-ROM Support Yes (with multi-session support) BIOS only
Multi-session CD Support Yes No
Controller/Peripherals Support Yes w/ auto polling (via BIOS) Crude direct I/O implementation w/ manual polling
Memory Card Support BIOS only, not tested yet BIOS only
Interrupt Service Routine w/ Callbacks Yes No
Serial I/O Yes No
C++ Yes (no Standard C++) No

This table is subject to change as more features get developed/implemented in the future.

What's made with PSn00bSDK so far

Name Date Released Author Description
n00bdemo March 26, 2019 Lameguy64 A rather small demo featuring real-time dynamic point lighting, an over 1000 polygon bunny girl model with real-time per-vertex lighting, stencil mask demo, a cel-shaded Hat Kid (from A Hat in Time) model with a 'full 3D skybox' and classic plasma all running at high resolution at 60FPS. This is the very first first proper homebrew made using PSn00bSDK meant to showcase the possibility of an SDK project capable of pushing high performance graphics that other SDK projects are severely lacking at. All 3D scenes make very extensive use of the GTE.

This demo is both NTSC and PAL compatible. Video standard selection is determined by the video standard of the last video mode (ie. if the BIOS screen or Xplorer/Caetla cartrige sets the video mode to PAL this demo will initialize the display in PAL mode). Source code is included with PSn00bSDK as an example program.

Youtube Video
LITELOAD July 19, 2019 Lameguy64 A simple and lightweight but very reliable serial loader for the PS1 with support for debug monitor patches. As of version 1.2, it has been ported to PSn00bSDK which dramatically reduced the size of the loader by over 50%.

This also makes it perhaps the first PS1 homebrew to be ported from the official PsyQ/Programmers Tool SDK to an open source SDK with zero functionality lost from the porting process.

Get PSn00bSDK

Pre-compiled Packages

As of Feburary 18, 2021 I was able to cobble together a pre-compiled, ready to use package of PSn00bSDK for 64-bit Windows. It depends on MSys2 however mostly to provide the necessary run-time libraries and build utilities like make, as trying to bundle those into the package would be a whole load of hassle and generally harder to maintain. Fortunately setting it up is just a matter of extracting the PSn00bSDK package and installing the required prerequisites in the MSys2 shell stated in the included readme file. The package also includes additional tools (usually ones made by me) to get you started in PlayStation homebrew development pretty quickly.

Get the first ever PSn00bSDK binary release for Win64: psn00bsdk-msys64-r0-20210217.7z

If you still prefer to set it up the old fashioned way and build the libraries from source yourself, you can still find the old pre-compiled GCC toolchain right here, there are also pre-built packages for Debian Linux and a build that should work on older Windows versions as old as NT 4.0 if you want to be that old school.

Source Repositories

Github repo This is the recommended repository to pull source code from as its usually the most stable. This is also the recommended repository for creating forks if you wish to contribute to this project.

More info about PSn00bSDK can also be found here as well.
Self-hosted SVN This is the self-hosted repository of PSn00bSDK that I usually use to sync the project to my other computers. There's a possibility that the code in this repo would be more up to date than the Github repo, but be aware that it may be unstable especially when I'm in the midst of implementing something new later down the line (though work in progress libraries are stored in the indev directory). I recommend sticking with the Github repository unless you want to put up the nature of this codebase. There's usually prototype code included when new functionality is in the process of being implemented.

Remember to login to the SVN as annoyingmous just like the FTP. It is also not advisable to work off of this codebase as you won't be able to commit changes upstream easily and that I don't share credentials nor create accounts for nobodies on my self-hosted SVN.

License

The PSn00bSDK project goes with the Mozilla Public License as it grants a bit more control over GPL and encourages modifications made to the project to be committed upstream to the main branch (which would be good enough as a donation to the project to me, I don't take monetary dontations afterall). It shouldn't be a deal breaker however as you can still use PSn00bSDK freely and projects made with the SDK can use a different license, only assets that are going to be part of PSn00bSDK must fall under MPL.

This is just my basic understanding of how the MPL license works however. You may want to read the actual license yourself to get the exact details.

Psn00bsdk - Lameguy64's Website