SNROM: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (→‎Registers: It must be common practice in French-speaking areas to include an extra space before colons. English doesn't use it.)
Line 40: Line 40:


Both the 'E' bit and the 'R' bit (in standard MMC1 registers) should be clear in order for the PRG RAM to be writable or readable. This bit is more "reliable" on authentic hardware as it is implemented even in older boards with older MMC1's, while the 'R' bit was only introduced later.
Both the 'E' bit and the 'R' bit (in standard MMC1 registers) should be clear in order for the PRG RAM to be writable or readable. This bit is more "reliable" on authentic hardware as it is implemented even in older boards with older MMC1's, while the 'R' bit was only introduced later.
But because the 'E' bit wasn't discovered by the homebrew community until October 2010,[http://nesdev.parodius.com/bbs/viewtopic.php?t=7045] emulators tend not to implement it.


In 4KB CHR bank mode, the <code>E</code> bits in both CHR bank registers must be set to the same value, or the PRG RAM will be enabled and disabled as the PPU renders, in a similar fashion as [[MMC3#Hardware|MMC3]]'s scanline counter. As there is not much of a reason to use 4 KB bankswitching with CHR RAM, it is wise for programs to just set 8 KB bankswitching mode in the [[MMC1#Control (internal, $8000-$9FFF)|Control register]].
In 4KB CHR bank mode, the <code>E</code> bits in both CHR bank registers must be set to the same value, or the PRG RAM will be enabled and disabled as the PPU renders, in a similar fashion as [[MMC3#Hardware|MMC3]]'s scanline counter. As there is not much of a reason to use 4 KB bankswitching with CHR RAM, it is wise for programs to just set 8 KB bankswitching mode in the [[MMC1#Control (internal, $8000-$9FFF)|Control register]].

Revision as of 11:45, 16 October 2010

SNROM (NES-SNROM and HVC-SNROM) is a common board within the SxROM set. Like other SxROM boards, SNROM uses the Nintendo MMC1 ASIC.

Overview

  • PRG ROM size: 128 or 256 KB
  • PRG ROM bank size: 16 KB or 32 KB
  • PRG RAM: 8 KB plus optional battery
  • CHR capacity: 8 KB RAM
  • CHR bank size: 8 KB or 4 KB
  • Nametable mirroring: Controlled by mapper
  • Subject to bus conflicts: No

Solder pad config

  • PRG RAM retaining data : The pad below D2 (named 'SL' in recent revisions) disconected, and with Battery, D1, D2 and R2 present.
  • PRG RAM not retaining data : Leave slots for Battery, D1, D2 and R2 free, and the pad below D2 (also named 'SL' in recent revisions) connected.

Banks

  • CPU $6000-$7FFF: 8 KB PRG RAM bank, fixed
  • CPU $8000-$BFFF: 16 KB PRG ROM bank, either switchable or fixed to the first bank
  • CPU $C000-$FFFF: 16 KB PRG ROM bank, either fixed to the last bank or switchable
  • PPU $0000-$0FFF: 4 KB switchable CHR RAM bank
  • PPU $1000-$1FFF: 4 KB switchable CHR RAM bank

Registers

The behavior of this board differs from that of a typical MMC1 board in the use of the upper CHR address lines:

CHR bank 0 (internal, $A000-$BFFF)

4bit0
-----
ExxxC
|   |
|   +- Select 4 KB CHR RAM bank at PPU $0000 (ignored in 8 KB mode)
+----- PRG RAM disable (0: enable, 1: open bus)

CHR bank 1 (internal, $C000-$DFFF)

4bit0
-----
ExxxC
|   |
|   +- Select 4 KB CHR RAM bank at PPU $1000 (ignored in 8 KB mode)
+----- PRG RAM disable (0: enable, 1: open bus) (ignored in 8 KB mode)

Both the 'E' bit and the 'R' bit (in standard MMC1 registers) should be clear in order for the PRG RAM to be writable or readable. This bit is more "reliable" on authentic hardware as it is implemented even in older boards with older MMC1's, while the 'R' bit was only introduced later. But because the 'E' bit wasn't discovered by the homebrew community until October 2010,[1] emulators tend not to implement it.

In 4KB CHR bank mode, the E bits in both CHR bank registers must be set to the same value, or the PRG RAM will be enabled and disabled as the PPU renders, in a similar fashion as MMC3's scanline counter. As there is not much of a reason to use 4 KB bankswitching with CHR RAM, it is wise for programs to just set 8 KB bankswitching mode in the Control register.

Chips and pinouts

  • PRG ROM - 2 MBits (256 kB x 8) (DIP-32)
                 ---_---
          A17 - |01   32| - +5V
          /CE - |02   31| - +5V
          A15 - |03   30| - +5V
          A12 - |04   29| - A14
          A7  - |05   28| - A13
          A6  - |06   27| - A8 
          A5  - |07   26| - A9
          A4  - |08   25| - A11
          A3  - |09   24| - A16
          A2  - |10   23| - A10
          A1  - |11   22| - /CE
          A0  - |12   21| - D7
          D0  - |13   20| - D6
          D1  - |14   19| - D5
          D2  - |15   18| - D4
         GND  - |16   17| - D3
                 -------

PRG ROMs of 1 MBit (128 kB x 8) comes in a DIP-28 packages are sit 2 rows back (only pins 3 to 30 are used). This pinout is not compatible with stantard 27C020 EPROMs, nor with standard 27C010 EPROMs, so to insert them in the board manual rewiring is needed.

  • CHR RAM - 64 KBits (8 KB x 8) : Standard 6264 pinout.
  • PRG RAM - 64 KBits (8 KB x 8) : Standard 6264 pinout.

See also