Gnu gcc compiler / assembler from :

http://heliscar.com/greg/gamecube.php

Hardware Register Mapping:

0xCC000000 - Command processor (GP) - cpReg
0xCC001000 - Pixel Engine (GP)- peReg
0xCC002000 - Video Interface
0xCC003000 - HIO - piReg
0xCC004000 - ? - memreg
0xCC005000 - DSP / Audio
0xCC006000 - DVD
0xCC008000 - CPU 2 GP Fifo

Memory mapped at:

0x00000000 - rom (connected via EXI serial interface)
0x80000000 - 0x81800000 Cached
0xC0000000 - 0xC1800000 Uncached
0xE0000000 - ARAM? (Aux. RAM 16mb (SDRAM) for DSP / audio)



Video Interface:

0xCC00201C - XFB 1 (external framebuffer in main ram) should be in the lower 24 MB of ram.
0xCC002024 - XFB 2 (external framebuffer in main ram) should be in the lower 24 MB of ram.
0xCC00202C - Half Line
0xCC00202E - Half Line
0xCC00206C - Even / Odd Field
0xCC002850 - Interlace

-> conversion:


Y = (77/256)R´ + (150/256)G´ + (29/256)B'
Cb = -(44/256)R´ - (87/256)G´ + (131/256)B´ + 128
Cr = (131/256)R´ - (110/256)G´ - (21/256)B´ + 128

R´ = Y + 1.371(Cr - 128)
G´ = Y - 0.698(Cr - 128) - 0.336(Cb - 128)
B´ = Y + 1.732(Cb - 128)


DVD:

0xCC006008 - Set dvd cmd.
0xCC006
00C - Param 1.
0xCC00
6010  - Param 2.
0xCC00
6014  - Param 3.
0xCC006018  - Counter reg.
0xCC00601C - Number of params and start dvd cmd.


DVD commands:
0xAB00 - DVD Seek(offset)
0xA800 - DVD Read(offset, size, mem_addr)
0xE300 - DVD Stop(void)


MISC:

hotreset:
lis r3,0
lis r9,0xCC00
sth r3, 0x2000(r9)
li r4, 3
stw r4, 0x3024(r9)
stw r3, 0x3024(r9)
nop
loop__: b loop__
 

Email me at: duke@napalm-x.com if you have something to add.