PSX

= PSX aka Playstation 1 / PS1 =

Sony Playstation is the first good 32-bit game console. It conquered it's enemies and ruled the world, during it's reign (the '90s). PS1 also has a rather straight-forward design, which is a definite plus for developing programs for it. It has a 32-bit MIPS R3000A CPU, that has integrated specialized math co-processor GTE and a graphics processing unit GPU that is capable of drawing sprites and textured polygons. PS1 has 2MB main RAM, 1MB video RAM and 512kB sound RAM, plus it can access data on the CD-ROM.

This page details how to develop programs (well, mostly games) for the PS1.

Hardware
PS1 hardware details were the long-standing obstacle to developing indie software for the console. Originally there was very little documentation to go around. Software development was mainly done on dedicated development hardware using software that had to be licensed from Sony (Psy-Q, et all) or later even with a special model of PS1 that could have code uploaded with a serial cable (Net Yaroze). After PCs evolved to the stage that they had the power to emulate PS1, the hardware was eventually reverse-engineered for the sake of emulating the games.

Here are some links to documents people have written:


 * PsNee modchip for PS1.
 * PS1 experimentation data.
 * No$psx PSXSPX documentation.
 * Documentation by Hitmen.


 * PSXDEV forums.
 * PSIO development cartridge.


 * Playstation BIOS dumps.

Models
There is a more exhaustive list on Wikipedia, but here are the models that you can expect to find in Finland market area:


 * SPCH-1002, BIOS 2.0-2.2, has overheating issues, video connectors in the back.
 * SPCH-5502/5552, BIOS 3.0, value-series model, video connectors removed.
 * SPCH-7002/7502, BIOS 4.1, upgraded mobo layout.
 * SPCH-9002, BIOS 4.1, parallel port removed.
 * SPCH-102 (aka PSone), BIOS 4.4-4.5, serial port removed, external power supply.

The best models for development are SPCH-7002/7502; they have incremental upgrades and still retain both parallel and serial ports. Parallel port is required to use modules like CDIO, Gameshark and ActionReplay. Serial port is required for PSXSERIAL to operate. If one has the suitable expertise, SPCH-102 can be modified to have a serial port, but it probably requires mauling the case to get the connector out.

Examples

 * Roll Boss Rush.
 * It Might Be NES, NES emulator for PS1.
 * ZBlast, a shmup.

Tools
There are proprietary tools (Psy-Q and NetYaroze) but I won't go into them, as they are of questionable legality and rely on running on operating systems from the past millennium.

There is one open source and maintained toolchain called PSXSDK. It uses GCC for the compilation, as the MIPS CPU architecture has been supported by it for ages.

Compiled programs can be uploaded to a PS1 console with PSXSERIAL. It's a CD image and an accompanying PC-software that will upload the program using serial port.

PCSX-Reloaded emulator comes with Debian. You can install it with 'sudo apt-get install pcsxr'. But on Debian/Jessie it has an issue that causes assertion: pcsx: ../libpcsxcore/ix86_64/ix86-64.c:158: MEMADDR_OP: Assertion `!isreg || reg != 0' failed. This can be worked around by editing '~/.pcsx/pcsx.cfg' and changing 'Cpu = 0' to 'Cpu = 1'.