NROM: Difference between revisions
Rainwarrior (talk | contribs) (you can use unif_wild with -NROM to exclude CNROM etc. there is always a - preceding NROM in the PCB class (HVC-NROM etc.)) |
(Added other boards, minor fixes. Fun fact: "Fixed H or V, controlled by solder pads" is default infobox mirror-text.) |
||
Line 4: | Line 4: | ||
|company=Nintendo, others | |company=Nintendo, others | ||
|mapper=0 | |mapper=0 | ||
|boards=NROM, HROM, RROM,RTROM, SROM, STROM | |boards=NROM, HROM*, RROM, RTROM, SROM, STROM | ||
|prgmax=16K or 32K | |prgmax=16K or 32K | ||
|prgpage=n/a | |prgpage=n/a | ||
Line 11: | Line 11: | ||
|chrmax=8K | |chrmax=8K | ||
|chrpage=n/a | |chrpage=n/a | ||
|mirroring=Fixed H or V, controlled by solder pads | |mirroring=Fixed H or V, controlled by solder pads (*V only) | ||
|busconflicts=Yes | |busconflicts=Yes | ||
}} | }} | ||
Line 17: | Line 17: | ||
|ines|00|iNES 000 | |ines|00|iNES 000 | ||
|unif_wild|-NROM|NROM | |unif_wild|-NROM|NROM | ||
|unif_wild|-HROM|HROM | |||
|unif_wild|-RROM|RROM | |||
|unif_wild|-RTROM|RTROM | |||
|unif_wild|-SROM|SROM | |||
|unif_wild|-STROM|STROM | |||
}} | }} | ||
Revision as of 05:19, 5 June 2015
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.
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, write-protects WRAM to prevent possible data corruption when 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.
NROM-368 is a recent invention that allows addressing more memory without bank switching.