For anyone interested this is more on the Rockman 6-in-1 mapper.
Code:
REGISTERS:
$5010 - Chip Config
xxSC-xxPP
S = Select CHR ROM/RAM
0 CHRROM. 1 CHRRAM.
C = CHR-ROM Size
0 256K. 1 128K.
PP = PRG-ROM Size
00 512K. 01 256K. 10 128K.
$5011 - PRG Chunk 256K Base Select
xBBB-xxxx
BBB = Selects 256K Base of PRG-ROM for MMC3 to Use
$5012 - CHR Chunk Base Select
xxBB-xxxx
BB = Selects 128K Base of CHR-ROM for MMC3
Only values 00 and 10 are used but bit 0 may be
valid too.
On Powerup PP of $5010 is zeroed, BBB of $5011 also zeroed. This causes the first 512K of PRG-ROM to be seen by the MMC3 which puts the Menu program in control.
$5011 really controls upper address lines on the PRG-ROM. $5010 controls address lines too, by deciding which ones the MMC3 can control and which ones it holds in a constant state to effectively set bounds for the ROM data seen by the MMC3.
That should cover most of the mapper and how it works.
---
Stuff about hardware. I'm not sure this is all exact as I'm no hardware expert.
PRG-ROM Connections
A16 and Below Connect Normally to MMC3
A17 - HELD HIGH in 128K Size Mode, otherwise connects normally
A18 - Connects to MBR if Size isn't 512K. If it is then it connects to MMC3
A19 - Connects to MBR
A20 - Connects to MBR
MBR being Master Bank Register. It controls the upper PRG lines. The upper most 2 are always connected to the MBR. A18 is used in 256K and 128K PRG modes by the MBR. In 512K mode the MMC3 needs this as the ROM is 512K and needs that to switch between the first and last 256K of data. A17 connects normally to MMC3 unless the mode is 128K in which case its I think held high (+5v) so the lower 128K of the selected 256K block is all that is visible. This is used for Rockman 1.
I think all this is correct. CHR-ROM has a similar setup. I imagine you could built your own cartridge with a TxROM cart and additional hardware for the MBR.