Post : https://www.psx-place.com/threads/ps2-open-source-modchip-discussion.43705/
I'm on a new account, and I can only post here.
Hi everyone, I'm responding to this post, which seems very courageous in the face of the challenge.
Regarding the FPGA, I agree with Luisile: no need to spend a fortune, as Modbo 5.0 is sufficient.
I still have my memory from contributing to Homebrew in the 2000s, but it's 2025, and there are more affordable and, above all, less expensive solutions.
If you have some knowledge of MIPS R5900i, you should understand each assembler file. Modbo 5.0 contains firmware version 1.93, it's entirely possible to update it to Release 34, specifically the firmware part.
It would take too long to port to Crystal Chips software release 34, as it would be too much work.
However, if you have the source code for Modbo 5.0, you can integrate the Crystal Chips firmware updates into it.
This is a feasible and quick solution, but you can go even further with a Raspberry Pi Pico. Unlike assembler, the amount of code isn't that long to redo. The ROM part consists of patches to the memory, while the MechaCon or CDVD is more used to "force" or "fake" signals allowing the validation of unofficial/imported discs; we already have all the addresses and patches.
For example, in (CCHW.S), here's the C rewrite of (CC_SendPacket) on Pico:
uint8_t cc_send_packet(uint32_t pkt) {
// Calcul addsum
uint8_t addsum = ((pkt >> 0) & 0xFF) + ((pkt >> 8) & 0xFF)
+ ((pkt >> 16) & 0xFF) + ((pkt >> 24) & 0xFF);
addsum &= 0xFF;
uint8_t res;
do {
cc_poke(CC_MAGIC1);
cc_poke(CC_MAGIC2);
cc_poke(pkt & 0xFF);
cc_poke((pkt >> 8) & 0xFF);
cc_poke((pkt >> 16) & 0xFF);
cc_poke((pkt >> 24) & 0xFF);
cc_poke(addsum);
res = cc_peek();
} while(res & 0xF0);
return res;
}
Pico uses much simpler methods to perform waits with (sleep_us or sleep_ms), instead of looping in assembler.
Similarly, for memory copy instructions, it's done in one line with (memcpy) to copy the payload wherever you want in RAM.
If you have the source code for Modbo 5.0, I could give you a more complete breakdown of the many possibilities. Apparently, the firmware is stored in an ATMEGA8L-8AU, and it can be reflashed. However, the PCB doesn't have a solder point for this, so microsoldering will be required for those interested in joining this project!
I could also tell you about two projects I have in mind, so you'll have to choose between one or the other:
1) Create two clips, JEITA P-QFP208 and TSOP-II 50 (very complicated to do; I can't find a solution with pogo pins at the moment).
2) Create an ODE from a Tang Nano 20K FPGA, thus achieving a DVD-ROM 4x read speed (approximately 5.28 MB/s) and CD-ROM 24x read speed (approximately 3.6 MB/s) for the PlayStation 1.
I'm on a new account, and I can only post here.
Hi everyone, I'm responding to this post, which seems very courageous in the face of the challenge.
Regarding the FPGA, I agree with Luisile: no need to spend a fortune, as Modbo 5.0 is sufficient.
I still have my memory from contributing to Homebrew in the 2000s, but it's 2025, and there are more affordable and, above all, less expensive solutions.
If you have some knowledge of MIPS R5900i, you should understand each assembler file. Modbo 5.0 contains firmware version 1.93, it's entirely possible to update it to Release 34, specifically the firmware part.
It would take too long to port to Crystal Chips software release 34, as it would be too much work.
However, if you have the source code for Modbo 5.0, you can integrate the Crystal Chips firmware updates into it.
This is a feasible and quick solution, but you can go even further with a Raspberry Pi Pico. Unlike assembler, the amount of code isn't that long to redo. The ROM part consists of patches to the memory, while the MechaCon or CDVD is more used to "force" or "fake" signals allowing the validation of unofficial/imported discs; we already have all the addresses and patches.
For example, in (CCHW.S), here's the C rewrite of (CC_SendPacket) on Pico:
uint8_t cc_send_packet(uint32_t pkt) {
// Calcul addsum
uint8_t addsum = ((pkt >> 0) & 0xFF) + ((pkt >> 8) & 0xFF)
+ ((pkt >> 16) & 0xFF) + ((pkt >> 24) & 0xFF);
addsum &= 0xFF;
uint8_t res;
do {
cc_poke(CC_MAGIC1);
cc_poke(CC_MAGIC2);
cc_poke(pkt & 0xFF);
cc_poke((pkt >> 8) & 0xFF);
cc_poke((pkt >> 16) & 0xFF);
cc_poke((pkt >> 24) & 0xFF);
cc_poke(addsum);
res = cc_peek();
} while(res & 0xF0);
return res;
}
Pico uses much simpler methods to perform waits with (sleep_us or sleep_ms), instead of looping in assembler.
Similarly, for memory copy instructions, it's done in one line with (memcpy) to copy the payload wherever you want in RAM.
If you have the source code for Modbo 5.0, I could give you a more complete breakdown of the many possibilities. Apparently, the firmware is stored in an ATMEGA8L-8AU, and it can be reflashed. However, the PCB doesn't have a solder point for this, so microsoldering will be required for those interested in joining this project!
I could also tell you about two projects I have in mind, so you'll have to choose between one or the other:
1) Create two clips, JEITA P-QFP208 and TSOP-II 50 (very complicated to do; I can't find a solution with pogo pins at the moment).
2) Create an ODE from a Tang Nano 20K FPGA, thus achieving a DVD-ROM 4x read speed (approximately 5.28 MB/s) and CD-ROM 24x read speed (approximately 3.6 MB/s) for the PlayStation 1.