NROM

From NESdev Wiki
Revision as of 15:46, 24 March 2010 by Tepples (talk | contribs) (per request at http://nesdev.parodius.com/bbs/viewtopic.php?p=58943#58943)
Jump to navigationJump to search

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.

Overview

  • PRG ROM size: 16 KB for NROM-128, 32 KB for NROM-256 (DIP-28 standard pinout)
  • PRG ROM bank size: Not bankswitched
  • PRG RAM: None
  • CHR capacity: 8 KB ROM (DIP-28 standard pinout)
  • CHR bank size: Not bankswitched
  • Nametable mirroring: Solder pads select vertical or horizontal mirroring
  • Subject to bus conflicts: Yes

Banks

  • CPU $8000-$BFFF: First 16 KB of ROM
  • CPU $C000-$FFFF: Last 16 KB of ROM (NROM-256) or mirror of $8000-$BFFF (NROM-128)

Solder pad config

  • Horizontal mirroring : 'H' disconnected, 'V' connected.
  • Vertical mirroring : 'H' connected, 'V' disconnected.

Registers

None.

Programming considerations

NROM-128 is mapped into both $C000-$FFFF and $8000-$BFFF. Most games actually run in $C000-$FFFF rather than $8000-$BFFF because it makes the program easier to assemble and link. Some kinds of data used by the NES CPU, such as the vectors and sampled sound, have to be in $C000-$FFFF, and it simplifies the linker script if everything is in the same memory region. There are probably a few games that rely on the mirroring, but experiments with a multicart engine show that most can run with garbage in $8000-$BFFF.

Hardware

PRG ROM 256 kBit (32 KB x 8) (DIP-28) :

              ---_---
       +5V - |01   28| - +5V
       A12 - |02   27| - A14 (VCC on NROM-128)
       A7  - |03   26| - A13
       A6  - |04   25| - A8
       A5  - |05   24| - A9
       A4  - |06   23| - A11
       A3  - |07   22| - /OE (/ROMSEL)
       A2  - |08   21| - A10
       A1  - |09   20| - /CE (GND)
       A0  - |10   19| - D7
       D0  - |11   18| - D6
       D1  - |12   17| - D5
       D2  - |13   16| - D4
       GND - |14   15| - D3
              -------

CHR ROM 64 kBit (8 KB x 8) (DIP-28) :

              ---_---
       +5V - |01   28| - +5V
       A12 - |02   27| - VCC
       A7  - |03   26| - NC
       A6  - |04   25| - A8
       A5  - |05   24| - A9
       A4  - |06   23| - A11
       A3  - |07   22| - /OE (CHR /RD)
       A2  - |08   21| - A10
       A1  - |09   20| - /CE (CHR A13)
       A0  - |10   19| - D7
       D0  - |11   18| - D6
       D1  - |12   17| - D5
       D2  - |13   16| - D4
       GND - |14   15| - D3
              -------

RROM and SROM are NROM with different shuffled CHR ROM pinouts. HROM is an early NROM variant without the solder pads to select mirroring, only vertical mirroring available (as if the 'H' pad were selected).

EPROM Modifications

No modifications nessesary.

Variants

NROM operates identically to a CNROM with one CHR bank.

Family Basic, released by Nintendo, Sharp, and Hudson, contains 8 KB WRAM accessible at $6000-$7FFF, that is (whole or partially?) backed with 2 AA batteries. The cartridge is equipped with a back up switch that, when enabled, write-protects WRAM area $6000-$6FFF to prevent possible data corruption if the Famicom is turned on or off.