Hardware/Serial Interface

From WiiBrew
Jump to navigation Jump to search
Serial Interface
Access
BroadwayFull
StarletFull[check]
Registers
Base0x0d806400
Length0x100
Access size32 bits
Byte orderBig Endian
IRQs
Broadway3
This box: view  talk  edit

The Serial Interface is used to talk to the 4 GameCube controllers ("joypads"), as well as to other devices (such as the GameBoy Advance Link Cable) under supported software.

Registers

Serial Interface Registers
Address Bits Name Description
0x0d006400 32 SIC0OUTBUF SI Channel 0 Output Buffer
0x0d006404 32 SIC0INBUFH SI Channel 0 Input Buffer (High)
0x0d006408 32 SIC0INBUFL SI Channel 0 Input Buffer (Low)
0x0d00640c 32 SIC1OUTBUF SI Channel 1 Output Buffer
0x0d006410 32 SIC1INBUFH SI Channel 1 Input Buffer (High)
0x0d006414 32 SIC1INBUFL SI Channel 1 Input Buffer (Low)
0x0d006418 32 SIC2OUTBUF SI Channel 2 Output Buffer
0x0d00641c 32 SIC2INBUFH SI Channel 2 Input Buffer (High)
0x0d006420 32 SIC2INBUFL SI Channel 2 Input Buffer (Low)
0x0d006424 32 SIC3OUTBUF SI Channel 3 Output Buffer
0x0d006428 32 SIC3INBUFH SI Channel 3 Input Buffer (High)
0x0d00642c 32 SIC3INBUFL SI Channel 3 Input Buffer (Low)
0x0d006430 32 SIPOLL SI Poll Registers
0x0d006434 32 SICOMCSR SI Communication Control Status Register
0x0d006438 32 SISR SI Status Register (channel select & status2)
0x0d00643c 32 SIEXILK SI EXI Clock Lock

SIC0OUTBUF (0x0D006400)
  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Access U R/W
Field CMD
  15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Access R/W R/W
Field OUTPUT0 OUTPUT1

SIC1OUTBUF (0x0D00640c)
  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Access U R/W
Field CMD
  15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Access R/W R/W
Field OUTPUT0 OUTPUT1

SIC2OUTBUF (0x0D006418)
  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Access U R/W
Field CMD
  15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Access R/W R/W
Field OUTPUT0 OUTPUT1

SIC3OUTBUF (0x0D006424)
  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Access U R/W
Field CMD
  15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Access R/W R/W
Field OUTPUT0 OUTPUT1


These registers are double buffered, so main processor writes to the SICxOUTBUF will not interfere with the serial interface output transfer. Internally, a second buffer is used to hold the output data to be transferred across the serial interface. To check if SICxOUTBUF has been transferred to the second buffer, main processor polls the SISR[WRST0] register. When SICxOUTBUF is transferred, SISR[WRST0] is cleared.

Field Description
CMD This byte is the opcode for the command sent to the controller during each command/response packet. This is the first data byte sent from the SI I/F to the game controller in the command/response packet.
OUTPUT0 This is the first data byte of the command packet. It is the second data byte sent from the SI I/F to the game controller in the command/response packet.
OUTPUT1 This is the second data byte of the command packet. It is the third data byte sent from the SI I/F to the game controller in the command/response packet.