PlayStation X compatibility notes

The PSX DESR is a fusion between a PS2 based upon the SCPH-50xxx series and a DVR

It has certain details that you should cover if making a program compatible with it:

Built-in OSD Font


All retail PS2s have a basic font used by the OSDSYS to render the menu text. it’s located at rom0:FONTM.

However, since the PSX has no menu on the OSDSYS, this file was removed. resulting in errors if your program depends on that file…

Disc reader


The PSX has a dual laser system consisting of:

the system is designed to assume whole tray to be broken if the DVR laser is broken/failing/unresponsive/etc

to circunvent this, most apps can force the tray into “PS2 Mode”. however, it’s not that simple. it requires replacing the CDVDMAN module with the XMB version (rom0:PCDVDMAN).

doing so requires using an IOPRP image (prebuilt ioprp - ioprp contents). as shown in the below example

void setTrayToPS2Mode(void) {
    int stat, result;
    SifInitRpc(0); // Initialize SIFCMD & SIFRPC
    while (!SifIopRebootBuffer(psx_ioprp, size_psx_ioprp)) {}; // reboot IOP with IOPRP to get PCDVDMAN
    while (!SifIopSync()) {}; // wait for IOP to be ready
    SifInitRpc(0);
    sceCdInit(SCECdINoD);
    while (sceCdChgSys(2) != 2) {}; // Switch the drive into PS2 mode. wich requires PCDVDMAN to work.
    do {result = sceCdNoticeGameStart(1, &stat);} 
        while ((result == 0) || (stat & 0x80)); // notice game start so the PSX front button acts as a reset button.
    while (!SifIopReset("", 0)) {}; // Reset the IOP normally to get the standard PS2 default modules.
    while (!SifIopSync()) {};
}

Both FreeMcBoot and PS2BBL already do this for you. however, this information may prove useful if you’re not gonna use those…

On board Flash memory


The PSX has a memory card flash memory connected to the SPEED chip (DEV9 interface).
This flash memory, known as XFROM, holds the main PSX bootloader, making it a vital component of the system, even more than the HDD (because the bootloader from XFROM is the one launching the HDD MBR.KELF)

This flash memory is not accesible on current homebrew design, homebrew XFROMMAN is having issues accesing, while the PSXs built-in XFROMMAN (rom0:PFLASH, rom0:PXFROMMAN) freeze when executed due to some incompatibility with homebrew iomanX module

most of the time your apps will not need to (and should avoid to) touch the XFROM contents.

for accesing this chip you can use wLaunchELF 4.43_XFW made by balika011.

Identifying if console is a PSX


You can make your application detect if the console is a PSX just by checking the existence of rom0:PSXVER

Identifying if PSX is 1st or 2nd gen


The PSX had two generations:

1st gen 2nd gen
DESR-5000 DESR-5500
DESR-5100 DESR-5700
DESR-7000 DESR-7500
DESR-7100 DESR-7700

this can also be quickly identified from software by checking the ROMVER version field:

The HardDrive


The PSX HDD cannot be changed because the DVR Processor (DVRP) is actively checking if it is a legit sony ps2 hdd (either PSX or PS2 HDD). it is checked by issuing commands to the HDD.
if the hdd is not original, power is cut down and DVRP stops all access to it.

PS2 (SCPH-20401) COULD be used to replace the original HDD only retaining the XMB on 1st gen models (because 2nd gen models don’t/can’t boot the XMB if the DVR area is not present on the HDD. wich can’t be recreated on those because it starts after 40gb of data, wich is the actual total size of original PS2 HDDs)

Mechacon Crash


It is unknown if PSX is capable of producing the mechacon crash like the SCPH-50xxx series