Front SD Elf Loader

Pues al parecer han sacado un Elf Loader.

No he podido probarlo (toy currando) pero segun leo en el Readme, hay que crear una carpeta ELF en la raiz la de la SD y este Elf te permite cargar los elf. Mas o menos como el SDLoader de GameCube

AQUI

Pego aqui el Readme

ElfLoader escribió:Just a small Front SD ELF loader with a menu
Written by svpe, #wiidev@efnet, svpe@gmx.net

Create a elf directory on your SD card and put all your ELF files in there.
You can load the main file with a trucha disc or the twilight hack.

The miniloader is just a quick hack to make this work with trucha discs because
the apploader i used didn't seem to support a non-standard entry point.

Just type make to compile (Hint: a precompiled binary is included.)

There are probably still some bugs so don't blame me if something goes wrong.

See COPYING for the license (GNU GPL 2; and _only_ version 2)

Credits:
Internal SD stuff by bushing, marcan and maybe some more people. I just reversed the twilight hack elf loader.
FatFs by elm-chan.org
ELF loading code taken from geckoloader by dhewg, #wiidev at efnet. Written by dhewg, tmbinc and William L. Pitts
People from #wiidev who helped me with a few problems ;)
This application is NOT PAL-friendly


malditos :-P
CyBeR PeReZ escribió:This application is NOT PAL-friendly


malditos :-P


Sip... pero creo que no hay problema, las aplicaciones existentes hasta ahora son todas NTSC, cierto? o me equivoco?

Cuando llegue a casa lo probaré... a ver si funciona.

EDITO:

De todas maneras tenemos el fuente... y segun veo en el main.c:

int main(int argc, char **argv) {
u32 level;

VIDEO_Init();
rmode = &TVNtsc480IntDf;

PAD_Init();

xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);

VIDEO_Configure(rmode);
VIDEO_SetNextFramebuffer(xfb);
VIDEO_SetBlack(FALSE);
VIDEO_Flush();
VIDEO_WaitVSync();

if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();

printf("\n\nloading\n");
VIDEO_WaitVSync();
void (*ep)() = (void(*)())load_dol_image(loader_dol);
printf("jumping to 0x%08X\n", (unsigned int)ep);

__IOS_ShutdownSubsystems();
_CPU_ISR_Disable (level);
__exception_closeall ();
printf("__exception_closeall() done. Jumping to ep now...\n");
ep();
_CPU_ISR_Restore (level);

return 0; // fixes gcc warning
}
A ver si conseguís que rule en PAL, que así podré probar el hack del zelda sin el sd gecko, que no lo tengo xD.
pero aun y asi puedes probarlo solo que con un unico .elf en la SD eso lo que creo que hace es poder meter varios elf y seleccionar uno para que arranque no?
TalesdeMilet escribió:A ver si conseguís que rule en PAL, que así podré probar el hack del zelda sin el sd gecko, que no lo tengo xD.


Lo puedes probar sin el sd gecko, desde la ultima actualizacion del hack del Zleda se tiene acceso a la sd frontal de la wii y se ejecuta el homebrew desde ahi.
lo que hace el programa este es pillar un.elf de la carpeta copiarlo como boot.elf en la raiz y ejecutarlo?
Netto escribió:pero aun y asi puedes probarlo solo que con un unico .elf en la SD eso lo que creo que hace es poder meter varios elf y seleccionar uno para que arranque no?


Si, se entiende que el funcionamiento es ese
lo que no logro a pillar es de donde sale la instruccion que permite el SD frontal X_X
Netto escribió:lo que no logro a pillar es de donde sale la instruccion que permite el SD frontal X_X


Yo tampoco, pero si sabes algo de programación échale un vistazo a los fuentes que estan incluidos en el comprimido...
el que llegue primero a su casa que lo pruebe jeje, yo hoy no podre [mamaaaaa]
No he dicho nada xDD

Voy a mirar lo que hay aqui a ver.

Por lo que veo en la V.0.2 ya han puesto un detector de video.

#include
#include

#include "dol.h"
#include "processor.h"
#include "asm.h"

static void *xfb = NULL;
static GXRModeObj *rmode = NULL;

extern u8 loader_dol[];

extern void __exception_closeall();
extern s32 __IOS_ShutdownSubsystems();

int main(int argc, char **argv) {
u32 level;

VIDEO_Init();
switch(VIDEO_GetCurrentTvMode()) {
case VI_NTSC:
rmode = &TVNtsc480IntDf;
break;
case VI_PAL:
rmode = &TVPal528IntDf;
break;
case VI_MPAL:
rmode = &TVMpal480IntDf;
break;
default:
rmode = &TVNtsc480IntDf;
break;
}

PAD_Init();

xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);

VIDEO_Configure(rmode);
VIDEO_SetNextFramebuffer(xfb);
VIDEO_SetBlack(FALSE);
VIDEO_Flush();
VIDEO_WaitVSync();

if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();

printf("\n\nloading\n");
VIDEO_WaitVSync();
void (*ep)() = (void(*)())load_dol_image(loader_dol);
printf("jumping to 0x%08X\n", (unsigned int)ep);

__IOS_ShutdownSubsystems();
_CPU_ISR_Disable (level);
__exception_closeall ();
printf("__exception_closeall() done. Jumping to ep now...\n");
ep();
_CPU_ISR_Restore (level);

return 0; // fixes gcc warning
}

Probado y funciona perfectamente.
largoguns, pon el codigo entero de la version 0.1 y comparemos todo el codigo plis a ver si hay .h añadidos.

Bien, he conseguido con un poco de ayuda ver donde estaba la instruccion de la SD frontal.

estan en la carpeta loader/source/ sdio.c sdio.h

Y para lo del fat en tff.c tff.h
Ostras!!! Que alguien que lo haya probado nos cuente!!!

¿Se pueden meter varios .elf sin renombrar entonces a boot.elf? Que nos cuenten!!!! jajajajajaj [angelito]

Como va la scene macho en la Wii!!! XD
dadme 5 minutos que lo pruebo
dj_king232 escribió:Ostras!!! Que alguien que lo haya probado nos cuente!!!

¿Se pueden meter varios .elf sin renombrar entonces a boot.elf? Que nos cuenten!!!! jajajajajaj [angelito]

Como va la scene macho en la Wii!!! XD


Tienes que renombrar el loader elf a boot.elf para que lo lea el hack del zelda, pero los elfs que quieras meter no tienes que renombrarlos, sólo crear una carpeta en la sd llamada elf y dentro todos los elf que kieras, se ejecuta el elf loader, te dice que pulses a (mando gamecube) 2 veces y te sale la lista de elfs que tienes en la carpeta, eliges el que quieres y se ejecuta.
exactamente es asi de facil.

Ahora solo hace falta meterle un menu como dios manda.

Eso sera a partir de Gotoxy y ponerle un background no?

Como es la instruccion de cargar una imagen de fondo a un c?
Mola mola mola!!! [carcajad] Viva la Wiiiii :Ð
funciona perfectamente ya no hay que probar uno a uno las cosillas
Ahora faltaria optimizar el hack para que no tuvieras que mantener el boton esos 5 segundos y implementar de una vez el canal hombrew, estoy e meter el disco de zelda hasta los xDDDD
Bueno, esta tarde intentaré modificar el source a ver si puedo hacer algo de interfaz gráfica. No puedo garantizar mucho pero se intentará ;)
poco a poco, paso a paso [angelito]

asi es mucho mas comodo el cargar cualkier elf ^^

cuando ya ejecutas un elf? puedes salir de este y ejecutar otro? por ejemplo el tetris, luego salir del tetris y meter otro?
¬¬¬¬¬¬¬¬¬¬ escribió:poco a poco, paso a paso [angelito]

asi es mucho mas comodo el cargar cualkier elf ^^

cuando ya ejecutas un elf? puedes salir de este y ejecutar otro? por ejemplo el tetris, luego salir del tetris y meter otro?


No estoy seguro de que se pueda.... no indica nada de eso en el Leeme.
De todas maneras eso sería una opción del elf que cargues, que te permita volver a ejecutar el loader que lo ha cargado...
largoguns escribió:
No estoy seguro de que se pueda.... no indica nada de eso en el Leeme.
De todas maneras eso sería una opción del elf que cargues, que te permita volver a ejecutar el loader que lo ha cargado...


No se puede salir de uno y ejecutar otro.
Funciona, pero sería de agradecer una función de reload elf al pulsar algo como en el tetris (se reloadearía el sdload.elf)
JavierEA escribió:Funciona, pero sería de agradecer una función de reload elf al pulsar algo como en el tetris (se reloadearía el sdload.elf)


El tetris tiene funcion de reload? No tenia ni idea
La cuestión es como está programado ese reload, es decir, que elf se recargaría.
largoguns escribió:

La cuestión es como está programado ese reload,


Pulsando L, R, Start o en el menú pulsando "reload"
largoguns escribió:
El tetris tiene funcion de reload? No tenia ni idea
La cuestión es como está programado ese reload, es decir, que elf se recargaría.


Sería cuestión de dejar en memoria ese reload del boot.elf, entonces cuando haya combinación se carga boot.elf... Yo no tengo conocimientos para hacerlo, pero ahí está el código fuente xD
DESCUBRIMIENTO


Si utilizas el reload en el tetris, te lleva al menú del sdloader ;)
JavierEA escribió:DESCUBRIMIENTO


Si utilizas el reload en el tetris, te lleva al menú del sdloader ;)


KE BUENO!!!
Ahora solo toca que el GenPlus use la misma funcion de reload que el tetris... y claro, que las demas apps que vayan saliendo la implementen.

ESTO AVANZA!!!
Os funciona a alguno en consolas PAL? es qeu a mi no me funciona nada ni el tetris , ni el gc-linux ni este elf .Primero formateo la SD en Windows en FAT,la pongo Tamaño de asignacion predeterminado,le pongo de etiqueta nada. despues copio el elf y le renombro a boot .elf ,despues lo llevo a la consola cargo el zelda ,el hack y lee un poco y se queda tirado no carga el programa, puede ser por la SD?

Saludos
RoberSolid escribió:Os funciona a alguno en consolas PAL? es qeu a mi no me funciona nada ni el tetris , ni el gc-linux ni este elf .Primero formateo la SD en Windows en FAT,la pongo Tamaño de asignacion predeterminado,le pongo de etiqueta nada. despues copio el elf y le renombro a boot .elf ,despues lo llevo a la consola cargo el zelda ,el hack y lee un poco y se queda tirado no carga el programa, puede ser por la SD?


segun tengo entendido, esta version solo es para NTSC, asi que es normal que no te vaya. seguramente la proxima version ya soporte PAL
Debes formatearla en FAT16, quizás sea eso, aunque es raro que lea y luego se cuelgue
Pues el código parece fácil para lo que es
JavierEA escribió:DESCUBRIMIENTO


Si utilizas el reload en el tetris, te lleva al menú del sdloader ;)


Eso significa que llama directamente a boot.elf ¿Dónde está el código fuente del Tetris ese?
papixulooo escribió:
Eso significa que llama directamente a boot.elf ¿Dónde está el código fuente del Tetris ese?



toma bajalo de su pagina

http://www.auby.no/wiki/index.php?title=Main_Page
RoberSolid escribió:Os funciona a alguno en consolas PAL? es qeu a mi no me funciona nada ni el tetris , ni el gc-linux ni este elf .Primero formateo la SD en Windows en FAT,la pongo Tamaño de asignacion predeterminado,le pongo de etiqueta nada. despues copio el elf y le renombro a boot .elf ,despues lo llevo a la consola cargo el zelda ,el hack y lee un poco y se queda tirado no carga el programa, puede ser por la SD?

Saludos


La 2 version del elf loader tiene un detector de video.
RoberSolid escribió:Os funciona a alguno en consolas PAL? es qeu a mi no me funciona nada ni el tetris , ni el gc-linux ni este elf .Primero formateo la SD en Windows en FAT,la pongo Tamaño de asignacion predeterminado,le pongo de etiqueta nada. despues copio el elf y le renombro a boot .elf ,despues lo llevo a la consola cargo el zelda ,el hack y lee un poco y se queda tirado no carga el programa, puede ser por la SD?

Saludos


Prueba con otra tarjeta de memoria. A mi me pasaba eso con una de mala calidad, que me venía con un teléfono móvil.
JavierEA escribió:DESCUBRIMIENTO


Si utilizas el reload en el tetris, te lleva al menú del sdloader ;)


¿Usas reload sd o reload gecko? Son funciones sencillas fáciles de implementar, el problema es que no están en el código fuente, y no se en qué librería se encuentran...

Continuaré la búsqueda :P
papixulooo, segun logro entender (ya me esta entrando dolor de cabeza con tanto codigo y pestaña abierta xD) ambas funciones no estan en ninguna libreria, estan almacenadas en memoria. Si te fijas en el main.c del tetris, antes de empezar la definicion de la funcion waitVsync(), se definen reload y reloadGecko como punteros a una funcion almacenada en una posicion de memoria (0x90000020 y 0x80001800 respectivamente).

Googleando un poco parece ser que esas funciones las coloca ahi el twilight hack, y encontre una pagina de alguien que ha extraido los binarios (la primera descarga de la columna de la derecha) del propio hack (si alguien sabe de ingenieria inversa, pues a lo mejor puede investigar mas [oki] )

P.D.: Como curiosidad, investigando me tope con este enlace , ¿alguien sabe lo que es? yo diria que es un sniffer del adaptador de red de la wii ¿o son cosas mias? (si te fijas parece que es de bushing)

P.D.2: Si es eso ¿podrian sacarse ideas sobre como trabajar con el usb?
¿Os pasa a vosotros que en cuanto carga el loader, se pone la fuente en rojo, y por tanto todas las aplicaciones basadas en texto (he probado chess y linux concept) se ven en rojo incluídas las imágenes? De momento con las basadas en gráficos (tetris) no ocurre.

Y si quereis saber como hacer lo de volver al loader en vuestros programas, en el tuto de wiibrew.org sobre instalar el devkit pro hay un pequeño trozo de código al final de la página para hacerlo pulsando Start + Z aunque se puede modificar para que lo haga solo con un botón, pero vamos, al parecer es tan sencillo como un exit(0);

Por cierto... alguno de los que programeis cosillas teneis algun enlace a la documentación de las funciones de todas las librerías que se pueden usar y algún tuto? Sé programar en C (y en lo que me echen), pero no se por donde coger esto más allá de un hola mundo y de aplicaciones de consola simples si no tengo a mano las funciones que se pueden usar y su sintaxis.
odnei escribió:papixulooo, segun logro entender (ya me esta entrando dolor de cabeza con tanto codigo y pestaña abierta xD) ambas funciones no estan en ninguna libreria, estan almacenadas en memoria. Si te fijas en el main.c del tetris, antes de empezar la definicion de la funcion waitVsync(), se definen reload y reloadGecko como punteros a una funcion almacenada en una posicion de memoria (0x90000020 y 0x80001800 respectivamente).

Googleando un poco parece ser que esas funciones las coloca ahi el twilight hack, y encontre una pagina de alguien que ha extraido los binarios (la primera descarga de la columna de la derecha) del propio hack (si alguien sabe de ingenieria inversa, pues a lo mejor puede investigar mas [oki] )

P.D.: Como curiosidad, investigando me tope con este enlace , ¿alguien sabe lo que es? yo diria que es un sniffer del adaptador de red de la wii ¿o son cosas mias? (si te fijas parece que es de bushing)

P.D.2: Si es eso ¿podrian sacarse ideas sobre como trabajar con el usb?


Entonces lo que habría que hacer es "dejar" la combinación de botones apuntando a esa dirección de memoria, de esta manera da igual lo que carguemos, siempre tendremos la combinación asociada al resete.

No tengo ni idea de como hacer esto, pero intentaré informarme :P

beje, he buscado información y no he encontrado nada así :(
papixulooo escribió:
Entonces lo que habría que hacer es "dejar" la combinación de botones apuntando a esa dirección de memoria, de esta manera da igual lo que carguemos, siempre tendremos la combinación asociada al resete.

No tengo ni idea de como hacer esto, pero intentaré informarme :P

beje, he buscado información y no he encontrado nada así :(


Aquí lo tienes:

http://wiibrew.org/index.php?title=Getting_Started_with_devkitppc

PAD_ScanPads();
int buttonsDown = PAD_ButtonsHeld(0);
if( (buttonsDown & PAD_TRIGGER_Z) && (buttonsDown & PAD_BUTTON_START)) {
exit(0);
}


Repito lo de antes... le pasa a alguno más lo de la pantalla roja? Me huelo que es porque está tirando de resolución NTSC y mi tele no lo coge bien... suerte que no compré el freeloader porque posiblemente me habría pasado también. He intentado recompilar el código fuente a mano pero tiene errores.
v0.2a
  • Wiimote shutdown code from this wiki added
una pregunta....poniendo el loader en la SD y el elf que se quiere cargar ya estaria? o como sería? metes el zelda cargas la partida rulas el hack y desde ahí el loader y con el loader el homebrew???

por lo que he leido se sigue necesitando meter el celda y cargar la partida no?
JavierEA escribió:v0.2a
  • Wiimote shutdown code from this wiki added


Usease que ya podemos apagar la maquina desde el wiimote?
papixulooo escribió:
Entonces lo que habría que hacer es "dejar" la combinación de botones apuntando a esa dirección de memoria, de esta manera da igual lo que carguemos, siempre tendremos la combinación asociada al resete.

No tengo ni idea de como hacer esto, pero intentaré informarme :P


Pensaba que habias preguntado lo del loader SD y el loader Gecko, porque los habias visto en el codigo del tetris XD

if(pad[0].button & (PAD_TRIGGER_L))
   reload();
   
if(pad[0].button & (PAD_TRIGGER_R))
   reloadGecko();


Simplemente se ejecuta la funcion cuando presionas la combinacion de botones.
No se por que utilizan esta funcion en lugar del exit(0) que dice beje, se me ocurre que al estar preparado para el Twilight Hack, no hay loader sino que se ejecuta el propio tetris y si no me equivoco el exit(0) lo que hace es volver al loader.

beje escribió:Repito lo de antes... le pasa a alguno más lo de la pantalla roja? Me huelo que es porque está tirando de resolución NTSC y mi tele no lo coge bien... suerte que no compré el freeloader porque posiblemente me habría pasado también. He intentado recompilar el código fuente a mano pero tiene errores.


Resulta que no tengo ningun mando de gamecube a mi disposicion ahora mismo, asi que no puedo decirte nada :\. Si te ocurre lo del color de la fuente justo cuando te aparece el inicio del ELF loader y se queda esperando para que presiones A, a mi me sale la fuente en blanco (ya de ahi no paso).
He estado esta mañana preguntando en el canal de #wiidev y me han contestado que aun no funciona bien del todo la detección del modo de video en el SD Loader, lo cual confirma mis sospechas de que mi tele saca el NTSC en rojo (que a unas cuantas personas les ha pasado con el freeloader). El chess también me hace lo mismo (hurgando el fuente, no tiene selector de modo) pero lo más curioso es que el linux concept distro que cargado tal cual como boot.elf sí me detecta el modo (y se me ve con los colores bien), si lo lanzo desde el SD Loader se queda en rojo, como si el loader impusiese su propio modo de video a todo lo que cargase.

Edit: acabo de probar con cable compuesto y se me ve bien... la "culpa" es del cable RGB oficial, que parece estar reñido con el modo NTSC, pero claro, parte de la culpa también la tienen los programadores que hacen las cosas solo en modo NTSC cuando basta con pegar un pequeño bloque de código a modo de selector para que funcione en PAL o PAL60.
pepejose escribió:por lo que he leido se sigue necesitando meter el celda y cargar la partida no?


mmmm yo soy malo con las letras lo admito... pero esa falta creo que se merece asta un ban xDDDD dioooos [mad] [mad] [mad]
58 respuestas
1, 2