SDL para Wii

En esta página teneis disponible un port bastante decente de la libreria SDL para Wii:

http://mindcry.cpl.de/wii/

Yo la descubri hace unos dias cuando aún no tenia soporte de SDL_Mixer ni de SDL_Image, a pesar de eso funcionaba perfectamente (lo que estoy programando lo estaba haciendo con la versión mas antigua). Con la versión antigua me compilaron a la primera las librerias SDL_Gfx y SDL_Collide.

La unica pega que tiene es que solo admite el mando 1 y los botones A (boton derecho del ratón), B (boton izquierdo), + (boton central) y Home (tecla escape). Pero es muy facil modificarla para que admita mas botones, yo la he modificado para que admita todos los botones del mando 1 incluido el Nunchuck, cuando tenga tiempo le agregare soporte para los 4 mandos.
Sería de mucha ayuda que lo adaptases para cuatro mandos y todos los botones
Llevo una racha con fallos en librerias... el otro día perdi 4 horas por el net_send que resulta que estaba mal en la versión que tenia de la libogc, y ayer perdi todo el día y hoy parte de la mañana buscando porque al meter mi código de los mandos en el código fuente no me funcionaba el sonido.

Conclusión: El fuente que está en la web es de la versión antigua que aún no funcionaba el sonido, la he desempaquetado y he cambiado solamente el .o de los mandos y ya me funciona todo. Ahora voy a ponerme a agregar el código de los 4 mandos.
Hola, estoy intentando compilar una cosa y me da error
> "make"
linking ... prueba.elf
c:/devkitpro/devkitppc/bin/../lib/gcc/powerpc-gekko/4.2.3/../../../../powerpc-gekko/lib\libSDL.a(SDL_gamecube_main.o): In function `GAMECUBE_Initialize':
c:\dev\apps\devkitPro\SDL-Port/src/main/gamecube/SDL_gamecube_main.c:29: undefined reference to `WPAD_Init'
c:\dev\apps\devkitPro\SDL-Port/src/main/gamecube/SDL_gamecube_main.c:30: undefined reference to `WPAD_SetDataFormat'
c:\dev\apps\devkitPro\SDL-Port/src/main/gamecube/SDL_gamecube_main.c:31: undefined reference to `WPAD_SetVRes'
c:/devkitpro/devkitppc/bin/../lib/gcc/powerpc-gekko/4.2.3/../../../../powerpc-gekko/lib\libSDL.a(SDL_gamecube_main.o): In function `main':
c:\dev\apps\devkitPro\SDL-Port/src/main/gamecube/SDL_gamecube_main.c:66: undefined reference to `SDL_main'

Que hago mal??
woltrixx escribió:Hola, estoy intentando compilar una cosa y me da error
> "make"
linking ... prueba.elf
c:/devkitpro/devkitppc/bin/../lib/gcc/powerpc-gekko/4.2.3/../../../../powerpc-gekko/lib\libSDL.a(SDL_gamecube_main.o): In function `GAMECUBE_Initialize':
c:\dev\apps\devkitPro\SDL-Port/src/main/gamecube/SDL_gamecube_main.c:29: undefined reference to `WPAD_Init'
c:\dev\apps\devkitPro\SDL-Port/src/main/gamecube/SDL_gamecube_main.c:30: undefined reference to `WPAD_SetDataFormat'
c:\dev\apps\devkitPro\SDL-Port/src/main/gamecube/SDL_gamecube_main.c:31: undefined reference to `WPAD_SetVRes'
c:/devkitpro/devkitppc/bin/../lib/gcc/powerpc-gekko/4.2.3/../../../../powerpc-gekko/lib\libSDL.a(SDL_gamecube_main.o): In function `main':
c:\dev\apps\devkitPro\SDL-Port/src/main/gamecube/SDL_gamecube_main.c:66: undefined reference to `SDL_main'

Que hago mal??


Tiene toda la pinta de que no estas linkando con la wiiuse, asegurate de que en la lista de librerias aparezca -lwiiuse
Si que está la wiiuse
Pues entonces posiblemente sea porque la -lsdl esta por detras de la -lwiiuse, por lo visto las dependencias las analiza al reves, cuando compilo con la SDL_Mixer, que depende la de la SDL, si pongo -lsdlmixer -lsdl compila, si pongo -lsdl -lsdlmixer no compila.
vale, ahora me da menos errores
> "make"
linking ... prueba.elf
c:/devkitpro/devkitppc/bin/../lib/gcc/powerpc-gekko/4.2.3/../../../../powerpc-gekko/lib\libsdl.a(SDL_gamecube_main.o): In function `main':
c:\dev\apps\devkitPro\SDL-Port/src/main/gamecube/SDL_gamecube_main.c:66: undefined reference to `SDL_main'
collect2: ld returned 1 exit status
make[1]: *** [/c/devkitPro/examples/wii/prueba/prueba.elf] Error 1
"make": *** [build] Error 2

> Process Exit Code: 2
> Time Taken: 00:01
Buenas y una pregunta, como y donde copio las carpetas del port de sdl dentro del devkitppc? He buscado y buscado y no he encontrado como hacerlo, muchas gracias por adelantado.
@woltrixx: Lo unico que se me ocurre es lo siguiente:

1) Que la función main sea exactamente asi:

int main(int argc, char *argv[])

2) Que el -lsdl aparezca delante de todas las librerias, especialmente del -logc

@akvaro: Se copian en libogc/lib/wii, donde están el resto de librerias, y los include los puedes agregar donde quieras en el directorio include dentro de libogc, yo tengo creada una carpeta solo para SDL, y luego en los include tengo que poner <SDL/SDL.h>
(mensaje borrado)
kriogeN escribió:@woltrixx: Lo unico que se me ocurre es lo siguiente:

1) Que la función main sea exactamente asi:

int main(int argc, char *argv[])

2) Que el -lsdl aparezca delante de todas las librerias, especialmente del -logc

@akvaro: Se copian en libogc/lib/wii, donde están el resto de librerias, y los include los puedes agregar donde quieras en el directorio include dentro de libogc, yo tengo creada una carpeta solo para SDL, y luego en los include tengo que poner <SDL/SDL.h>

Pues eso no es porque main está bien puesta y -ldsl es la primera
PD: Cuelga un ejemplo que te compile bien, no vaya a ser cosa del código
Si fuese error del codigo te daria error de compilación, y no de linkado.

Te dejo adjunto el Makefile con el que me compila todo.

Adjuntos

kriogeN escribió:Si fuese error del codigo te daria error de compilación, y no de linkado.

Te dejo adjunto el Makefile con el que me compila todo.


No necesariamente, los "undefined reference" muchas veces son error de codogo, porque has escrito mal el nombre de la funcion o algo asi.
technik escribió:
kriogeN escribió:Si fuese error del codigo te daria error de compilación, y no de linkado.

Te dejo adjunto el Makefile con el que me compila todo.


No necesariamente, los "undefined reference" muchas veces son error de codogo, porque has escrito mal el nombre de la funcion o algo asi.


Pero seguiria siendo un error de compilación, y a el se lo da de linkado, si pasas a la fase de linkado es porque todas las funciones están bien escritas, al menos como extern. Y en ese caso le faltan librerias.
las dos ultimas librerias de tu makefile no las encuentra
woltrixx escribió:las dos ultimas librerias de tu makefile no las encuentra


La SDLMixer, SDLGfx, SDLCol y MXML puedes quitarlas, ninguna es necesaria para un proyecto basico de SDL.

Si no estas usando IMG_Load en tu proyecto tambien puedes quitar SDLImage.
pues si quito todas esas me sigue dando el mismo error

EDIT:Algo estoy haciendo mal porque lo he probado en otro ordenador diferente y sigue dándome error
Por cierto que han publicado nuevas versiones de fecha 22 julio.
Podeis encontrarlas en la página de google code, bucando sdl-wii-ports.

SDL_gfx-2.0.17.7z, SDL_ttf-2.0.9.7z, SDL_image.7z, libjpeg.7z
Thyl-Thalion escribió:Por cierto que han publicado nuevas versiones de fecha 22 julio.
Podeis encontrarlas en la página de google code, bucando sdl-wii-ports.

SDL_gfx-2.0.17.7z, SDL_ttf-2.0.9.7z, SDL_image.7z, libjpeg.7z


Muchas gracias, la GFX ya la tenia portada, pero estaba tratando de portar la TTF y me daba problemas.

Que ahora admita los JPEG con la Image tambien es un gran aporte.
ShySpy escribió:¿Con esto sería posible hacer esto?
hilo_seria-posible-portar-super-mario-war_1064570


Sigue faltando la SDL_Net, y no se si alguna mas.
kriogeN escribió:
ShySpy escribió:¿Con esto sería posible hacer esto?
hilo_seria-posible-portar-super-mario-war_1064570


Sigue faltando la SDL_Net, y no se si alguna mas.


¿Pero SDL_Net es necesaria? El juego tiene desde su versión 1.7 AFD un modo on-line del que se puede prescindir, si SDL_Net es para eso.
ShySpy escribió:
kriogeN escribió:
ShySpy escribió:¿Con esto sería posible hacer esto?
hilo_seria-posible-portar-super-mario-war_1064570


Sigue faltando la SDL_Net, y no se si alguna mas.


¿Pero SDL_Net es necesaria? El juego tiene desde su versión 1.7 AFD un modo on-line del que se puede prescindir, si SDL_Net es para eso.


Si, es para eso, pues habrá que mirar el código de alguna versión anterior. Pero yo pensaba que ese juego era solo online.
Yo tengo un proyecto de un juego en SDL, de una asignatura de juegos de la uni. Lo pasaria si no fuera pq la ram de wii explotaria [+risas]
24 respuestas