The PlayStation One was not only Sony’s first commercial video games console it was also the most popular console of its generation.
The PS1 was competing against both the Nintendo 64 and Sega Saturn during its lifetime and in some respects was the underdog in terms of processing power and graphics. However don’t be disillusioned the PS1 was still a very powerful machine for its time and when programmed correctly games could look stunning, sometimes even better than the Nintendo 64!
What would the Sony PlayStation be without its excellent line-up of games? It was the games that attracted many people away from the Nintendo 64 and Sega Saturn and on to their very first Sony console.
An excellent way to start reverse engineering is to find games where the developers accidentally left the Debug symbols in the retail release of the game. While this is not very common it has happened for a few games released for the PlayStation One and gives you access to all the original function and variables names that were used in the retail source code.
Crash Bandicoot was one of the first 3d platformers that managed to deliver quality gameplay while looking impressive for its time.
It was created by Andy Gavin and Jason Rubin for release on the original PlayStation console, and both developers have been kind enough to share ample amount of information on how the game was implemented.
GameForest presents a comprehensive visual timeline of the PlayStation platform’s library, showcasing the graphical and gameplay evolution from 1995 to 2018. The compilation chronicles major releases across the console generations, starting with early PS1 titles like Jumping Flash! and Arc the Lad, moving through the PS2 and PS3 eras with defining games such as Grand Theft Auto and Uncharted, and concluding with modern PS4 blockbusters like Horizon Zero Dawn and God of War.
The most valuable reverse engineering projects tend to be the platform exclusives that have never been re-released as these are the games that can benefit the most from enhancements on modern hardware.
Wikipedia maintains a list of PlayStation 1 exclusives - PlayStation (console)-only games - Wikipedia
Some classic PS1 games have been remastered or remade for more modern consoles, if you are looking to reverse engineer one of these games it may help to look at the modern version to find additional information that may be relevant.
| Name | Platform | Notes |
|---|---|---|
| Ape Escape | PSP | Source Code was ported to the PSP as Ape Escape: On the Loose |
| Crash Bandicoot 1-3 | PS4, Switch, PC, XboxOne | Remade in Alchemy engine but tried to be as faithful as possible to the originals |
| Crash Team Racing | PS4, Switch, XboxOne | Remade in Alchemy Engine with additional content from Crash Nitro Kart and Crash Tag Team Racing |
| Castlevania SOTN | Xbox360, PS4, iOS, Android | Re-Released in Castlevania Requiem compilation |
| Final Fantasy 7-9 | PS4, Switch | |
| Legend of Mana | PS4, Switch, iOS, Android | Original engine but with higher resolution assets? (confirmation required) |
| MediEvil | PS4 | Remade in the Unreal Engine |
| Mega Man X 4 | PS4, Switch, XboxOne | Source Code Port of X4 Released in Mega Man X Legacy Collection |
| Metal Gear Solid | Gamecube | Remade for Gamecube as Metal Gear Solid: The Twin Snakes |
| PaRappa The Rapper | PSP, PS4 | The PS4 version is actually just a the PSP version emulated with higher resolution assets |
| Resident Evil 1-3 | PS3, PS4, XboxOne | Does this use original engine with higher resolution assets? |
| SaGa Frontier | PS4, Switch, iOS, Android, Windows | |
| Spyro 1-3 | PS4, Switch | Remade in Unreal Engine 4 but aims to be as faithful as possible to the originals |
| Tony Hawk’s Pro Skater 1+2 | PS4/5, Switch, XboxOne | Remade in Unreal Engine 4 |
Wipeout Omega Collection is one game that did not make the list as its technically not a remaster of the PS1 original. This list also doesn’t include projects such as PS one Classics as they were just emulations of the original PS1 games running on a more modern console and not either a source port or a full remake.
In this video EZScape demonstrates a few speed runs for PS1 games that could never be possible by humans as they require changing the controller input every single frame. He shows techniques such as Zig-zagging in Crash Bandicoot, Pac-Man World and Spyro 3.
If you are interested in creating your own Tool-Assisted-Speedruns then you might want to check the latest version of BizHawk. If you are interested in improving some existing TAS then check out PS1 Tool-assisted movies - TASVideos
The PS1 was competing against both the Nintendo 64 and Sega Saturn during its lifetime and in some respects was the underdog in terms of processing power and graphics.
The Hardware initially looks quite clean and simple, especially in comparison to other consoles of its generation, but it still managed to pack a lot of power on to its small design.
The main parts of the hardware are:
If you thought that the Nintendo 64 was the only console that partnered with SGI for this generation of consoles you would be mistaken, the CPU for the original PlayStation used technology licensed from SGI and build by LSI Logic Corp 3.
The CPU used for the PlayStation was not just a simple MIPS R3000A, it was partnered with additional co-processors to handle system resources and geometry processing. There was actually only 2 co-processors in the CPU named COP0 and COP2 as COP1 and COP3 were not present in the chip.
The System control co-processor was the part of the CPU that handled memory management, interrupts and hardware breakpoints. This allows the main processor to focus on game logic while the system co-processor handled all the lower-level details 4.
The Geometry Transformation Engine (GTE) was what allowed the PlayStation to handle 3D graphics, it was specifically designed to do the sort of fast mathematical calculations used for Vertex/Geometry processing. Without it the PlayStation hardware would not have been able to pull of the excellent 3D graphics it was known for in its time.
The GTE is the second co-processor attached to the main processor of the PS1 and this it is also reffered to as Cop2.
It is ideal for the mathematics required to do calculations in 3D space, as it is much faster than the main cpu for these sort of calculations.
Some of the main uses for the GTE are:
The PSY-Q development environment exposes the gte functionality to programmers using a bunch of functions and assembly instructions that start with gte_, for example gte_ncdt().
One interesting limitation of the PS1 GPU is that it didn’t have a Z-buffer so polygons needed to be sorted by the PS1 CPU instead, so often the Painters algorithm was used 5.
Development kits are released to game developers before the launch of the system to allow games to be developed for the system’s launch. These systems would evolve over the systems lifespan and contained useful features for debugging and optimizing games for the platform. These systems were not just limited to the official offerings by Sony as a few other publishers had their own versions of development hardware.
The official development kit for the PS1 was a partnership between Sony and SN Systems which allowed developers to use their PC to interact with the real PS1 hardware.
The official development kit for the PS1 was only available for licensed game developers but there was a stripped-down version available for the general public known as Net Yaroze.
The YouTuber Scarlet Sprites has a good overview of this rather rare unofficial Chinese PS1 add-on which allowed playing the rather obscure Video CD (VCD) format on retail PlayStation 1 consoles:
It plugged into the back of the console via the IO and AV ports without any need for additional power and has a switch on the top to switch between VCD mode and game mode. This suggests that the PlayStation first boots into the IO port before running the game disc.
Also note that there was an official PS1 model released in Japan that played Video CDs called the SCPH-5903 VideoCD which has additional hardware inside the console.
The Official Software development kit was developed by a partnership between SN Systems who are known for excellent 3rd party development kits and the Game Studio Psygnosis who are known for excellent quality games.
It was initially called PSY-Q and even although it was owned by Sony it was actually a cross-platform development kit which included support for the Sega Saturn!
Sony later rebranded the SDK to SDevTC at some point in 1998(?).
In August 1998 Sony provided a CD to developers with a bunch of 3D Graphics tools6 such as:
Also provided was the 3D Graphics Tools manual with tutorials on how to use the provided software.
The PS1-EXE (executable) format is detailed in the post below:
Ever wondered how your favourite game artists made assets for PlayStation 1? Although the exact software used for most games are still a secret, we have managed to piece together what we know so far about how 3D models and 2D Images were created.
To create 3D models for PlayStation 1 games the following tools are known to have been used:
To create textures (and therefore sprites) the following tools are known to have been used:
As the name suggests Batman Forever is originally an Arcade Game that got ported to MS-DOS, the Playstation 1 and Sega Saturn by Iguana Entertainment (Acclaim Published). The original arcade... ...
On 1st November 2020 CAPCOM was targeted by known hacker group RagnarLeaks and some source code and private data was leaked to the dark web. This post will only cover... ...
Developed by Blitz Games (formerly known as Interactive Studios Limited) in 2000 as a cross platform action adventure game based on the movie with the same name. Throughout the engine... ...
Introduction to Crash Bandicoot Crash Bandicoot was one of the first 3D Platform games that managed to deliver both quality gameplay and impressive graphics for its time. It was developed... ...
Making of Crash Team Racing Behind the scenes of Crash Team Racing - Naughty Dog’s final Crash title. Making of Crash Bandicoot 2 What 3D Editor is shown in the... ...
Introduction to the Net Yaroze The Net Yaroze was a consumer development kit for the PlayStation 1, it consisted of a customised retail console with the ability to connect to... ...
History for the PSY-Q SDK The History of the PSYQ PS1 Software development kit is fascinating, it starts with a collaboration between two UK companies, SN Systems and Cross Products,... ...
PSY-Q Linker Files The PS1 linker files for the game chicken run by Blitz Games were made publicly available and are available for both the release and the demo version:... ...
File Formats used to distribute PS1 Discs A Playstation One CD can either be directly put into your PC via the CD-ROM drive or mounting a .BIN/.ISO file. All of... ...
I have never seen a PS1 executable bigger than 2mb, normally if they require more code they split it into multiple executables. With memory being so precious it would be... ...
Note that the order of the externals defined in this list will not reflect the order in the final linked executable, as the order here is just the order that... ...
This guide will presume you have already installed the radare2 suite of binary analysis tools on your computer. Opening a PSX executable in radare2 First lets run radare2: r2 ./SLES_032.85... ...
Hello World example We are going to use the PSX Hello world example from PSXDEV (http://www.psxdev.net/help/psyq_hello_world.html) Create a new file called Hello.C /* =========================================================== Sony PlayStation 1 Source Code ===========================================================... ...
This post covers the hardware used to develop PlayStation One games by major studios back in the day, for the software side see the post on the PsyQ Software Development... ...
The PSX-EXE executable file format is a format similar to the standard UNIX ELF format. It is used on the Sony PlayStation 1 and it is a MIPS 32-bit executable.... ...
20 Years of PlayStation®. Console development past and future - Unite Europe 2015 - YouTube ↩ ↩2
Edge Magazine issue 20 (May 1995) ↩