PS2 Trivia

by PSI on 21 Oct 2019

Under certain conditions, the EE may skip branches due to a bug in the pipelining logic. There is at least one game that relies on this, due to another bug in the game. The compiler will automatically pad out loops that meet those conditions, and handwritten assembly will produce a warning if those conditions are met. So basically, the assholes that developed the game Oni didn’t check their warnings.

Read more

Debugging True Crime on the PS2

by PSI on 21 Oct 2019

True Crime uses a custom streaming IOP module that acts as a wrapper around the CDVD manager. It allows the game to asynchronously stream disc data from multiple sources. On dobiestation, the game’s stdout complains about not being able to start a streaming thread while loading assets. I figured that there’s an issue with the streaming module because of this, so I opened up Ghidra and worked on reversing the driver on the EE and the module itself on the IOP.

Read more