How to get started with PSX game development

Confidential documents, images and information by Sony and miscellaneous hackers for the PlayStation 1
Post Reply
Xavi92
Verified
C Programming Expert
C Programming Expert
Posts: 161
Joined: Oct 06, 2012
PlayStation Model: SCPH-5502
Contact:

How to get started with PSX game development

Post by Xavi92 » October 15th, 2022, 2:03 pm

I would like to add some technical insights, in the context of PS1 development:

Choice of programming languages

- The original PlayStation CPU is based on MIPS I, so a compatible toolchain is required. gcc supports it with the `mipsel-unknown-elf` target. There are some instructions on how to set up the toolchain on these forums. This means C support, and limited support for C++ (much likely, no C++ STL) is possible with gcc.

- Modern versions of gcc have good support for C11 and even limited support for the upcoming standard, C2x. However, it is a sensible idea to aim for older revisions of the standard, in order to allow switching between compilers (if portability is a requirement). My personal choice is C99.

- Languages other than C or C++ such as Rust and Zig however depend on LLVM for their compilers, which currently has limited support for MIPS I. Nonetheless, as of 2022, some effort is being made to push MIPS I support into upstream so these languages are supported.

Choice of PS1 SDK

- Please avoid proprietary solutions such as Psy-Q, since they rely on obsolete software and, more importantly, it constitutes copyright infringement to use them. Instead, use free software alternatives that run well on modern operating systems. Examples:

- PSn00bSDK
- PSXSDK

Platform limitations

- Since the PS1 lacks a FPU, avoid the use of floating-point data types, such as `double` or `float`. Instead, prefer fixed-point arithmetic.
- If possible, avoid the use of heap (e.g.: via malloc(3)). While the PS1 has enough RAM to deal with dynamically allocated memory, providing a feature-rich heap implementation might already require a good chunk of its memory. Instead, design your games to use either automatic (i.e., stack) or static storage.
- The PS1 VRAM is limited to 1 MiB, which is equivalent to a 1024x512 pix, 16bpp bitmap. Image data must be manually placed within these limits, so organize images in order to maximize space efficiency.

Choice of graphical tools
gutkowski wrote:However, more advanced games may require very specific and powerful software such as 3D modeling programs and image editors. This advanced software can cost a lot of money, which means you need to pay careful attention to your budget.
Nowadays, there is a good amount of free (as in freedom) software that should cover the needs for a simple PS1 video game. Examples:

- Blender
- Krita
- GIMP
- Godot Engine (if writing a video game for modern platforms)

In other words, there is no need to pay for proprietary software, when excellent quality free software already exists, but please consider donating to these projects if helpful!

Choice of text code editors/IDEs

This is a very personal choice indeed, but again there is a good amount of free software so that users can choose whichever fits their needs best. Some examples:

- vim
- emacs
- KDevelop
- VSCodium
- Code::Blocks (feels a bit old and clunky IMHO, but still good enough)

Post Reply

Who is online

Users browsing this forum: No registered users and 3 guests