NROM

From NESdev Wiki
(Redirected from INES Mapper 000)
Jump to navigationJump to search
NROM
Company Nintendo, others
Boards NROM, HROM*, RROM, RTROM, SROM, STROM
PRG ROM capacity 16K or 32K
PRG ROM window n/a
PRG RAM capacity 2K or 4K in Family BASIC only
PRG RAM window n/a
CHR capacity 8K
CHR window n/a
Nametable arrangement Fixed H or V, controlled by solder pads (*V only)
Bus conflicts Yes
IRQ No
Audio No
iNES mappers 000


The generic designation NROM refers to the Nintendo cartridge boards NES-NROM-128, NES-NROM-256, their HVC counterparts, and clone boards. The iNES format assigns mapper 0 to NROM.

The suffixes 128 and 256 refer to kilobits by Nintendo's own designation; not kilobytes (as is the case with UNROM 512, for example).

Although mapper 0 does not have any submappers, other fields in the NES 2.0 header may be used to specify the following:

  • (Battery-backed) PRG-RAM size, for Family BASIC
  • PRG-ROM size in exponent-multiplier form, for Galaxian

Banks

  • CPU $6000-$7FFF: Unbanked PRG-RAM, mirrored as necessary to fill entire 8 KiB window, write protectable with an external switch. (Family BASIC only)
  • CPU $8000-$BFFF: First 16 KiB of PRG-ROM.
  • CPU $C000-$FFFF: Last 16 KiB of PRG-ROM (NROM-256) or mirror of $8000-$BFFF (NROM-128).
  • PPU $0000-$1FFF: 8 KiB CHR-ROM.

All banks are fixed.

Solder pad config

  • Vertical arrangement ("Horizontal mirroring") : 'H' disconnected, 'V' connected.
  • Horizontal arrangement ("Vertical mirroring") : 'H' connected, 'V' disconnected.

Registers

None. This normally has no mapping capabilities whatsoever, so the presence of bus conflicts are irrelevant.

Nevertheless, tile animation can be done by swapping between pattern tables $0000 and $1000, using PPUCTRL bits 4-3 as a "poor man's CNROM".

Variants

These board variants do not affect emulation:

  • RROM and SROM use different CHR-ROM pinouts.
  • RTROM and STROM split the PRG-ROM into two 8KiB ROMs.
  • HROM is an early variant without the solder pads - only the horizontal arrangement ("vertical mirroring") is available, as if the 'H' pad were selected.

A few cartridges require NES 2.0 features to accurately specify:

  • Family BASIC contains 2KiB PRG-RAM (or 4KiB PRG-RAM for V3) accessible at $6000-$7FFF and decoded with a 74HC20, that is backed with 2 AA batteries. The cartridge is equipped with a back up switch that, when enabled, disables all access to PRG-RAM in order to prevent possible data corruption when the Famicom is turned on or off. Most emulators will map 8KiB of PRG-RAM to to $6000-$7FFF if the battery flag is set (for iNES compatibility) - the NES 2.0 PRG-RAM size field should be used to denote the exact size.
  • Galaxian uses a smaller 8KiB PRG-ROM chip. iNES dumps of this game are therefore all overdumps. NES 2.0 is capable of specifying this size using the exponent-multiplier form.

Some unlicensed games and modern homebrew programs use mapper 0 with 8KiB of CHR-RAM, which would not be supported on official NROM PCBs without rewiring (BNROM may be a better option for reproduction boards). Most emulators will do the right thing with mapper 0 + CHR-RAM, however.

NROM-368 is a recent invention that allows addressing more PRG-ROM without bankswitching.

See also