Lameguy64 Banner
PSn00bSDK - Lameguy64's Website

The Open Source PS1 SDK Project that Doesn't Suck!

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 CD-ROM 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 good as 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 (most) No/Limited
DMA Ordering Tables Yes No
DMA VRAM Transfers Yes No
Geometry Transformation Engine Yes No
SPU Support Partial (currently) Yes (no DMA and sound capture, limited reverb)
CD-ROM Support Yes (using BIOS functions, for now) Yes (using BIOS functions)
Controller/Peripherals Support Yes (using BIOS functions) Crude direct I/O implementation w/ manual polling
Memory Card Support Maybe via BIOS functions, not tested yet Yes (using BIOS functions)
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

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 up 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 beware that it may be unstable especially when I'm in the midst of working on a new implementation of something later down the line. I recommend sticking with the Github repository unless you fully understand 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.

Pre-compiled Packages

I'm not yet certain if I should put together precompiled binary releases of PSn00bSDK as the libraries are updated very regularly in its current state. Perhaps when it reaches production ready status. It isn't all that difficult to compile the tools and libraries, as long as you have the right software.

I can provide pre-built copies of the GNU GCC toolchain that has been configured for mipsel, to be used with PSn00bSDK. This should help significantly with setting up PSn00bSDK yourself, as building the toolchain is the most tedious step in setting up PSn00bSDK from scratch.

You will need MSys2 for the GNU utilities, such as make.

You can find the packages in Pre-built GNU GCC Toolchain, there are also pre-built packages for Debian Linux.

I recommend GCC 7.4.0 as that is the version I'm currently using the SDK with the most.

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