UxROM
The generic designation UxROM refers to the Nintendo cartridge boards NES-UNROM, NES-UOROM, their HVC counterparts, and clone boards. The iNES format assigns mapper 2 to UxROM.
Overview
- PRG ROM size: 128 KB for UNROM, 256 KB for UOROM (DIP-28/32 Nintendo pinout)
- PRG ROM bank size: 16 KB
- PRG RAM: None
- CHR capacity: 8 KB RAM
- CHR bank size: Not bankswitched
- Nametable mirroring: Solder pads select vertical or horizontal mirroring
- Subject to bus conflicts: Yes
Banks
- CPU $8000-$BFFF: 16 KB switchable PRG ROM bank
- CPU $C000-$FFFF: 16 KB PRG ROM bank, fixed to the last bank
Solder pad config
- Horizontal mirroring : 'H' disconnected, 'V' connected.
- Vertical mirroring : 'H' connected, 'V' disconnected.
Registers
Bank select ($8000-$FFFF)
7 bit 0 ---- ---- xxxx pPPP |||| ++++- Select 16 KB PRG ROM bank for CPU $8000-$BFFF (UNROM uses bits 2-0; UOROM uses bits 3-0)
Hardware
The UNROM and UOROM boards contain a 74HC161 binary counter used as a quad D latch (4-bit register) and a 74HC32 quad OR gate to make one bank always visible.
2A03 address bus A15432 1098 7654 3210 |||| |||| |||| |||| ,---------------------'||| |||| |||| |||| | D3-D0-. ,-------'|| |||| |||| |||| | | . | || |||| |||| |||| | ,-----+--. |`+. || |||| |||| |||| | |Register+-+0 `. || |||| |||| |||| | `--------' | |___ || |||| |||| |||| | | | | ||| || |||| |||| |||| | R/W --' 7-+1 ,' ||| || |||| |||| |||| | | ,' ||| || |||| |||| |||| | |' ||| || |||| |||| |||| | ||| || |||| |||| |||| ,+-------------------+++-++-++++-++++-++++-. |EN A1654 32 1098 7654 3210 | | 128 kilo by 8 bit ROM D7-D0+-- to 2A03 data bus | | `------------------------------------------'
Variants
The mapper used in Codemasters games published by Camerica extends UxROM with CIC defeat circuitry.
In theory, it would be possible to implement the bank select register with a 74373/74374/74377/74573 octal D latch along with an additional 74*32, allowing up to 4 megabytes of PRG ROM, but due to mask ROM cost in the NES era, no non-pirate NES cart used this much memory. The iNES format can't represent a ROM bigger than 2 MiB, so the biggest of these ROMs would have to be in NES 2.0 format.
Another conceivable configuration leaves out the additional 74*32 and provides a separate fixed bank for each set of 16 banks in a way reminiscent of SUROM. For example, when bank 20 is swapped into $8000, bank 31 is swapped into $C000. As with SUROM, this configuration would be useful for making multicarts or other games with multiple distinct engines.