INES Mapper 018
From NESdev Wiki
Jump to navigationJump to search
iNES Mapper 018 represents a mapper used for Magic John (Japanese version of Totally Rad) and a couple other games.
This mapper appears to be connected only to A12-A14, A0-A1, and D0-D3, so the PRG bank and CHR bank numbers are split over two adjacent mapper numbers. Bits 0-3 are in the lower address of a pair (e.g. $xxx0 or $xxx2), and bits 4-7 are in the next higher address.
$8000-1: PRG $8000 3210 3210 |||| |||| ++++-++++- Select 8192 byte PRG ROM bank in $8000-$9FFF $8002-3: PRG $A000 $9000-1: PRG $C000 (PRG $E000 is fixed to the last bank) $A000-1: CHR $0000 3210 3210 |||| |||| ++++-++++- Select 1024 byte CHR ROM bank in $0000-$03FF $A002-3: CHR $0400 $B000-1: CHR $0800 $B002-3: CHR $0C00 $C000-1: CHR $1000 $C002-3: CHR $1400 $D000-1: CHR $1800 $D002-3: CHR $1C00
The IRQ counter is a 16-bit down counter. Port $F001 controls how far the borrow propagates: If all counting bits wrap from $0 to $F, it doesn't modify the fixed bits before it but instead triggers an IRQ. Writes to $F000 or $F001 acknowledge the IRQ.
7654 3210 $F001: IRQ control |||| |||+- Enable (0: pause; 1: count) +++-- 0: Count down in bits 15-0 and hold no bits constant 1: Count down in bits 11-0 and hold bits 15-12 constant 2-3: Count down in bits 7-0 and hold bits 15-8 constant 4-7: Count down in bits 3-0 and hold bits 15-4 constant Alternate interpretation: 7654 3210 $F001: IRQ control |||| |||+- Enable (0: pause; 1: count) ||+-- Hold bits 15-12 constant |+--- Hold bits 15-8 constant +---- Hold bits 15-4 constant
This counter uses a reload value. All bits are reloaded, even the ones held constant.
- $E000: Set bits 3-0 of PRG
- $E001: Set bits 7-4 of counter
- $E002: Set bits 11-8 of counter
- $E003: Set bits 15-12 of counter