BNROM

From NESdev Wiki
Revision as of 15:42, 17 March 2014 by Rainwarrior (talk | contribs) (→‎Bank select ($8000-$FFFF): incorporating Disch's suggestion about oversize implementation)
Jump to navigationJump to search

The designation BNROM refers to the Irem cartridge board "Irem I-IM" and to its NES workalike, the Nintendo cartridge board NES-BNROM. These boards were used only for one game: Deadly Towers (Japanese Mashou). The iNES format assigns mapper 34 to BNROM (as well as NINA-001).

Overview

  • PRG ROM size: 128 KB (mapper implementations may support up to 512 KB or 8 MB)
  • PRG ROM bank size: 32 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

Notes:

  • BNROM PRG uses the DIP-28 Nintendo pinout.
  • The bank number at power on is not defined.
  • The 6502's vectors must be present in all banks, along with the NMI, reset, and IRQ handlers.
  • iNES Mapper 034 implementations frequently support either a 4-bit or 8-bit PRG bank select register, allowing up to 512 KB or 8 MB of PRG ROM. This variant may be referred to as BxROM.

Banks

  • CPU $8000-$FFFF: 32 KB switchable PRG ROM 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 xxPP
       ||
       ++- Select 32 KB PRG ROM bank for CPU $8000-$FFFF

While the original BNROM board connects only 2 bits, it is recommended that emulators implement this as an 8-bit register allowing selection of up to 8 MB PRG ROM if present.

Hardware

The BxROM board contains a 74HC161 binary counter used as a quad D latch (4-bit register) to select the current PRG bank.

Variants

The iNES mapper used to implement this mapper also includes three additional registers at $7FFD-$7FFF for emulation of the NINA-001 board (using CHR ROM instead of RAM, as well as supporting 8KB of PRG RAM), which has caused many headaches for NES emulator authors. Emulator developers may consider switching between NINA-001 emulation and BxROM emulation based on the presence of CHR ROM.

AMROM is the same as BNROM except it uses bit 4 of the register to control a single screen mirroring configuration, instead of fixed mirroring.

The upper 2 bank select bits on the 74HC161 were left unconnected. These bits could have been used for an oversize variant of BNROM supporting up to 512 KB of PRG ROM. Some emulators support this oversize variation, as well as the PowerPak since a mapper update in June 2011.

Theoretically the bank select register could be implemented with a 74HC377 octal latch, allowing up to 8 MB of PRG ROM.