Presentation

April 21, 2019 · View on GitHub

  _____             __   _____             
 / ____|  /\       /_ | |  __ \            
| (___   /  \ ______| | | |  | | ___   ___ 
 \___ \ / /\ \______| | | |  | |/ _ \ / __|
 ____) / ____ \     | | | |__| | (_) | (__ 
|_____/_/    \_\    |_| |_____/ \___/ \___|
     Version 0.20        by Vitor Vilela

This is a work in progress document.

Date: 2019-04-21 (April 21, 2019)

Presentation

This document is a result from many years researchment and testing. I'm continously updating this document with more information and experiments. The information here is accurate but may be subject to revision.

There is not much information available on how the SA-1 chip works, other than the official Nintendo docs which does not very explain much the chip in details but rather focuses on the functionalities and features available. Therefore there is not much information available over undefined behavior or design details. This document attempts in covering it.

If you find any potential issue and/or have any question about this document, feel free to contact me or contribute though GitHub at https://github.com/VitorVilela7/SNES-SA-1-doc/

Memory Map

S-CPU Side

Banks $00-$3F; $80-$BF

  • $2200-$23FF : with exception of $2300, all open bus when reading. $2200-$22FF are write-only registers.
  • $3000-$37FF : I-RAM
  • $6000-$7FFF : BW-RAM Mirror
  • $8000-FFFF : ROM (\00-$1F: CXB, $20-$3F: DXB, $80-$9F: EXB, A0A0-BF: FXB)

Banks $40-$4F : BW-RAM

  • The SA-1 chip has enough pins for mapping 256 KB (256 * 1024 bytes) of BW-RAM. The rest is mirror.

Banks C0C0-CF : ROM (CXB)

Banks D0D0-DF : ROM (DXB)

Banks E0E0-EF : ROM (EXB)

Banks F0F0-FF : ROM (FXB)

SA-1 Side

Banks $00-$3F; $80-$BF

  • $2200-$23FF : with exception of $2300, all open bus when reading. $2200-$22FF are write-only registers.
  • $3000-$37FF : I-RAM
  • $6000-$7FFF : BW-RAM Mirror
  • $8000-FFFF : ROM (\00-$1F: CXB, $20-$3F: DXB, $80-$9F: EXB, A0A0-BF: FXB)

Banks $40-$5F : BW-RAM

  • The SA-1 chip has enough pins for mapping 256 KB (256 * 1024 bytes) of BW-RAM. The rest is mirror.

Banks $60-$7F : BW-RAM Virtual Memory

  • Allows for packing and unpacking BW-RAM by two or four bits (register $223F)
  • Allows mapping up to 1 MB (4 bit mode) or 512 KB (2 bit mode)

Banks C0C0-CF : ROM (CXB)

Banks D0D0-DF : ROM (DXB)

Banks E0E0-EF : ROM (EXB)

Banks F0F0-FF : ROM (FXB)

ROM

  • Data bus: 16-bit
  • Max size: 64 Mbit (8 MB)
  • Base speed: 5.37 MHz

I-RAM

Bultin SA-1 RAM chip.

  • Data bus: unknown, probably 8-bit.
  • Max size: 16 kbit (2 kB)
  • Base speed: 10.74 MHz

BW-RAM

Static memory.

  • Data bus: 8-bit
  • Max size: 2 Mbit (256 KB)
  • Base speed: 5.37 MHz

Schematics and pin-outs

This is the schematic of the SA-1 cart, based on the SHVC-1L8B-10 board using a customized EPROM board for custom programming. Most of the information here is not complete, however verified with oscilloscope and with a custom ROM for making sure the descriptions are correct.

I have tracked some of the capacitors and resistors as well, however since it is not the main focus of the research nor I have the proper tools for testing them, they are not complete nor accurate and are listed because they had something to do with some of the main pins.

SRAM

CXK581000AM-70LL (SONY)

Orientation: "ball marking" (left->right)

Pin numberConnectionPin nameNote
------South side
1CHIP.104SRAM.NCSRAM.A17 on CXK582000 @ 256 KB
2CHIP.86SRAM.A16
3CHIP.87SRAM.A14
4CHIP.88SRAM.A12
5CHIP.89SRAM.A7
6CHIP.90SRAM.A6
7CHIP.91SRAM.A5
8CHIP.92SRAM.A4
9CHIP.93SRAM.A3
10CHIP.94SRAM.A2
11CHIP.95SRAM.A1
12CHIP.96SRAM.A0
13CHIP.117SRAM.D0
14CHIP.116SRAM.D1
15CHIP.115SRAM.D2
16GNDSRAM.GND
------North side
17CHIP.114SRAM.D3
18CHIP.113SRAM.D4
19CHIP.112SRAM.D5
20CHIP.111SRAM.D6
21CHIP.110SRAM.D7
22MM1026SRAM.CE1_NMM1026 is a circuit responsible for protecting SRAM data and switching power source when needed.
23CHIP.97SRAM.A10
24CHIP.108SRAM.OE_N
25CHIP.98SRAM.A11
26CHIP.99SRAM.A9
27CHIP.102SRAM.A8
28CHIP.103SRAM.A13
29CHIP.109SRAM.WE_N
30WEAK_VBASRAM.CE2Seems to pass though some resistors and MM1026.
31CHIP.105SRAM.A15
32VBASRAM.VCC+3V from battery.

ROM

M27C322 EPROM (ST)

Pin numberConnectionPin name
------South side
1CHIP.77ROM.A18
2CHIP.76ROM.A17
3CHIP.66ROM.A7
4CHIP.65ROM.A6
5CHIP.64ROM.A5
6CHIP.63ROM.A4
7CHIP.62ROM.A3
8CHIP.61ROM.A2
9CHIP.60ROM.A1
10CHIP.59ROM.A0
11GNDROM.EN_N
12GNDROM.GND
13GNDROM.PRG
14CHIP.58ROM.Q0
15CHIP.57ROM.Q8
16CHIP.56ROM.Q1
17CHIP.55ROM.Q9
18CHIP.54ROM.Q2
19CHIP.53ROM.Q10
20CHIP.52ROM.Q3
21CHIP.51ROM.Q11
------North side
22VCCROM.VCC
23CHIP.50ROM.Q4
24CHIP.49ROM.Q12
25CHIP.48ROM.Q5
26CHIP.47ROM.Q13
27CHIP.46ROM.Q6
28CHIP.45ROM.Q14
29CHIP.44ROM.Q7
30CHIP.43ROM.Q15
31GNDROM.GND
32CHIP.79ROM.A20
33CHIP.75ROM.A16
34CHIP.74ROM.A15
35CHIP.73ROM.A14
36CHIP.72ROM.A13
37CHIP.71ROM.A12
38CHIP.70ROM.A11
39CHIP.69ROM.A10
40CHIP.68ROM.A9
41CHIP.67ROM.A8
42CHIP.78ROM.A19

SA-1 cart

Pin numberConnectionPin name
1C12+21477_CLK
2OPENEXPAND
3OPENPA6
4OPEN/PARD
------
5GNDGND
6CHIP.35A11
7CHIP.33A10
8CHIP.31A9
9CHIP.29A8
10CHIP.27A7
11CHIP.25A6
12CHIP.23A5
13CHIP.21A4
14CHIP.19A3
15CHIP.17A2
16CHIP.15A1
17CHIP.13A0
18CHIP.1/IRQ
19CHIP.9D0
20CHIP.7D1
21CHIP.5D2
22CHIP.3D3
23R6->CHIP.128/RD
24CHIP.125CIC_OUT_1
25CHIP.123CIC_IN
26CHIP.120/RESET
27VCCVCC
------
28OPENPA0
29OPENPA2
30OPENPA4
31OPENAUDIO_L
======
62OPENAUDIO_R
61OPENPA5
60OPENPA3
59OPENPA1
------
58VCCVCC
57CHIP.121CPU_CLK
56R5->CHIP.122CIC_CLK
55CHIP.124CIC_OUT_2
54CHIP.126WR_N
53CHIP.2D7
52CHIP.4D6
51CHIP.6D5
50CHIP.8D4
49OPENCART_N
48CHIP.12A23
47CHIP.14A22
46CHIP.16A21
45CHIP.18A20
44CHIP.20A19
43CHIP.22A18
42CHIP.24A17
41CHIP.26A16
40CHIP.28A15
39CHIP.30A14
38CHIP.32A13
37CHIP.34A12
36GNDGND
------
35OPENPAWR_N
34OPENPA7
33CHIP.38, C14REFRESH
32OPENWRAM_N

SA-1 chip

RF5A123 (NINTENDO)

38:26 pin ratio, total 128 pins.

NumberConnectionDescriptionNote
------South side
1CART.18IRQ_N
2CART.53D7
3CART.22D3
4CART.52D6
5CART.21D2
6CART.51D5
7CART.20D1
8CART.50D4
9CART.19D0
10C7+?
11C7- // GND?
12CART.48A23
13CART.17A0
14CART.47A22
15CART.16A1
16CART.46A21
17CART.15A2
18CART.45A20
19CART.14A3
20CART.44A19
21CART.13A4
22CART.43A18
23CART.12A5
24CART.42A17
25CART.11A6
26CART.41A16
27CART.10A7
28CART.40A15
29CART.9A8
30CART.39A14
31CART.8A9
32CART.38A13
33CART.7A10
34CART.37A12
35CART.6A11
36C8+VCC
37C8-GND
38CART.33C14+REFRESH
------East side
39GND
40R3-?Goes though master clock.
41R2-?Goes though master clock.
42GND
43ROM.Q15
44ROM.Q7
45ROM.Q14
46ROM.Q6
47ROM.Q13
48ROM.Q5
49ROM.Q12
50ROM.Q4
51ROM.Q11
52ROM.Q3
53ROM.Q10
54ROM.Q2
55ROM.Q9
56ROM.Q1
57ROM.Q8
58ROM.Q0
59ROM.A0
60ROM.A1
61ROM.A2
62ROM.A3
63ROM.A4
64ROM.A5
------North side
65ROM.A6
66ROM.A7
67ROM.A8
68ROM.A9
69ROM.A10
70ROM.A11
71ROM.A12
72ROM.A13
73ROM.A14
74ROM.A15
75ROM.A16
76ROM.A17
77ROM.A18
78ROM.A19
79ROM.A20
80ROM.A21Unused on this cart.Pin for 8 MB ROMs.
81OPEN?Always gives VCC apparently.
82OPEN?Looks GND? I had trouble here because it was too close to VCC.
83VCC
84GND
85GND?Some boards apparently has it OPEN instead.
86SRAM.A16
87SRAM.A14
88SRAM.A12
89SRAM.A7
90SRAM.A6
91SRAM.A5
92SRAM.A4
93SRAM.A3
94SRAM.A2
95SRAM.A1
96SRAM.A0
97SRAM.A10
98SRAM.A11
99SRAM.A9
100C6+?
101C6-?
102SRAM.A8
------West side
103SRAM.A13
104SRAM.A17$42-$43Extra SRAM pin for 256KB boards.
105SRAM.A15
106SA-1 CLKAlways 10.74 MHzVCC +5V square wave derived from PPU.
107SNES CLK2.68 or 3.58 MHZVCC +5V square wave derived from PPU.
108SRAM.OE_N
109SRAM.WE_N
110SRAM.D7
111SRAM.D6
112SRAM.D5
113SRAM.D4
114SRAM.D3
115SRAM.D2
116SRAM.D1
117SRAM.D0
118C10-
119C10+
120CART.26RESET_N
121CART.57CPU_CLK
122R5->CART.56CIC_CLKPasses though R5.
123CART.25CIC_IN
124CART.55CIC_OUT_2
125CART.24CIC_OUT_1
126CART.54WR_N
127NTSC_NGNDAccording nocash, this is NTSC/PAL select pin.
128R8->CART.23RD_NPasses though R8.

Battery

CR2032

  • VBA
  • GND

Capacitors

Number+-Note
C7CHIP.10CHIP.11 // GND
C8CHIP.37GND
C9VCCGND
C12CART.1R3 // C13+21.477 MHz clock.
C14CART.33CHIP.38REFRESH @ 2.68 MHz

Resistors

NumberEstimated Resistance+-
R2~460k ohmR3CHIP.41
R3~1k ohmC13-CHIP.40
R6~230 ohm??