Pregunta de cómo funcionan los chips que modifican el arranque de la Game Cube

Buenas compañeros, tengo unas pequeñas dudas del sistema de arranque de la Game Cube y como hacen los chips como el picoboot para modificar el arranque de la consola, por lo que he leído la BIOS de la consola se almacena en un pequeño chip rom que está al lado del chip gráfico ATI, por lo que se la consola al arrancar lee el archivo IPL.bin de esta ROM y la carga mostrando la animación durante el arranque.
Lo que me gustaría saber es que funcion tienen los cables de por el ejemplo en el rapsberry pi, se que el negro y el rojo son los de alimentación, pero los otros 3 no se que funcion tienen a menos que sean la de parchear el IPL.bin al vuelo.
Un saludo.
const uint PIN_LED = 25; // Status LED
const uint PIN_DATA_BASE = 6; // Base pin used for output, 4 consecutive pins are used
const uint PIN_CS = 4; // U10 chip select
const uint PIN_CLK = 5; // EXI bus clock line


https://github.com/webhdx/PicoBoot/blob ... picoboot.c

Viendo el código y el diagrama de instalación:
https://raw.githubusercontent.com/webhd ... iagram.jpg

Supongo que lo que hace es detectar que la consola se inicia e injectar el ipl al bus EXI, es decir la PiPico se utiliza para hacer bitbanging del protocolo del bus EXI.

No tengo ni idea de como funciona este bus, si hay algún tipo de handshaking o cifrado o algo para hacerlo más difícil, en gc-forever me suena que hay unos cuantos hilos de cuando se estuvo investigando esto hace unos años.

Pero vamos, todo esto no deja de ser un "supositorio" mío con solo haberle echado un "ojete" al código.
wah_wah_69 escribió:
const uint PIN_LED = 25; // Status LED
const uint PIN_DATA_BASE = 6; // Base pin used for output, 4 consecutive pins are used
const uint PIN_CS = 4; // U10 chip select
const uint PIN_CLK = 5; // EXI bus clock line


https://github.com/webhdx/PicoBoot/blob ... picoboot.c

Viendo el código y el diagrama de instalación:
https://raw.githubusercontent.com/webhd ... iagram.jpg

Supongo que lo que hace es detectar que la consola se inicia e injectar el ipl al bus EXI, es decir la PiPico se utiliza para hacer bitbanging del protocolo del bus EXI.

No tengo ni idea de como funciona este bus, si hay algún tipo de handshaking o cifrado o algo para hacerlo más difícil, en gc-forever me suena que hay unos cuantos hilos de cuando se estuvo investigando esto hace unos años.

Pero vamos, todo esto no deja de ser un "supositorio" mío con solo haberle echado un "ojete" al código.

El bus EXI me suena que es el bus que conecta todos los componentes con el chip que contiene la BIOS, yo tampoco recuerdo si el IPL.bin venía cifrado o no, me parece que sí y se descifraba en algún componente del sistema, consiguieron acceso a este componente y dieron con la clave para inyectar el IPL.bin desde una fuente externa al integrado y así cargar la BIOS modificada, por lo menos creo recordar que era así.
Un saludo.
Psmaniaco escribió:
wah_wah_69 escribió:
const uint PIN_LED = 25; // Status LED
const uint PIN_DATA_BASE = 6; // Base pin used for output, 4 consecutive pins are used
const uint PIN_CS = 4; // U10 chip select
const uint PIN_CLK = 5; // EXI bus clock line


https://github.com/webhdx/PicoBoot/blob ... picoboot.c

Viendo el código y el diagrama de instalación:
https://raw.githubusercontent.com/webhd ... iagram.jpg

Supongo que lo que hace es detectar que la consola se inicia e injectar el ipl al bus EXI, es decir la PiPico se utiliza para hacer bitbanging del protocolo del bus EXI.

No tengo ni idea de como funciona este bus, si hay algún tipo de handshaking o cifrado o algo para hacerlo más difícil, en gc-forever me suena que hay unos cuantos hilos de cuando se estuvo investigando esto hace unos años.

Pero vamos, todo esto no deja de ser un "supositorio" mío con solo haberle echado un "ojete" al código.

El bus EXI me suena que es el bus que conecta todos los componentes con el chip que contiene la BIOS, yo tampoco recuerdo si el IPL.bin venía cifrado o no, me parece que sí y se descifraba en algún componente del sistema, consiguieron acceso a este componente y dieron con la clave para inyectar el IPL.bin desde una fuente externa al integrado y así cargar la BIOS modificada, por lo menos creo recordar que era así.
Un saludo.


Sí, leyendo este otro documento:

(*1) This bit disables access to the IPL Mask ROM attached to CS1. Once this bit is enabled, it can only be disabled again by global reset. The ROM de-scramble logic will become disabled and any reads to the memory mapped ROM area will return all 0.When de-scrambler is enabled all EXI0 data will be de-scrambled, so only the IPL ROM may be accessed through EXI0 until ROMDIS is set to `1'. (this is usually done by the Bootstrap, see Boot process details)


https://www.gc-forever.com/yagcd/chap5.html#sec5.9

Veo que menciona algo sobre "de-scrambling" por lo que entiendo que sea lo que sea que inyecte el picboot se incluirá "scrambled", es decir no es el texto plano del binario que se va a ejecutar al final, pero tampoco es cifrado simplemente es una transormación que se hace para "normalizar" los datos a transmitir.

Esto en cuanto a la transferencia por el bus, que parece ser que es lo que hace el picoboot, es posible que luego en todo el proceso de bootstrapping del Gekko haya algo de código cifrad. La verdad es que no tengo ni idea, algo leí hace años pero ahora no recuerdo nada, puede que en esta wiki que he puesto más arriba o en otra parte de la web haya más info al respecto.
wah_wah_69 escribió:
Psmaniaco escribió:
wah_wah_69 escribió:
https://github.com/webhdx/PicoBoot/blob ... picoboot.c

Viendo el código y el diagrama de instalación:
https://raw.githubusercontent.com/webhd ... iagram.jpg

Supongo que lo que hace es detectar que la consola se inicia e injectar el ipl al bus EXI, es decir la PiPico se utiliza para hacer bitbanging del protocolo del bus EXI.

No tengo ni idea de como funciona este bus, si hay algún tipo de handshaking o cifrado o algo para hacerlo más difícil, en gc-forever me suena que hay unos cuantos hilos de cuando se estuvo investigando esto hace unos años.

Pero vamos, todo esto no deja de ser un "supositorio" mío con solo haberle echado un "ojete" al código.

El bus EXI me suena que es el bus que conecta todos los componentes con el chip que contiene la BIOS, yo tampoco recuerdo si el IPL.bin venía cifrado o no, me parece que sí y se descifraba en algún componente del sistema, consiguieron acceso a este componente y dieron con la clave para inyectar el IPL.bin desde una fuente externa al integrado y así cargar la BIOS modificada, por lo menos creo recordar que era así.
Un saludo.


Sí, leyendo este otro documento:

(*1) This bit disables access to the IPL Mask ROM attached to CS1. Once this bit is enabled, it can only be disabled again by global reset. The ROM de-scramble logic will become disabled and any reads to the memory mapped ROM area will return all 0.When de-scrambler is enabled all EXI0 data will be de-scrambled, so only the IPL ROM may be accessed through EXI0 until ROMDIS is set to `1'. (this is usually done by the Bootstrap, see Boot process details)


https://www.gc-forever.com/yagcd/chap5.html#sec5.9

Veo que menciona algo sobre "de-scrambling" por lo que entiendo que sea lo que sea que inyecte el picboot se incluirá "scrambled", es decir no es el texto plano del binario que se va a ejecutar al final, pero tampoco es cifrado simplemente es una transormación que se hace para "normalizar" los datos a transmitir.

Esto en cuanto a la transferencia por el bus, que parece ser que es lo que hace el picoboot, es posible que luego en todo el proceso de bootstrapping del Gekko haya algo de código cifrad. La verdad es que no tengo ni idea, algo leí hace años pero ahora no recuerdo nada, puede que en esta wiki que he puesto más arriba o en otra parte de la web haya más info al respecto.

Si, saque la informacion de esa pagina hace tiempo, no me acordaba de donde era, por eso lo dije de memoria mas o menos lo que recordaba, son añoranzas de hackearla en su dia XD
Un saludo.
4 respuestas