Memblers wrote:
I kinda liked the idea of # of PRG banks being zero, because it is both pin-compatible and within reason to use an 8kB ROM on any 28-pin board. I'm pretty sure there never will be a cartridge with 0kB of PRG memory. Alternatively, zero could just mean to repeat it until memory is full, whatever size it is. Yeah that would pave the way for even 16-byte programs to be valid.
But ultimately the ROM size has nothing to do with the mapper. The problem is that iNES doesn't recognize pages smaller than 16kB, a new mapper won't solve that.
Your proposal can be another way to make things work.
But now let's talk about 1, 2, 4kb roms that Zepper was once mentioned
If we can allocate one mapper number for those irregular sized rom, we can solve all the trouble with a waste of just one mapper account.
For example, let's say we are allocating mapper 028 to these irregular PRGed rom.
----------------------------------------------------------------------------------
Mapper 28: mapper for the simple type roms with the PRG rom size smaller than 16kb
* In this mapper, the 4th byte of iNES header is used to indicate the size of PRG rom instead of the number of banks it contain. You can kind of think it as a page count of 1kb pages, although it may not be technically correct to say so. The only acceptable value for the page count byte is 1, 2, 4, 8. Under these numbers, the PRG roms are mirrored to fill 8000h~ffffh address region. The behavior for the roms with values other than 1, 2, 4, 8 is indetermined, i.e. emulator specific.
-Header setting: N, E, S, 1A, 0x(size of PRG rom in 1kb's: 1, 2, 4, 8 possible), 0x(size of CHR in 8kb's, usually 1), Cx(0 for h. mirror, 1 for v. mirro, and so forth...), 10, 00, 00, 00 ,00,
actual rom image starts form here
-Examples:
N,E,S,1A,04,01,C1,10,.... : a rom with 4kb PRG, 8kb CHR with vertical mirroring
N,E,S,1A,08,01,C0,10,.... : a rom with 8kb PRG, 8kb CHR with horizontal mirroing (Galaxian)
N,E,S,1A,02,01,C3,10,.... : a rom with 2kb PRG, 8kb CHR with vertical mirroring + battery save.
----------------------------------------------------------------------------------
In this system, we can catch 4 birds with one stone. Not bad, isn't it?