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.
0xCC00600C - Param 1.
0xCC006010 - Param 2.
0xCC006014 - 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.