SNES. Pinouts.

SNES PINOUTs. Gracias a los chicos del foro de desarrollo del emulador Snes9x por sus aportaciones sobre los pinout de los conectores. El resto de pinouts es una recopilacion y adaptación de varios documentos, especialmente de Lucas Siudym (siudym@pf.pl), con alguna aportación propia.

CONECTORES.

**********************************************************
CONECTOR DE CARTUCHO
(La parte delantera del conector es la parte izquierda del dibujo)

                     +--------+ 
     21.477MHz Clock |  1  32 | /WRAM 
              EXPAND |  2  33 | REFRESH 
                  B6 |  3  34 | B7 
               /PARD |  4  35 | /PAWR 
                     +--------+ 
                 GND |  5  36 | GND 
                 A11 |  6  37 | A12 
                 A10 |  7  38 | A13 
                  A9 |  8  39 | A14 
                  A8 |  9  40 | A15 
                  A7 | 10  41 | A16 
                  A6 | 11  42 | A17 
                  A5 | 12  43 | A18 
                  A4 | 13  44 | A19 
                  A3 | 14  45 | A20 
                  A2 | 15  46 | A21 
                  A1 | 16  47 | A22 
                  A0 | 17  48 | A23 
                /IRQ | 18  49 | /CART 
                  D0 | 19  50 | D4 
                  D1 | 20  51 | D5 
                  D2 | 21  52 | D6 
                  D3 | 22  53 | D7 
                 /RD | 23  54 | /WR 
   CIC out data (p1) | 24  55 | CIC out data (p2) 
    CIC in data (p7) | 25  56 | CIC in clock (p6) 
              /RESET | 26  57 | CPU_CLOCK 
                 Vcc | 27  58 | Vcc 
                     +--------+
                  B0 | 28  59 | B1 
                  B2 | 29  60 | B3 
                  B4 | 30  61 | B5 
   Entrada Audio Izq | 31  62 | Entrada de Audio derecha
                     +--------+

NOTA 1
------
En cartuchos LoROM, el pin A15 no se usa para acceder a la ROM. Esto es debido a que de cada página de 64Kb, sólo se puede acceder a los primeros 32Kb. Los siguientes son los mismos, un mirror. En HiROM si se usa, y se accede a los 64Kb.

NOTA 2
------
Puede que en otros pinouts y documentos veas las lineas /CART y /RD definidas de otra forma.
Esto es porque la manera de acceder a las ROMs en la SNES es un poco confusa y compleja.  Despues de mucho pensarlo, yo lo enfoco así:

/CART está conectado al /OE de la ROM, o al decodificador del cartucho, si lo hubiera.
/RD está conectado al /CE de la ROM.

Según este enfoque, /CART indica que la dirección del bus se refiere al cartucho (a alguna ROM o a la SRAM). Cuando /RD se activa, los chips del cartucho se habilitan y por tanto se lee aquel cuyo /OE esté habilitado. Si sólo hay una ROM, no hay problema, y si hay varias, y/o una SRAM, el decoder se encarga de habilitar el /OE de uno de ellos.

Puede parecer confuso e incluso estúpido, pero Nintendo quiso hacerlo así.
Después de mucho pensar, y de haberlo consultado con otros gurús de la SNES, está me parece la manera más correcta de verlo. Si se profundiza, acaba siendo mas comodo.
Aún así, la mejor manera de entenderlo es echarle tiempo.

**********************************************************
PUERTO DE EXPANSION

                     +--------+ 
                  B0 |  1   2 | B1  
                  B2 |  3   4 | B3 
                  B4 |  5   6 | B5 
                  B6 |  7   8 | B7 
               / BWR |  9  10 | / BRD 
                  D0 | 11  12 | D1 
                  D2 | 13  14 | D3 
                  D4 | 15  16 | D5 
                  D6 | 17  18 | D7 
              /RESET | 19  20 | Vcc 
              SMPCLK | 21  22 | DOTCK 
                 GND | 23  24 | EXPAND 
   Salida Mono Audio | 25  26 | /IRQ 
   Entrada Audio Izq | 27  28 | Entrada de Audio derecha 
                     +--------+ 

 * B0-B7 son las lineas de direccion del Bus B
 * /BRD y /BWR son las lineas de lectura y escritura del Bus B
 * D0-D7 son las lineas del bus de datos
 * EXPAND esta conectado al pad 2 del conector de cartuchos.

**********************************************************
CONECTOR DEL PAD

   _______________
  /1 2 3 |4 5 6 7 |
  \______|________|
 
  1 - GND
  2 - x
  3 - x
  4 - Data
  5 - Latch
  6 - CLK
  7 - 5V

 * Data es un pin de ENTRADA. Es por donde el pad manda a la SNES el estado de los botones.
 * CLK es un pin de SALIDA. Cada vez que la SNES manda un pulso, el pad manda el estado del siguiente botón.
 * Latch es un pin de SALIDA. La SNES manda un pulso por aqui para indicar al pad que debe registrar el estado de los botones, y almacenarlos, para mandarlos posteriormente por la linea Data. Para ello, el pad cuenta con un registro de 16 bits (dos chips 4021). 

*****************************************************************
*****************************************************************
*****************************************************************

MEMORIAS
 
**********************************************************
ROM
**********************************************************
*** ROM de 32 pines ***
Tiene una capacidad máxima de 1Mb (8Mbits)

                       +--  --+
                   A17 |01\/32| +5V
                   A18 |02  31| /OE
                   A15 |03  30| A19
                   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
                       +------+
*** ROM de 36 pines ***
Es igual que la anterior, sólo que añade 4 pines en la parte superior.
Aumenta su capacidad máxima a 4Mb (32Mbits)
                       +--  --+
                   A20 |01\/36| +5V
                   A21 |02  35| A22
                   A17 |03  34| +5V
                   A18 |04  33| /OE
                   A15 |05  32| A19
                   A12 |06  31| A14
                    A7 |07  30| A13
                    A6 |08  29| A8
                    A5 |09  28| A9
                    A4 |10  27| A11
                    A3 |11  26| A16
                    A2 |12  25| A10
                    A1 |13  24| /CE
                    A0 |14  23| D7
                    D0 |15  22| D6
                    D1 |16  21| D5
                    D2 |17  20| D4
                   GND |18  19| D3
                       +------+

/CE está conectado al pin /RD del conector de cartuchos.
/OE está conectado al pin /CART del conector de cartuchos o al decoder.

**********************************************************
SRAM
**********************************************************
*** SRAM de 24 pines. Modelo 6216 ***
Tiene una capacidad de 2Kb
                        __  __
                    A7 |01\/24| +5V
                    A6 |02  23| A8
                    A5 |03  22| A9
                    A4 |04  21| /WE
                    A3 |05  20| /OE
                    A2 |06  19| A10
                    A1 |07  18| /CE
                    A0 |08  17| D7
                    D0 |09  16| D6
                    D1 |10  15| D5
                    D2 |11  14| D4
                   GND |12  13| D3
                        ------

/CE está conectado al decoder
/OE está conectado al /CE de la ROM(*)
/WE está conectado al pin /WR del conector de cartuchos.

(*) Fijate que por tanto, cuando se habilita la ROM, se está dando dando la orden de lectura a la SRAM. Para evitar que se lea la SRAM cuando lo que se quiere es leer la ROM, se debe desabilitar la SRAM poniendo /CE a 5V.


*** SRAM de 28 pines. Modelo 6264 ***
Tiene una capacidad de 8Kb.
                        __  __
                   +5V |01\/28| +5V
                   A12 |02  27| /WE
                    A7 |03  26| RESET
                    A6 |04  25| A8
                    A5 |05  24| A9
                    A4 |06  23| A11
                    A3 |07  22| /OE
                    A2 |08  21| A10
                    A1 |09  20| /CE
                    A0 |10  19| D7
                    D0 |11  18| D6
                    D1 |12  17| D5
                    D2 |13  16| D4
                   GND |14  15| D3
                        ------

/CE está conectado al decoder
/OE está conectado al /CE de la ROM(*)
/WE está conectado al pin /WR del conector de cartuchos.
RESET está conectado al pin RESET del conector de cartuchos.

(*) Fijate que por tanto, cuando se habilita la ROM, se está dando dando la orden de lectura a la SRAM. Para evitar que se lea la SRAM cuando lo que se quiere es leer la ROM, se debe desabilitar la SRAM poniendo /CE a 5V.


*****************************************************************
*****************************************************************
*****************************************************************

DECODERS.

*****************************************************************
MAD-1
*****************************************************************
Es un decoder propietario de Nintendo, que se usa con bastante frecuencia cuando hay SRAM.
Es un chip de encapsulado DIP de 16 pines.
Al parecer, sirve tanto para cartuchos HiRom como LoRom.
Para cartuchos HiRom, el pin #10 se conecta a 5V
Para cartuchos LoRom, el pin #10 se conecta a 5V

El decoder analiza la dirección dada por la SNES, y decide si esta se refiere a una u otra ROM, a la SRAM, o si por el contrario no se refiere a ninguno de ellos. Cuando una dirección va dirijida a uno de los chips del cartucho, ROM o SRAM, el MAD-1 activa su señal de lectura /OE 
Si el cartucho lleva una sola ROM, su señal de lectura es controlada por el pin #4 del MAD-1
Si el cartucho trae 2 ROMs, sus señales de lectura son controladas por los pines #1 y #16.

Un ejemplo de HiROM con una sola ROM :
 *** MAD-1 (HiROM) ***

                            __  __
                        NC |01\/16| NC
                   RAM /CE |02  15| A13
                        NC |03  14| A14
                   ROM /OE |04  13| A21
                       +5V |05  12| A22
                       +5V |06  11| /CART en el conector de cartuchos
                       +5V |07  10| +5V
                       GND |08  09| RESET en el conector de cartuchos 
                            ------

Un ejemplo de LoROM con dos ROMs :
 *** MAD-1 (LoROM) ***

                            __  __
                  ROM2 /OE |01\/16| ROM1 /OE
                   RAM /CE |02  15| pin #40 del conector de cartuchos(*)
                        NC |03  14| A19
                        NC |04  13| A20
                       +5V |05  12| A21
                       +5V |06  11| /CART en el conector de cartuchos
                       +5V |07  10| GND
                       GND |08  09| RESET en el conector de cartuchos 
                            ------

(*) En LoROM, el pin #40 de la SNES no se usa para acceder a la ROM, y se usa para formar direcciones para la SRAM. En HiROM, el pin #40 es el A15

En todo caso, si la SRAM es de 8Kb, el pin #9 tambien va conectado al pin #26 de la SRAM
*****************************************************************

En otras ocasiones, cuando hay más de una ROM, sobretodo si no hay SRAM, se usan otros chips estándares para decoficar las direcciones. Básicamente se usan cuando es fácil discriminar las direcciones que se refieren a una u otra ROM. Pero a veces también se usan en casos más complejos, cuando hay SRAM. 
Estos chips son el 74LS00, el 74LS138 y el 74LS139


*****************************************************************
 74LS00 (cuatro puertas NAND)
*****************************************************************

                        __  __
                    1A |01\/14| +5V
                    1B |02  13| 4B
                    1Y |03  12| 4A
                    2A |04  11| 4Y
                    2B |05  10| 3B
                    2Y |06  09| 3A
                   GND |07  08| 3Y
                        ------

  El numero indica el numero de puerta
  A y B son las entradas
  Y es la salida


*****************************************************************
 74LS139 (dos decodificadores 2 a 4)
*****************************************************************

                            __  __
                        1E |01\/16| +5V
                       1A0 |02  15| 2E
                       1A1 |03  14| 2A0
                       1Y0 |04  13| 2A1
                       1Y1 |05  12| 2Y0
                       1Y2 |06  11| 2Y1
                       1Y3 |07  10| 2Y2
                       GND |08  09| 2Y3
                            ------
  El numero indica el numero del decodificador
  Las A son las entradas
  Las Y son las salidas
  Las E sirven para habilitar los decodificadores

*****************************************************************
 74LS138 (un decodificador 3 a 8)
*****************************************************************

                            __  __
                        A0 |01\/16| +5V
                        A1 |02  15| Y0
                        A2 |03  14| Y1
                       /E1 |04  13| Y2
                       /E2 |05  12| Y3
                        E3 |06  11| Y4
                        Y7 |07  10| Y5
                       GND |08  09| Y6
                            ------

  Las A son las entradas
  Las Y son las salidas
  Las E son para habilitación del decodificador