Mapper Conversion - Wizards&Warriors 3 - AxROM to GNROM

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Mapper Conversion - Wizards&Warriors 3 - AxROM to GNROM
by on (#162476)
Hello!

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:

Quote:
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


Quote:
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


As CHR RAM is fixed at 8k All I'll need to do is swap upper and lower nibbles before the write?

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?
Re: Mapper Conversion - Wizards&Warriors 3 - AxROM to GNROM
by on (#162482)
You're on the right track but you have a potential issue with mirroring, since AxROM has mapper controller mirroring and GxROM mirroring is fixed by the board config.

Beyond that, yes you'll have to change the values written since the prg bank value is on different bits for the respective boards. If the value is static in the rom you can replace it directly. If it's going to be dynamic you'll have to write a routine to modify the value on the fly, or somehow replace all possible bank values ahead of time. Since these boards swap out the whole 32K of prg at once, you'll need to replace the bank routines in all banks to make sure the correct one is always available.
Re: Mapper Conversion - Wizards&Warriors 3 - AxROM to GNROM
by on (#162563)
It looks like mirroring will be a problem. I've disabled mirroring via trapping in the debugger and the game is unplayable if forced to either v or h.
Re: Mapper Conversion - Wizards&Warriors 3 - AxROM to GNROM
by on (#162570)
AxROM is mapper controlled single screen mirroring, i.e. it uses one screen at a time, and the mapper controls which.

If it's AxROM and it has multidirectional scrolling + status bar like W&W does, it's pretty safe to say it needs to use both screens, so you're SOL without a mapper control for it.