I'm about to start the conversion on WW3 to get it compatible with my Coolboy cart. I've never done one of these before but it appears simple enough, at least in this conversion.
What I've learnt so far is this:
AxROM
Bank select ($8000-$FFFF)
7 bit 0
---- ----
xxxM xPPP
| |||
| +++- Select 32 KB PRG ROM bank for CPU $8000-$FFFF
+------ Select 1 KB VRAM page for all 4 nametables
As CHR RAM is fixed at 8k All I'll need to do is swap upper and lower nibbles before the write?GNROM
Bank select ($8000-$FFFF)
7 bit 0
---- ----
xxPP xxCC
|| ||
|| ++- Select 8 KB CHR ROM bank for PPU $0000-$1FFF
++------ Select 32 KB PRG ROM bank for CPU $8000-$FFFF
After trapping writes to $8000-$FFFF in the debugger i've found 2 things.
1, Bus collisions are avoided by writing to particular ROM locations with the data already there
2, There are only 4 or 5 self contained bank switch routines.
I'm not sure if Coolboy has bus collisions but I'll follow the original ROM's method of avoiding them anyway.
I'll need to find a bit of free space in the ROM somewhere to put my new routines.
I guess my question is, Is this how it is done? Modify the bank write routines? Or do I go one step further and actually change the value written to the address. Perhaps its in a lookup table? So instead of writing $04, I'll change that value in ROM to $40. Would that be the easiest way to do the conversion?