› Foros › Retro y descatalogado › GameCube
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
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.
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.
(*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)
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.