UxROM: Difference between revisions
m (→See also: information about mapper's initial state is inaccurate) |
(Overview overhaul) |
||
Line 1: | Line 1: | ||
[[Category: | {{User:Tepples/Infobox_iNES_mapper | ||
|name=UNROM | |||
|company=Nintendo, others | |||
|mapper=2 | |||
|nescartdbgames=Quite a few | |||
|othermappers=[[iNES Mapper 094|094]], [[iNES Mapper 180|180]] | |||
|complexity=Discrete logic | |||
|boards=UNROM, UOROM | |||
|prgmax=256K | |||
|prgpage=16K + 16K fixed | |||
|busconflicts=Yes | |||
}} | |||
[[Category:Mappers with CHR RAM]][[Category:Mappers with bus conflicts]] | |||
The generic designation UxROM refers to the Nintendo cartridge boards NES-UNROM, NES-UOROM, [[iNES Mapper 094|HVC-UN1ROM]] their [[Famicom|HVC]] counterparts, and clone boards. The most common usage of UxROM compatible boards is assigned by [[iNES]] format to [[iNES Mapper 002|mapper 2]]. A less commonly used mapper that can be implemented by UxROM is assigned to [[iNES Mapper 180|mapper 180]]. | The generic designation UxROM refers to the Nintendo cartridge boards NES-UNROM, NES-UOROM, [[iNES Mapper 094|HVC-UN1ROM]] their [[Famicom|HVC]] counterparts, and clone boards. The most common usage of UxROM compatible boards is assigned by [[iNES]] format to [[iNES Mapper 002|mapper 2]]. A less commonly used mapper that can be implemented by UxROM is assigned to [[iNES Mapper 180|mapper 180]]. | ||
== Banks == | == Banks == |
Revision as of 22:59, 21 April 2015
Company | Nintendo, others |
Games | Quite a few in NesCartDB |
Complexity | Discrete logic |
Boards | UNROM, UOROM |
PRG ROM capacity | 256K |
PRG ROM window | 16K + 16K fixed |
PRG RAM capacity | None |
CHR capacity | {{{chrmax}}}
|
Nametable mirroring | Fixed H or V, controlled by solder pads |
Bus conflicts | Yes |
IRQ | No |
Audio | No |
iNES mappers | 002, 094, 180 |
The generic designation UxROM refers to the Nintendo cartridge boards NES-UNROM, NES-UOROM, HVC-UN1ROM their HVC counterparts, and clone boards. The most common usage of UxROM compatible boards is assigned by iNES format to mapper 2. A less commonly used mapper that can be implemented by UxROM is assigned to mapper 180.
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, UN1ROM, and UOROM boards contain a 74HC161 binary counter used as a quad D latch (4-bit register) and a 74HC32 quad 2-input OR gate to make one bank always visible.
/PRGSEL A14 A13-A0 | | | | | | | D3-D0-. ,------' | | | . | | | ,-----+--. |`+. | | |Register+--+0 `. | | `--------' | |_... | | | | | ||| | | R/W --' 7-+1 ,' ||| | | | ,' ||| | | |' ||| | | ||| | ,+--------------------+++------+-----. |/CE A1654 A13-A0 | | 128K by 8 bit ROM D7-D0+-- to 2A03 data bus | | `------------------------------------'
The quad OR gate here acts as a multiplexer. A 74HC02 quad NOR gate can be used instead if the banks are stored in reverse order in the ROM. If the program is 128 KiB or smaller, the 7402 way leaves one NOR gate free to invert R/W into /OE to avoid bus conflicts.[1]
If an actual multiplexer (74HC157 quad 2:1) is cheaper than an OR gate, a third-party UxROM-compatible board can use that instead of the 74HC32, as kyuusaku suggested.
Variants
The mapper used in Codemasters games published by Camerica extends UxROM with CIC defeat circuitry.
Nintendo's HVC-UN1ROM board moves the bankswitching bits within the byte.
Crazy Climber replaces the 74HC32 quad-OR gate by a 74HC08 quad-AND gate, so that the first bank is fixed at $8000-$bfff and the switchable bank is present at $c000-$ffff. This configuration is assigned to iNES Mapper 180, which uses the same UNROM PCB.
With an 8-bit latch (74HC377 or an additional 74HC161) and an additional 74HC32 to control A18-A21, a third-party board implementing this mapper can switch 4 MiB of PRG ROM.
Battle Kid 2: Mountain of Torment implements a 512kB UxROM mapper.
See also
- Programming UNROM
- Comprehensive NES Mapper Document by \Firebug\, information about mapper's initial state is inaccurate.