NROM: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (→‎Variants: two more funny nrom variants (HVC-STROM, HVC-RTROM))
(→‎Variants: update Galaxian link to nescartdb.com)
 
(18 intermediate revisions by 9 users not shown)
Line 1: Line 1:
[[Category:Discrete logic mappers]][[Category:in NesCartDB]]
[[Category:Discrete logic mappers]] [[Category:in NesCartDB]] [[Category:Nintendo licensed mappers]]
The generic designation '''NROM''' refers to the Nintendo cartridge boards NES-NROM-128, NES-NROM-256, their [[Famicom|HVC]] counterparts, and clone boards. The [[iNES]] format assigns [[iNES Mapper 000|mapper 0]] to NROM.
{{Infobox iNES mapper
|name=NROM
|company=Nintendo, others
|mapper=0
|boards=NROM, HROM*, RROM, RTROM, SROM, STROM
|prgmax=16K or 32K
|prgpage=n/a
|wrammax=2K or 4K in Family Basic only
|wrampage=n/a
|chrmax=8K
|chrpage=n/a
|mirroring=Fixed H or V, controlled by solder pads (*V only)
|busconflicts=Yes
}}
{{nesdbbox
|ines|0|iNES 000
|unif_wild|-NROM|NROM
|unif_wild|-HROM|HROM
|unif_wild|-RROM|RROM
|unif_wild|-RTROM|RTROM
|unif_wild|-SROM|SROM
|unif_wild|-STROM|STROM
}}
 
The generic designation '''NROM''' refers to the Nintendo cartridge boards NES-NROM-128, NES-NROM-256, their [[Famicom|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).  


== Overview ==
== Overview ==
* PRG [[ROM]] size: 16 KiB for NROM-128, 32 KiB for NROM-256 (DIP-28 standard [[mask ROM pinout|pinout]])
* PRG [[ROM]] size: 16 KiB for NROM-128, 32 KiB for NROM-256 (DIP-28 standard [[mask ROM pinout|pinout]])
* PRG ROM bank size: Not bankswitched
* PRG ROM bank size: Not bankswitched
* PRG RAM: 8 KB, Not Bankswitched, Only in Family Basic
* PRG RAM: 2 or 4 KiB, not bankswitched, only in Family Basic (but most emulators provide 8)
* CHR capacity: 8 KB ROM (DIP-28 standard pinout), or 8KB RAM in Family Basic
* CHR capacity: 8 KiB ROM (DIP-28 standard pinout) but most emulators support RAM
* CHR bank size: Not bankswitched, see Variants or see [[CNROM]]
* CHR bank size: Not bankswitched, see [[CNROM]]
* Nametable [[mirroring]]: Solder pads select vertical or horizontal mirroring
* Nametable [[mirroring]]: Solder pads select vertical or horizontal mirroring
* Subject to [[bus conflict]]s: Yes
* Subject to [[bus conflict]]s: Yes, but irrelevant


== Banks ==
== Banks ==
All Banks are fixed,
All Banks are fixed,


* CPU $6000-$7FFF: Family Basic only: PRG RAM, mirrored as necessary to fill entire 8 KiB window, write protectable with an external switch
* CPU $8000-$BFFF: First 16 KB of ROM.
* 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).
* CPU $C000-$FFFF: Last 16 KB of ROM (NROM-256) or mirror of $8000-$BFFF (NROM-128).
Line 22: Line 49:


== Registers ==
== Registers ==
None. This has normally no mapping capability whatsoever!  
None. This has normally no mapping capability whatsoever!
 
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]]".
== 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
              -------
 
== EPROM Modifications ==
No modifications nessesary.


== Variants ==
== Variants ==
[[Mask ROM pinout#Variants|RROM and SROM]] are NROM with different CHR ROM pinouts, probably named for the Ricoh and Sharp ROMs used. RTROM and STROM split PRG into two 8KiB ROMs.
[[Mask ROM pinout#Variants|RROM and SROM]] are NROM with different CHR ROM pinouts. RTROM and STROM split PRG into two 8KiB ROMs.
HROM is an early NROM variant without the solder pads to select mirroring, only vertical mirroring available (as if the 'H' pad were selected).
HROM is an early NROM variant without the solder pads to select mirroring, only vertical mirroring available (as if the 'H' pad were selected).


NROM operates identically to a [[CNROM]] with one CHR bank, or [[BNROM]] with CHR ROM and only 32 KB PRG ROM.
Family Basic, released by Nintendo, Sharp, and Hudson, contains 2 KiB WRAM (or 4 KiB WRAM for v3) accessible at $6000-$7FFF and [[PRG RAM circuit|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 WRAM in order to prevent possible data corruption when the Famicom is turned on or off.
 
[https://nescartdb.com/profile/view/1808/galaxian Galaxian] uses a smaller 8KiB PRG ROM chip. iNES images are all therefore overdumps.


Family Basic, released by Nintendo, Sharp, and Hudson, contains 2 KiB WRAM (or 4 KiB WRAM for v3) accessible at $6000-$7FFF and [[PRG RAM circuit|decoded with a 74HC20]], that is backed with 2 AA batteries. The cartridge is equipped with a back up switch that, when enabled, write-protects WRAM to prevent possible data corruption if the Famicom is turned on or off.
Modern homebrew programs sometimes use mapper 0 with 8 KB of CHR RAM, which would not be supported on official NROM PCBs without rewiring. In theory, [[BNROM]] might be a more appropriate choice. But most emulators will do the right thing with a 16K or 32K PRG ROM with mapper 0.


== Disch's Notes ==
[[NROM-368]] is a recent invention that allows addressing more memory without bank switching.
  Here are Disch's original notes:
  ========================
  =  Mapper 000          =
  ========================
 
  aka
  --------------------------
  NROM
  "no mapper"
 
  Example Games:
  --------------------------
  [http://bootgod.dyndns.org:7777/profile.php?id=2314 Ice Climber (J)] (RROM)
  Excitebike
  Balloon Fight
  Super Mario Bros.
 
  Notes:
  --------------------------
  No swapping of any kind.  All slots fixed, mirroring is hardwired, etc.


== See also ==
== See also ==
*[[Programming NROM]]
*[[Programming NROM]]

Latest revision as of 12:51, 4 July 2024

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 mirroring 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).

Overview

  • PRG ROM size: 16 KiB for NROM-128, 32 KiB for NROM-256 (DIP-28 standard pinout)
  • PRG ROM bank size: Not bankswitched
  • PRG RAM: 2 or 4 KiB, not bankswitched, only in Family Basic (but most emulators provide 8)
  • CHR capacity: 8 KiB ROM (DIP-28 standard pinout) but most emulators support RAM
  • CHR bank size: Not bankswitched, see CNROM
  • Nametable mirroring: Solder pads select vertical or horizontal mirroring
  • Subject to bus conflicts: Yes, but irrelevant

Banks

All Banks are fixed,

  • CPU $6000-$7FFF: Family Basic only: PRG RAM, mirrored as necessary to fill entire 8 KiB window, write protectable with an external switch
  • 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. This has normally no mapping capability whatsoever! 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

RROM and SROM are NROM with different CHR ROM pinouts. RTROM and STROM split PRG into two 8KiB ROMs. HROM is an early NROM variant without the solder pads to select mirroring, only vertical mirroring available (as if the 'H' pad were selected).

Family Basic, released by Nintendo, Sharp, and Hudson, contains 2 KiB WRAM (or 4 KiB WRAM 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 WRAM in order to prevent possible data corruption when the Famicom is turned on or off.

Galaxian uses a smaller 8KiB PRG ROM chip. iNES images are all therefore overdumps.

Modern homebrew programs sometimes use mapper 0 with 8 KB of CHR RAM, which would not be supported on official NROM PCBs without rewiring. In theory, BNROM might be a more appropriate choice. But most emulators will do the right thing with a 16K or 32K PRG ROM with mapper 0.

NROM-368 is a recent invention that allows addressing more memory without bank switching.

See also