Worklog Some PS2 Project

@RootedToTheRoots

If you have a deckard check out these methods in addition to this thread:
- Multi-Purpose Memory Card Emulators (MMCE)
- GorGylka's A5-V11 UDPBD project. https://github.com/GorGylka/UDPBD-A5-V11
I have heard of the MemCard Pro but it is a bit expensive but I’d be willing to try to make my own SD2PSX (which is from what I read basically the same thing) and GorGylka’s project seems super cool! I’d be super interested to try it out

Thanks a lot for the info!!! :)
 
HDD support was part of the SPEED chip. SPEED and DEV9C chips were removed on 75k+
I see, thanks a lot for the info! And these components can’t be added back with newer processors that didn’t use the SPEED chip? (Deckard consoles)
 
I see, thanks a lot for the info! And these components can’t be added back with newer processors that didn’t use the SPEED chip? (Deckard consoles)
The components may be able to be hooked up hardware-wise if the DEV9 related signals were found, but currently it would not be possible to make them work from software due to a software issue.

The DECKARD emulator will redirect DEV9 and DEV9C accesses to either on-chip peripherals (e.g. for SMAP) or emulated peripherals (for the rest of SPEED functionality).
 
The components may be able to be hooked up hardware-wise if the DEV9 related signals were found, but currently it would not be possible to make them work from software due to a software issue.

The DECKARD emulator will redirect DEV9 and DEV9C accesses to either on-chip peripherals (e.g. for SMAP) or emulated peripherals (for the rest of SPEED functionality).
I see. However, would it be possible to modify the already existing mainboard to be able to use a CXD9708GB Emotion Engine (used on the 70000 series from what I read) and be able to transplant the DEV9 and SPEED chip and any other components that are missing to regain full ATA functionality with the custom mainboard?

However evidently I do realize that cooling will be harder due to the more inefficient processor, and will drain out the battery faster :(

However having a built-in NVMe SSD for storage would be very cool
 
I see. However, would it be possible to modify the already existing mainboard to be able to use a CXD9708GB Emotion Engine (used on the 70000 series from what I read) and be able to transplant the DEV9 and SPEED chip and any other components that are missing to regain full ATA functionality with the custom mainboard?
Are you looking to build a handheld?

It seems like you would just get a 70k at that point. UDPBD from GorGlyka's project is as fast as loading from a disc and you get the conveniance of a ssd/hdd.

I think that we would someday be building new PS2s with Tschicki's work done here. Well if he releases it to the world that is, lol. I am looking forward to doing that someday.
 
Last edited:
Are you looking to build a handheld?

It seems like you would just get a 70k at that point. UDPBD from GorGlyka's project is as fast as loading from a disc and you get the conveniance of a ssd/hdd.

I think that we would someday be building new PS2s with Tschicki's work done here. Well if he releases it to the world that is, lol. I am looking forward to doing that someday.
I guess you’re right. The UPPBD project does look very promising to me and I’d love to try it out and I most definitely will!
 
I see. However, would it be possible to modify the already existing mainboard to be able to use a CXD9708GB Emotion Engine (used on the 70000 series from what I read) and be able to transplant the DEV9 and SPEED chip and any other components that are missing to regain full ATA functionality with the custom mainboard?

However evidently I do realize that cooling will be harder due to the more inefficient processor, and will drain out the battery faster :(

However having a built-in NVMe SSD for storage would be very cool
The part that needs to be changed is the IOP, not the EE.

NVMe/PCIe is over-specced for SSBUSC which can do around ~144 MB/s half-duplex transfer speed (32 bits * processor speed (~36Mhz)).
 
Hey, time for a quick update to let you know that I'm still alive!

Did you use hot air to remove and reball the chips? Or was it something else?
Yes, for the whole reballing process I used a hot air station and an IR preheater, but I also made use of my reflow oven for baking all the parts. With a bit of practice it's actually not too bad. In the project documentation I have one page just to describe the removal and reballing process, which will hopefully help anyone that is determined enough to build a custom mainboard.

Now to the update:
So far everything is going according to plan, these were the pending tasks from my last post:
What's next?
- I will have to wait for all remaining components to be delivered and then I can fully assemble this revision.
- In the meantime, I may prepare another outer housing (if there is time I may also sand and paint it).
- If everything fits together nicely, I will use the new revision for a couple of weeks to find possible problems.
- During those weeks I will try to work on finishing the assembly procedures and get all the other files cleaned up.

My goal is to then assemble a third portable using these procedures to check whether I forgot to describe anything. If that goes well I will start planning the release of everything on github.

The following was achieved:
  • I have fully assembled a second portable and I've been using it during my commutes since about beginning of September to find any potential issues. A handful of games later I can finally say that it is as stable as the previous version!
  • The whole assembly documentation is also pretty complete, I think I managed to describe everything needed to build the full portable, including some guidance on how to use it.
  • The BOM for both electronics and assembly should be quite complete
  • I upgraded the bios of the first portable to one I generated using my custom build of PS2BBL - it successfully boots into OSDSYS when no config is found!
  • The git repo for the whole project was prepared and is up on github already, but still set to private until the release
1762716882019.webp
1762716837241.webp


Third Portable:
Last & this weekend (very little time currently) I was assembling the mainboard for the third and most likely last portable.
I already got it to boot first try again (third in a row!), even though I had some issues this time - I managed to use some old solder paste from 2019, which has terrible flow and an almost impossible to clean flux! On top of that the reflow oven showed a thermocouple error in the middle of the bottom layer reflow and during the top layer reflow the fuse popped, just before it hit 240°C. The fuse was on me for using a 6A fuse for 2kW heating elements, the rest was really bad luck :P

In the end it still worked out though! Luckily, because the donor console for it was a nice 90k with 2011 datecode!

The left and right gamepad subassemblies were done Thursday night, and I added some corrections in the respective assembly procedure. Once the heatsink is here (probably next week), I will focus on fully assembling the third portable using the documentation.

After adding all the necessary corrections in the docs I think it's just a matter of moving things around, exporting all the STLs / STEPs, ensuring that all gerbers are present, finishing the readme and preparing the cutting edge post!

IMG_20251109_204439262_HDR.webp


My goal is to release the project this year!
 
Absolutely fantastic!
I wish we had a proper laminated screen to have the decidedly ultimate PS2 portable
 
Hello, very impressive project

The GitHub files are currently private.

Can you say something about the release date?
 
Hello, very impressive project

The GitHub files are currently private.

Can you say something about the release date?

Thanks! All design files were released here.

Small update:

After thinking about the implementation for a while, last week I was working on the last planned feature: MAGH auto-detection.

Over the last months I noticed that for some games the MAGH value, or horizontal resolution, is not static - you have to enter the menu and change it manually multiple times. PAL GOW 1 & 2 were the worst offenders – the game itself runs at 512ix512 (MAGH 4) and all FMV scenes run at 512ix640 (MAGH 3).

It’s annoying to keep changing the settings, so I was looking into a way to adjust it automatically. For this I wrote a module in the video processor that runs in parallel to the regular data path. It essentially iterates through all video data for each frame to determine the currently displayed horizontal resolution, i.e. the MAGH setting. That’s a lot of data to analyze - at 2560 subpixels per line this leads to about 33 Megapixels of data per second. The output is the estimated MAGH value that connects directly to a video processor register the SysCon can read.

In the SysCon menu I added another setting called ‘MAGH Autodetect’ which, when enabled, will poll the estimated MAGH value from the video processor at about 250Hz and recalculate the video settings automatically - if there is a change.

Even though this new feature is quite simple overall, I was surprised by how well it worked in the games I tested, even with PS1 games via DKWDRV! There are some limitations, though: This is the only module that operates by analyzing the raw video data, so the result heavily depends on what is displayed. A full screen of a single color will not lead to a valid MAGH estimate for example. I can also think of a couple edge cases where the MAGH detection can output incorrect values, but I haven’t seen those so far outside of my simulations.

Interestingly, some PS1 games I tried seem to run with a MAGH setting of 7 (i.e. 320p horizontal resolution, or 8 subpixels/pixel) and also get detected accordingly.
But correct detection is not always desirable: here, a MAGH value of 3 (i.e. 640p horizontally) will lead to a sharper image overall - This would be free 2x integer scaling. That’s why I added an edge case here where MAGH 7 is always detected as MAGH 3.

I already pushed the new feature to the repository, along with some other corrections in the documentation.

IMG_20251219_202115377_HDR.webp


-----------

And I think that’s it! All features are implemented, all requirements satisfied, the product is on my table and the design files were released, what a wild ride this was! I hope the worklog was interesting to read and inspired people to give the PS2 some more love – it deserves it, what a great console!

I certainly learned a lot for sure - it was my first time soldering BGAs, my first proper FPGA project, my biggest C project, my first time surface modeling a housing, my first flex PCBs, and in general the most complex system architecture I’ve ever defined (both work and private). I’m very proud of what was achieved and now it’s finally time to properly tackle my PS2 backlog of over a hundred games!!

Of course, the end result is not flawless - I tried to note down some things I would do differently next time:
  • The speakers are OK, but could be improved -> phone speaker modules?
  • The 5 inch IPS looks good, but there are certainly better displays out there
  • Next time I would prefer to separate the battery protector & fuel gauge from the mainboard (repairability, they have very limited write cycles)
  • The battery connections could be improved. I don’t like the fact that they require custom crimped cables
  • The battery management is way overkill
  • It would be better to have all external connectors on separate boards for repairability
  • The RP2040s on the gamepads are way overkill, smaller MCUs would do the job just fine and would be more efficient
  • The shell is FDM printed and therefore has defects. While I personally prefer the FDM printed look (feels nice and has some grip), a more polished look would probably be preferred.
  • The T20 is amazing and very low power, but a couple of DSPs would be very helpful for more complex image processing

And in case someone is wondering what happened to the custom mainboard that started this whole project, it’s still working 3 years later and recently got a very special place in my collection!

IMG_20251127_220124935.webp
 
I just wanted to thank you for all your effort and dedication to this incredible and unique project. Thanks to people like you, this community is great. Thank you once again.:)
 
Thanks! All design files were released here.

Small update:

After thinking about the implementation for a while, last week I was working on the last planned feature: MAGH auto-detection.

Over the last months I noticed that for some games the MAGH value, or horizontal resolution, is not static - you have to enter the menu and change it manually multiple times. PAL GOW 1 & 2 were the worst offenders – the game itself runs at 512ix512 (MAGH 4) and all FMV scenes run at 512ix640 (MAGH 3).

It’s annoying to keep changing the settings, so I was looking into a way to adjust it automatically. For this I wrote a module in the video processor that runs in parallel to the regular data path. It essentially iterates through all video data for each frame to determine the currently displayed horizontal resolution, i.e. the MAGH setting. That’s a lot of data to analyze - at 2560 subpixels per line this leads to about 33 Megapixels of data per second. The output is the estimated MAGH value that connects directly to a video processor register the SysCon can read.

In the SysCon menu I added another setting called ‘MAGH Autodetect’ which, when enabled, will poll the estimated MAGH value from the video processor at about 250Hz and recalculate the video settings automatically - if there is a change.

Even though this new feature is quite simple overall, I was surprised by how well it worked in the games I tested, even with PS1 games via DKWDRV! There are some limitations, though: This is the only module that operates by analyzing the raw video data, so the result heavily depends on what is displayed. A full screen of a single color will not lead to a valid MAGH estimate for example. I can also think of a couple edge cases where the MAGH detection can output incorrect values, but I haven’t seen those so far outside of my simulations.

Interestingly, some PS1 games I tried seem to run with a MAGH setting of 7 (i.e. 320p horizontal resolution, or 8 subpixels/pixel) and also get detected accordingly.
But correct detection is not always desirable: here, a MAGH value of 3 (i.e. 640p horizontally) will lead to a sharper image overall - This would be free 2x integer scaling. That’s why I added an edge case here where MAGH 7 is always detected as MAGH 3.

I already pushed the new feature to the repository, along with some other corrections in the documentation.

View attachment 40994

-----------

And I think that’s it! All features are implemented, all requirements satisfied, the product is on my table and the design files were released, what a wild ride this was! I hope the worklog was interesting to read and inspired people to give the PS2 some more love – it deserves it, what a great console!

I certainly learned a lot for sure - it was my first time soldering BGAs, my first proper FPGA project, my biggest C project, my first time surface modeling a housing, my first flex PCBs, and in general the most complex system architecture I’ve ever defined (both work and private). I’m very proud of what was achieved and now it’s finally time to properly tackle my PS2 backlog of over a hundred games!!

Of course, the end result is not flawless - I tried to note down some things I would do differently next time:
  • The speakers are OK, but could be improved -> phone speaker modules?
  • The 5 inch IPS looks good, but there are certainly better displays out there
  • Next time I would prefer to separate the battery protector & fuel gauge from the mainboard (repairability, they have very limited write cycles)
  • The battery connections could be improved. I don’t like the fact that they require custom crimped cables
  • The battery management is way overkill
  • It would be better to have all external connectors on separate boards for repairability
  • The RP2040s on the gamepads are way overkill, smaller MCUs would do the job just fine and would be more efficient
  • The shell is FDM printed and therefore has defects. While I personally prefer the FDM printed look (feels nice and has some grip), a more polished look would probably be preferred.
  • The T20 is amazing and very low power, but a couple of DSPs would be very helpful for more complex image processing

And in case someone is wondering what happened to the custom mainboard that started this whole project, it’s still working 3 years later and recently got a very special place in my collection!

View attachment 40995
Thank you, dear friend. Your excellent work is a milestone for the PlayStation 2. I appreciate your commitment and dedication to this project, and by sharing it, you demonstrate the nobility of making other PlayStation 2 players and fans happier. As a PlayStation 2 fan, I feel honored to see where this project has come. Congratulations on the impeccable work and dedication to completing it.
 
Really great work
I got a question can you like do a noon guide for bios like there's been a hell lot slims and fats with bios fault or corruption and only solution is replacing it with annother same model / id no which is a pain for outsourcing so like which cheaps chips can be used , how to program those with generic bios wiring/jumpers diagrams etc
 
Back
Top