UxROM: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(→‎Variants: See also programming guide)
Line 30: Line 30:
== Hardware ==
== Hardware ==
The [[UNROM]] and [[UOROM]] boards contain a [[74161|74HC161]] binary counter used as a quad D latch (4-bit register) and a [[7432|74HC32]] quad OR gate to make one bank always visible.
The [[UNROM]] and [[UOROM]] boards contain a [[74161|74HC161]] binary counter used as a quad D latch (4-bit register) and a [[7432|74HC32]] quad OR gate to make one bank always visible.
<pre>
      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
      |                                          |
      `------------------------------------------'
</pre>


== Variants ==
== Variants ==

Revision as of 00:17, 7 August 2009

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.

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. This would be useful for making multicarts.

See also