MMC1 pinout: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (switch to using CPU/PRG and PPU/CHR for extra clarity)
m (add S[EH].?ROM pinout difference. describe board variation in words too)
Line 25: Line 25:
As with many other ASIC mappers, parts of the pinout are often repurposed:
As with many other ASIC mappers, parts of the pinout are often repurposed:


SNROM:
SEROM, SHROM, SH1ROM: only supports 32kiB at a time banking
                .--\/--.
          '''n/c''' <- |01  24|  - +5V
  PRG A15 (r) <- |02  23| <- M2 (n)
        '''CPU A14 (n) -> PRG A14 (r)'''
 
SNROM: loses CHR banking for a PRG-RAM disable
           '''n/c''' <- |08  17| <- CPU R/W  
           '''n/c''' <- |08  17| <- CPU R/W  
           '''n/c''' <- |09  16| -> CIRAM A10 (n)
           '''n/c''' <- |09  16| -> CIRAM A10 (n)
Line 33: Line 40:
                   `------'
                   `------'


SOROM:
SOROM: loses CHR banking for PRG-RAM banking
           '''n/c''' <- |08  17| <- CPU R/W  
           '''n/c''' <- |08  17| <- CPU R/W  
           '''n/c''' <- |09  16| -> CIRAM A10 (n)
           '''n/c''' <- |09  16| -> CIRAM A10 (n)
Line 42: Line 49:
SOROM is actually implemented using the WRAMs' /CE inputs and an inverter to select only one RAM at a time.
SOROM is actually implemented using the WRAMs' /CE inputs and an inverter to select only one RAM at a time.


SUROM:
SUROM: loses CHR banking for PRG-ROM banking
           '''n/c''' <- |08  17| <- CPU R/W  
           '''n/c''' <- |08  17| <- CPU R/W  
           '''n/c''' <- |09  16| -> CIRAM A10 (n)
           '''n/c''' <- |09  16| -> CIRAM A10 (n)
Line 50: Line 57:
                   `------'
                   `------'


SXROM:
SXROM: loses CHR banking for PRG-ROM and PRG-RAM banking
           '''n/c''' <- |08  17| <- CPU R/W  
           '''n/c''' <- |08  17| <- CPU R/W  
   '''WRAM A14 (w)''' <- |09  16| -> CIRAM A10 (n)
   '''WRAM A14 (w)''' <- |09  16| -> CIRAM A10 (n)

Revision as of 22:35, 19 August 2012

MMC1 Chip: (24 pin shrink-DIP)

Comes in several varieties: 'MMC1', 'MMC1A', and 'MMC1B2'

                .--\/--.
 PRG A14 (r) <- |01  24|  - +5V
 PRG A15 (r) <- |02  23| <- M2 (n)
 PRG A16 (r) <- |03  22| <- CPU A13 (s)
 PRG A17 (r) <- |04  21| <- CPU A14 (n)
 PRG /CE (r) <- |05  20| <- /ROMSEL (n)
 WRAM CE (w) <- |06  19| <- CPU D7 (s)
 CHR A12 (r) <- |07  18| <- CPU D0 (s)
 CHR A13 (r) <- |08  17| <- CPU R/W 
 CHR A14 (r) <- |09  16| -> CIRAM A10 (n)
 CHR A15 (r) <- |10  15| <- PPU A12 (n)
 CHR A16 (r) <- |11  14| <- PPU A11 (s)
         GND  - |12  13| <- PPU A10 (s)
                `------'

(r) - this pin connects to the ROM chips only
(n) - this pin connects to the NES connector only
(s) - this pin is shared with the NES connector and ROM chips
(w) - this pin connects to the WRAM only

As with many other ASIC mappers, parts of the pinout are often repurposed:

SEROM, SHROM, SH1ROM: only supports 32kiB at a time banking

                .--\/--.
         n/c <- |01  24|  - +5V
 PRG A15 (r) <- |02  23| <- M2 (n)

       CPU A14 (n) -> PRG A14 (r)

SNROM: loses CHR banking for a PRG-RAM disable

          n/c <- |08  17| <- CPU R/W 
          n/c <- |09  16| -> CIRAM A10 (n)
          n/c <- |10  15| <- PPU A12 (n)
 WRAM /CE (w) <- |11  14| <- PPU A11 (s)
          GND  - |12  13| <- PPU A10 (s)
                 `------'

SOROM: loses CHR banking for PRG-RAM banking

          n/c <- |08  17| <- CPU R/W 
          n/c <- |09  16| -> CIRAM A10 (n)
 WRAM A14 (w) <- |10  15| <- PPU A12 (n)
          n/c <- |11  14| <- PPU A11 (s)
          GND  - |12  13| <- PPU A10 (s)
                 `------'

SOROM is actually implemented using the WRAMs' /CE inputs and an inverter to select only one RAM at a time.

SUROM: loses CHR banking for PRG-ROM banking

          n/c <- |08  17| <- CPU R/W 
          n/c <- |09  16| -> CIRAM A10 (n)
          n/c <- |10  15| <- PPU A12 (n)
  PRG A18 (r) <- |11  14| <- PPU A11 (s)
          GND  - |12  13| <- PPU A10 (s)
                 `------'

SXROM: loses CHR banking for PRG-ROM and PRG-RAM banking

          n/c <- |08  17| <- CPU R/W 
 WRAM A14 (w) <- |09  16| -> CIRAM A10 (n)
 WRAM A15 (w) <- |10  15| <- PPU A12 (n)
  PRG A18 (r) <- |11  14| <- PPU A11 (s)
          GND  - |12  13| <- PPU A10 (s)
                 `------'

Since the PPU A12 input's only purpose is to switch the CHR A12 .. A16 outputs, it's not clear why Nintendo didn't tie the MMC1's PPU A12 input low and connect CHR RAM A12 directly to the cartridge edge.