The excellent Ars Technica episode on Prince of Persia made me want to play the original one. I only ever played the excellent SNES version (would be call a remake by today standard). But the original one look to have a special vibe to it.
A couple month back, I got hold of a PAL Amiga CD32 machine for my collection. Looking at online feedback it look like the Amiga port is faithful to the original Apple ][ version. Should be easy enough to play it on my CD32 right?
The first thing to address is that I got a PAL CD32 and no display that support PAL/50Hz/288p (in Canada here). Why not getting an NTSC system in the first place? The CD32 never saw an official NTSC release (maybe a very limited one in Canada), NTSC system in the wild come from warehouse stock for that launch that never took place. So there is almost no NTSC software! While some PAL software will play nice with the NTSC version many will not. It's possible to toggle between 50hz/60Hz mode at boot or via a jumper on the board. From my understanding a PAL CD32 switched to 60Hz has better compatibility (but not 100%) than an stock NTSC system since the CPU is still running at the PAL speed of 28.37516 MHz rather than NTSC speed of 28.63636MHz.
In sum you got 3 main difference between PAL & NTSC system:
- R203 jumper that tell the software if the hardware is PAL or NTSC (The 50Hz/60Hz switch) Open PAL, close NTSC.
- CPU oscillator speed
- The video encoder color config (The real PAL vs NTSC stuff)
With 50hz/60Hz switch we only change one of those 3. At that point as an NTSC TV user you will be lucky to see a B&W picture with the bottom of the screen cropped if using a PAL software. This is because the color encoding is still PAL and the resolution is 288p not 240p!
You could also see a rolling screen, as some PAL software don't care about the 50hz/60hz setting and will output 50Hz no matter what.
How do we get color? We simply workaround the PAL/NTSC encoding stuff and mod the console for RGB output! The CD32 got a quite standard video encoder chip the CXA1145. We can use it to drive 75ohm RGBS output by completing the four circuit with a 75ohm resistor and a 220uf capacitor.
The hole in the case for the RF modulator suspiciously got a DE dsub connector size. Removing the RF modulator (some ChipQuick will help) will make place to add a VGA (DE-15) connector. I placed it between the plastic case and the RF shield to add some pushing & pulling resistance.
Look to be straight from factory!
Awesome color as expected from RGB!
Now all we need is a copy of PoP for the CD32, no official release exist so we have to use a tool called whdload on a CD image to launch the original version that you already legally own. Lucky for us, some nice people on the internet already made that work and provide unoffical CD32 port for the game (Don't ask me). Unfortunately, you wont find NTSC version of those port since the CD32 userbase is mostly in PAL land. So with those port the bottom of the screen will be cropped on our NTSC TV. In this example the life bar is missing at the bottom with giant black bar at the top. Playing with the TV vertical centering wont help.
Best bet is to get a NTSC version of PoP for whdload that is target for use on Amiga computer and inject it in the existing CD32 port image.
I found a nice tools on github to help edit CD32 image: https://github.com/patrikaxelsson/cd32tools .
git clone https://github.com/patrikaxelsson/cd32tools.git
7z x -opop_cd32 prince_of_persia_cd32_pal.iso
cp PrinceOfPersiaNTSC/Disk.1 pop_cd32/
cp PrinceOfPersiaNTSC/prince.high pop_cd32/
cp PrinceOfPersiaNTSC/PrinceOfPersia.slave pop_cd32/
mkisofs -quiet -V POPCD32NTSC -copyright na -publisher na -o pop_cd32_ntsc.raw -relaxed-filenames -d -input-charset ASCII -output-charset ASCII -iso-level 3 -A "" -sysid CDTV pop_cd32
python2 cd32tools/iso/make_cd32_iso.py -t cd32_developerkit/ISO9660Tools_V1.04/ISOCD/CD32.TM pop_cd32_ntsc.raw
Loading file: pop_cd32_ntsc.raw
Saving file: pop_cd32_ntsc.iso
And voila, 240p/60Hz RGBS PoP on a PAL CD32. Can't save however... more challenge!
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.