impiaaa
@impiaaa

This is all my personal opinion! If you want something more direct, go here. For most of these you'll already want to be familiar with low-level programming, usually in C. If you're new to C, you could try The Descent to C, or if you're new to programming, you can try Harvard CS50 (I haven't checked these personally, just seen them recommended).

Also posted on Tumblr.

The Big Ones

PSYQ/"Nugget"

The OG. This is what Psygnosis originally wrote for Sony, and was used in all officially licensed games. If you really want to rough it oldschool, you can use the original compiler toolchain, but you'd be better off using a modern compiler with converted libraries. "Nugget" is what the community calls this setup, and there are instructions for setting it up here. Either way you can refer to the official documentation for help (start with libover47.pdf, and use libref47.pdf for reference).

PSn00bSDK

PSYQ rewritten. It follows mostly the same API, but has been taken apart to have the source available. Much has been rewritten to be more efficient or more convenient. It's not as "complete" as the original, but it has some extra features.

Something old, Something new, Something borrow-checked, And some candy for you too

Everything else here is in various states of infancy or disrepair. Only recommended if you want to get your hands dirty and/or help out with their development.

Just go bare-metal

It's not actually so hard! You don't need to know MIPS assembly; most communication with the hardware is done with memory-mapped I/O, which you can do in C or any low-level language. Theoretically all you should need is the hardware docs. You'll need to be familiar with 3D math to do 3D graphics, but rasterization, texture mapping, and sound sampling can all be done in hardware. The included "BIOS" ROM also includes some parts of a libc, and some functions for interacting with hardware, but it can be buggy. If you want a little more, read on. (Or [self-promo time], use a fully featured libc configured to run on PS1.)

CandyK-PSX

Fully FLOSS, made only by referencing the hardware docs and testing on console. Sony probably isn't going to start suing homebrew developers anyway, but if you really want to be 100% in the clear, this is your best option. It was made with only one game in mind (fromage), and is very minimal and low-level. So I'd really only recommend it if you wanted to go bare-metal but can't be bothered to nail down CD-ROM or controller/memcard timing.

psx-sdk-rs

It's a PS1 SDK in Rust! It's still fairly minimal, but promising.

PSYQo

Similarly to the previous one, this new experimental SDK is built from the ground up for modern C++ (templates, closures, coroutines, etc.).

CKSDK

Something in-between PSn00bSDK and PSYQo. Inspired by PSYQ, written in C++, experimental. Built for a single game, but should be generally usable anyway.

PSXSDK

The oldest homebrew SDK that's still around (last officially updated in 2019, but there are some forks). I think the code is a bit messy, but it's functional. Also inspired by PSYQ.

Next Steps

This getting-started guide continues with recommendations for setting up development in emulator, or on hardware (no dev kit needed, a retail console is ok! just as long as it has a serial port. modchip and parallel port+cheat cart preferred, though). ps1-links has a whole bunch of links to community resources. Finally, join the PSX.Dev Discord to ask questions and share your work!


You must log in to comment.