But now people want to make games using its advanced features and get them included on a multicart. This is possible with a 1-byte patch so long as the game never changes the outer bank register ($81) after startup and always writes the correct log(prgsize/32768) value to bits 5-4 of the mode register ($80).
In this post, INL suggested developing an extended discrete mapper that allows switching PRG, CHR, and mirroring without having to write to supervisor registers $80 and $81 or even to register select. I proposed basing it on mapper 78, variants of which are used by IREM's Holy Diver (78.3) and Uchuusen: Cosmo Carrier (78.1), and making it tweakable using the mode register to resemble mapper 11 used by Color Dreams games. Thus an additional user mode of an expanded Action 53 mapper would have this layout at $8000-$FFFF:
Code: Select all
7654 3210
CC MPPP
|| |+++- Set low 3 bits of PRG inner bank
|| +---- Set mirroring mode bit 0 (inverted: 1 writes 0; 0 writes 1)
++------ Set CHR bank
How this would work:
- 32K PRG banks
Similar to mapper 11, except with mapper-controlled mirroring (either H/V or 1-screen) instead of CIC stun control. (Only two commercial-era games using this mapper have horizontal mirroring; the rest have vertical mirroring.) This allows accessing all four CHR RAM banks and the entirety of a 256 KiB outer bank. - 16K PRG banks, game up to 128 KiB
This behaves like either variant of mapper 78, except CHR RAM is limited to 32 KiB. - 16K PRG banks, 256 KiB
Because there are only three PRG ROM bank select bits, a game needs to select UNROM (write $01 to $5000), change bit 3 of the inner bank number, and select mapper 78 again. But as long as the game doesn't need to change between 16K and 32K modes or between H/V and 1-screen mirroring, this eliminates the need to write to supervisor registers after startup.