INES Mapper 045

From NESdev Wiki
Revision as of 05:41, 4 July 2019 by NewRisingSun (talk | contribs) (Rewrite and additions.)
Jump to navigationJump to search

iNES Mapper 045 denotes multicart PCBs using the GA23C ASIC in its standard configuration. It is an MMC3 clone with four outer bank registers.

Registers

There are four outer bank registers, accessed at address $6000. The first write goes to the first register, the second write to the second, and so on; the fifth write goes to the first register again. The outer bank registers function regardless of the MMC3's WRAM bits' setting.

MMC3-compatible registers

  • Bank select ($8000-$9FFE, even)
  • Bank data ($8001-$9FFF, odd)
  • Mirroring ($A000-$BFFE, even)
  • PRG RAM protect ($A001-$BFFF, odd)
  • IRQ latch ($C000-$DFFE, even)
  • IRQ reload ($C001-$DFFF, odd)
  • IRQ disable ($E000-$FFFE, even)
  • IRQ enable ($E001-$FFFF, odd)

These registers function identically to the MMC3, with the PRG/CHR bank registers subject to masking by the outer bank registers.

CHR-OR LSB ($6000 #0, write)

Mask: $F001

D~7654 3210
  ---------
  CCCC CCCC
  ++++-++++- Select CHR A10-A17, OR'd with MMC3's CHR A10-A17

PRG-OR LSB ($6000 #1, write)

Mask: $F001

D~7654 3210
  ---------
  ppPP PPPP
  ||++-++++- Select PRG A13-A18, OR'd with MMC3's PRG A13-A18
  ++-------- Select PRG A19-A20

CHR-AND, CHR-OR/PRG-OR MSB ($6000 #2, write)

Mask: $F001

D~7654 3210
  ---------
  PPCC cccc
  |||| ++++- Select number of CHR bits from MMC3
  ||||       ($F: 256 KiB, $E: 128 KiB ... $7-$0: 1 KiB)
  ||++------ Select CHR A18-A19
  ++-------- Select CHR A20-A21 and PRG A22-23

PRG-AND, register lock ($6000 #3, write)

Mask: $F001

D~7654 3210
  ---------
  1LPP PPPP
   |++ ++++- Select PRG-AND mask (inverted)
   |||       ($00: 512 KiB, $20: 256 KiB...)
   +-------- 1=Lock outer bank registers

Reset outer bank registers and release lock ($6001, write)

Writing any value to $6001 (mask: $F001) resets the outer bank registers as a soft reset would, clearing the "Lock" bit.

Notes

  • Some games write to the outer bank registers multiple times. Experiments during dumping do not suggest that this is necessary.
  • NES 2.0 Mappers 356, 372 and 373 repurpose bits from outer bank register #2 for other things.
  • NES 2.0 Mapper 269 is an enhanced plug-and-play console variant of this mapper.