NROM: Difference between revisions
mNo edit summary |
(per request at http://nesdev.parodius.com/bbs/viewtopic.php?p=58943#58943) |
||
Line 21: | Line 21: | ||
== Registers == | == Registers == | ||
None. | None. | ||
== Programming considerations == | |||
NROM-128 is [[mirroring|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 [[APU DMC|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 [[Forbidden Four|a multicart engine]] show that most can run with garbage in $8000-$BFFF. | |||
== Hardware == | == Hardware == |
Revision as of 15:46, 24 March 2010
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.