Worklog Getting the PS2 smaller

Joined
Sep 30, 2026
Messages
5
Likes
7
Hey everyone,

Inspired by @Tschicki and @Mister M 's work, I decided to attack the PS2 some more, and what better way to attack, than to tackle the two "useless" chips on the trim, Mechacon and DSP.

So, I bought a couple of SCPH-90004's to abuse :D

It all started out because I was really curious if I could use the CDVD dma channel for game loading( I can), So, after days of reading pcsx2 code and ps2tek, I did a simple FPGA implementation that tries to replace the registers provided by CDVD...

WhatsApp Image 2026-10-26 at 12.30.04.webp

Booom! It boots, only issue? It randomly switches to being japanese, Obviously, the mechacon has an NVRAM, which im currently completely ignoring and returning 00's, Oh well, but there is a bigger issue, memory card not detected, why? MAGICGATE, at this point im starting to worry, but soon, I was able to find the algorithm and the keys, thus, I made a simple magicgate cooprocessor on an stm32, connected to the fpga via spi, and guess what,
WhatsApp Image 2026-10-26 at 12.30.30.webp

It also works!, Now, as I try to load fortuna, it just keeps booting me back to the browser, at which point im thinking, maybe I do need the NVRAM, so i dump my nvram, put it as a c array into the stm32 firmware, and sure enough, I have homebrew running.
WhatsApp Image 2026-10-26 at 12.31.02.webp

At this point I wanted to start loading games via the dma channel, and this took some work, first, I needed to design a custom board, that EP4CE6 devboard off aliexpress wasnt really cooperating too well, and after designing a board, ripping off the dsp, and spending days on signal integrity, I came up with this unique solution:
WhatsApp Image 2026-10-26 at 12.31.19.webp


And yes, It does work, I can load commercial games using OPL off my sd card, performance seems great, games load fast, but my test shows an effective rate of 3.5MB/s or so, I know I can go faster, as the DMA channel is about 150MB/s

But, as of now, I have the DSP removed, mechacon controlling the power/reset, but otherwise completely isolated, and the board boots, and runs games, not sure yet of the stability, as i have only tested MGS2, GTA VC, GTA LCS, BULLY, FLATOUT 2 and GT4, which all seem to be doing really well.

My eventual plan is to make a custom, super small PS2 pcb, and possibly try to get a real ODE working, so that OPL compatability issues can be bypassed. I still have a code cleanup to do, but I currently deem it stable enough to release, so will be releasing the schematics and code shortly.
 
Last edited:
Nice job! I'm curious about the following:
* Which RDDL (read delay) value are you using for the SSBUSC delay/config MMIO value?
* Is 32-bit wide DMA in use?
 
Nice job! I'm curious about the following:
* Which RDDL (read delay) value are you using for the SSBUSC delay/config MMIO value?
* Is 32-bit wide DMA in use?
Oooh, what is that RDDL, I havent even touched it, but interesting, does it allow slowing the bus down or speeding it up? and yes, Im using the 32bit dma, where a0-a15 become d16-d31
 
Hey everyone,

Inspired by @Tschicki and @Mister M 's work, I decided to attack the PS2 some more, and what better way to attack, than to tackle the two "useless" chips on the trim, Mechacon and DSP.

So, I bought a couple of SCPH-90004's to abuse :D

It all started out because I was really curious if I could use the CDVD dma channel for game loading( I can), So, after days of reading pcsx2 code and ps2tek, I did a simple FPGA implementation that tries to replace the registers provided by CDVD...

View attachment 45177
Booom! It boots, only issue? It randomly switches to being japanese, Obviously, the mechacon has an NVRAM, which im currently completely ignoring and returning 00's, Oh well, but there is a bigger issue, memory card not detected, why? MAGICGATE, at this point im starting to worry, but soon, I was able to find the algorithm and the keys, thus, I made a simple magicgate cooprocessor on an stm32, connected to the fpga via spi, and guess what,
View attachment 45178
It also works!, Now, as I try to load fortuna, it just keeps booting me back to the browser, at which point im thinking, maybe I do need the NVRAM, so i dump my nvram, put it as a c array into the stm32 firmware, and sure enough, I have homebrew running.
View attachment 45180
At this point I wanted to start loading games via the dma channel, and this took some work, first, I needed to design a custom board, that EP4CE6 devboard off aliexpress wasnt really cooperating too well, and after designing a board, ripping off the dsp, and spending days on signal integrity, I came up with this unique solution: View attachment 45179

And yes, It does work, I can load commercial games using OPL off my sd card, performance seems great, games load fast, but my test shows an effective rate of 3.5MB/s or so, I know I can go faster, as the DMA channel is about 150MB/s

But, as of now, I have the DSP removed, mechacon controlling the power/reset, but otherwise completely isolated, and the board boots, and runs games, not sure yet of the stability, as i have only tested MGS2, GTA VC, GTA LCS, BULLY, FLATOUT 2 and GT4, which all seem to be doing really well.

My eventual plan is to make a custom, super small PS2 pcb, and possibly try to get a real ODE working, so that OPL compatability issues can be bypassed. I still have a code cleanup to do, but I currently deem it stable enough to release, so will be releasing the schematics and code shortly.
Awesome! It’s great to see other people developing similar projects; this will help keep the PS2 alive for many more years—I’m incredibly happy to see this. @Epaminondas has proven to be the real deal; now, let’s look into a new BIOS chip (which already works perfectly, but I plan to improve it further by adding multiple BIOS versions and extra features) and an ODE. Congratulations on the fantastic work; a united community is capable of achieving incredible things.
 
I have prepared a little demo video:

As promised, I've also managed to fix up the schematic and upload everything to github

Schematic & FPGA: https://github.com/roberts7531/mxode_hw
STM32: https://github.com/roberts7531/stm32_mechacon

I have removed the header file containing the magicgate keys for obvious reasons, but anyone interested in building this should have no problems finding them, you need the retail keyset,
uint8_t SCPH_90004_NVM_bin[] contains my nvram, which will work for you, if you are okay with a PAL system, otherwise, replace with your own

If anyone is actually interested in building this, I'll gladly help!

The bdm irx for OPL is currently a big hack job, and I dont feel comfortable releasing it just yet, basically, I have added a new N command: 0xDD that copies the dvd read N command, first four params make up the uint32_t lba, and the next four make up the burst read count, currently can read up to 64 512 byte sd sectors
 
Back
Top