First (test) CD booting (Patreon)
Content
Hi!
A short update today with the current status of the CD implementation for the PSX core.
Still a lot of IFs and WHENs in the current process, but with the commit from today, the core is able to boot the first CD.
Which CD?
I created a demo disk containing nothing else than a small .exe testrom that was already working using the .exe loader.
The .exe is 4Kbyte in size and when packed into the CD with bootloader it's 63Kbyte.
This CD is currently built directly into the core as hard ROM block and will boot automatically when the core is loaded/reset.
As the BIOS boot process requires CD commands(e.g. region check) that are currently not implemented, I also implemented a BIOS remove hack. It's called "Fastboot" in the OSD and allows to skip the BIOS entirely, booting directly into a game. This option will stay unless there is a better BIOS skip available.
So with all guards left and right you could ask now, what does even work?
Not too shabby actually:
- CPU<->CD command and data interfaces
- CD controller interrupts
- DMA interface
- some important CD commands: seek, read, pause, reset and speed switch
Possible next steps:
- Booting this test CD through the whole BIOS
This would allow to run and see the second part of the BIOS sequence.
- Booting this test CD from external memory(DDR3 or second SDRam)
This would allow to run and test any CD up a size of 128Mbyte. E.g. the Demo CD from Spyro that already works ingame.
- Booting this test CD with data transfer from HPS/Linux
This would allow to run and test any CD.
While the third option seems to be the most interesting, it has one massive downside:
If a game doesn't work because of other bugs or missing features, it's very hard to debug where the problem comes from.
So taking the step between with external RAM storing the whole CD, might be useful to complete one task at a time, making it maybe even faster in the end to get everything running.
I still haven't decided yet which path I'll go next, but you'll see the next days.
Have fun!