Nintendo NES-001 User Guide - Page 37

Appendix D, Memory Mapper Functions - support

Page 37 highlights

Appendix D Memory Mapper Functions The information in this section is based on [6] with additional information about MMC1 from [46]. D.1 UNROM Switch Address $8000-$FFFF Data 16 KB PRG-ROM bank number to load into $8000. On reset, the first PRG-ROM bank is loaded into $8000 and the last PRG-ROM bank is loaded into $C000. Switching is only allowed for the bank at $8000, the one at $C000 is permanently assigned to that location. Since this mapper has no support for VROM, games using it have 8 KB of VRAM at $0000 in PPU memory. D.2 CNROM Switch Address $8000-$FFFF Data 8 KB CHR-ROM bank number to load into PPU memory at $0000. With this mapper, PRG-ROM functions the same as with NROM (no mapper), so games with only one 16 KB bank of PRG-ROM will load it into both $8000 and $C000, those with two will load one into $8000 and the other into $C000. On reset, the first 8 KB VROM bank is loaded into PPU $0000. D.3 MMC1 Address $8000-$9FFF Data Register 0: $A000-$BFFF • Bit 0 - Selects mirroring between horizontal (0) and vertical (1). • Bit 1 - Set to 0 to cause single screen mirroring. • Bit 2 - If 0, PRG-ROM swapped at $C000. If 1, PRG-ROM swapped at $8000. • Bit 3 - If 0, swap 32 KB of PRG-ROM at $8000. If 1, swap 16 KB at the address specified by bit 2. • Bit 4 - If the cartridge has VROM, 0 indicates swapping 8 KB of VROM at PPU $0000, 1 indicates swapping two 4 KB VROM pages at PPU $0000 and $1000. On 1024 KB cartridges this bit specifies whether to use 256 KB selection register 1. • Bit 7 - Set to 1 to reset register. Register 1: • Bits 0-3 - VROM bank number to load into PPU $0000. Based on bit 4 of register 0, this will either be 8 KB bank n, or 4 KB banks n and (n + 1) where n is the value of bits 0-3. • Bit 4 - 256 KB selection register 0. Stores the low bit of 256 KB PRGROM selection in 1024 KB cartridges with bit 4 of register 0 set, otherwise 0 indicates swapping from first 256 KB of PRG-ROM, 1 indicates swapping from third 256 KB of PRG-ROM. In 512 KB cartridges, 0 indicates swapping from first 256 KB of PRG-ROM, 1 indicates swapping from second 256 KB of PRG-ROM. 37

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

37
Appendix D
Memory Mapper Functions
The information in this section is based on [6] with additional information about MMC1 from
[46].
D.1 UNROM Switch
Address
Data
$8000-$FFFF
16 KB PRG-ROM bank number to load into $8000.
On reset, the first PRG-ROM bank is loaded into $8000 and the last PRG-ROM bank is
loaded into $C000. Switching is only allowed for the bank at $8000, the one at $C000 is
permanently assigned to that location. Since this mapper has no support for VROM, games
using it have 8 KB of VRAM at $0000 in PPU memory.
D.2 CNROM Switch
Address
Data
$8000-$FFFF
8 KB CHR-ROM bank number to load into PPU memory at $0000.
With this mapper, PRG-ROM functions the same as with NROM (no mapper), so games with
only one 16 KB bank of PRG-ROM will load it into both $8000 and $C000, those with two will
load one into $8000 and the other into $C000. On reset, the first 8 KB VROM bank is loaded
into PPU $0000.
D.3 MMC1
Address
Data
$8000-$9FFF
Register 0:
Bit 0 - Selects mirroring between horizontal (0) and vertical (1).
Bit 1 - Set to 0 to cause single screen mirroring.
Bit 2 - If 0, PRG-ROM swapped at $C000. If 1, PRG-ROM swapped at
$8000.
Bit 3 - If 0, swap 32 KB of PRG-ROM at $8000. If 1, swap 16 KB at the
address specified by bit 2.
Bit 4 - If the cartridge has VROM, 0 indicates swapping 8 KB of VROM
at PPU $0000, 1 indicates swapping two 4 KB VROM pages at PPU
$0000 and $1000. On 1024 KB cartridges this bit specifies whether to
use 256 KB selection register 1.
Bit 7 - Set to 1 to reset register.
$A000-$BFFF
Register 1:
Bits 0-3 - VROM bank number to load into PPU $0000. Based on bit 4
of register 0, this will either be 8 KB bank n, or 4 KB banks n and (n +
1) where n is the value of bits 0-3.
Bit 4 - 256 KB selection register 0. Stores the low bit of 256 KB PRG-
ROM selection in 1024 KB cartridges with bit 4 of register 0 set,
otherwise 0 indicates swapping from first 256 KB of PRG-ROM, 1
indicates swapping from third 256 KB of PRG-ROM. In 512 KB
cartridges, 0 indicates swapping from first 256 KB of PRG-ROM, 1
indicates swapping from second 256 KB of PRG-ROM.