Alguien conoce un tuto sobre GRRLIB 2.0

Pues eso si alguien conoce alguno por que he estado mirando uno ejemplos y no me entero.Por si lo preguntais unas nociones basicas de programacion si que tengo.
Se agradeceria...Me gustaria meterme en algun proyecto de estos para practicar con algo realmente interesante y no haciendo programas de caca para la facultad...xD
No conozco ningun tutorial, lo mejor es ver ejemplos y intentar ver que hace cada funcion y como se usa. Tambien puedes verte el codigo de las librerias GRRLIB donde estan cada una de las funciones y ver las que hay y que sintaxis tienen. En efnet tambien hay un canal #grrlib aunque no esta muy concurrido.

Yo si quieres preguntarme algo en concreto tambien intentare contestarte.

SAludos...
pabloochan escribió:Pues eso si alguien conoce alguno por que he estado mirando uno ejemplos y no me entero.Por si lo preguntais unas nociones basicas de programacion si que tengo.


No se si lo viste pero mira esto:

http://www.elotrolado.net/hilo_WiimenuSample-1-0--Ejemplo-comentado-de-uso-del-Wiimote-_1005738

Saludos.
en gfx van las imagenes? en source el codigo ,pero yo me baje un ejemplo y en source solo habia un code que hay que crear varios archivos y luego ¿como lo compilo?
lo mas interesanta de las grrlib es el soporte del ir, porque el soporte de wiimote aunque es mas estable que el de libogc no llega a arreglarlo. si os esperáis a que lo integren en el libogc tendreis mas posibilidades de hacer un codigo duradero.

yo tambien he estado buscando algo de información, pero como es un proyecto deprecated no te queda mucho mas que leer los ejemplos y las funciones a pelo.
Pabloochan, lo mejor es que partas desde algun proyecto de ejemplo de los que trae el GRRLIB, te recomiendo este: http://wiibrew.org/images/4/46/Template.zip , donde tienes ya los directorios gfx y sources hecho con cada cosa en su sitio, y el fichero makefile que es el que compila el proyecto.

En la carpeta gfx debes de poner tus fotos en formato .png y convertirlas a formato .h con el conversor de esta web: http://grrlib.santo.fr/tools/gfx_converter.php

Seguidamente el fichero que contendrá tu codigo se encuentra en source/template.c , lo editas y primero que nada incluyes tus fotos al principio del programa como bien hace el ejemplo.

Cuando tengas puesto tu codigo en el programa y quieras compilarlo, te vas al directorio raiz de la carpeta template (donde esta el make file) y escribes "make" (todo esto desde un sistema unix o algun compilador adecuado para windows), y te compilara todo el proyecto imagenes y todo y te creara dos archivos, uno .dol y otro .elf que es el que tendras que poner en tu tarjeta sd y renombrarlo a boot.elf y usar el homebrew channel o otro loader.

Espero haber despejado alguna de tus dudas, si necesitas algo mas me lo dices.

Saludos.
ok luego lo pruebo muchas gracias

edit:Hay que seguir un esquema determinado es decir:

1º:cargamos las imagenes

y luego puedo empezar a poner if (just pressed ...) o tengo que hacer algo mas
Lo de las imagenes se declaran al principio igual que las librerias necesarias. Lo de los botones se suele poner en una funcion main (principal) y se llama a un bucle infinito (while(1) {})
que se va repitiendo y recogiendo la informacion de los pads y poniendo las imagenes en pantalla. Mas o menos eso :)
Este code funcionaria

/*===========================================
GRRLIB Template
Use this to start coding with GRRLIB
*/

#include

#include

#include

#include

#include

#include


#include "GRRLIB.h"



//incluir imagene
#include"../gfx/nave.h"//convertidas a gfx
//
extern u16 *GRRLIB_buffer;





void (*reload)() = (void (*) ()) 0x80001800;





int main(){


GRRLIB_buffer=(u16 *)malloc(640*480*2);


VIDEO_Init();

PAD_Init();


GRRLIB_InitVideo();

GRRLIB_Start(640, 480, 80, 60);

GRRLIB_FillScreen(0x0000);

GRRLIB_Render();
VIDEO_WaitVSync();






while(1){

PAD_ScanPads ();





GRRLIB_DrawImg(20, 30, / *x and y cordenadas donde se dibujara*/nave_width, nave_high, / *anchura y altura de la imf*/nave_img);

if (IS_JUST_PRESSED(wm, WIIMOTE_BUTTON_RIGHT)){nave_img.x+==4}
if (IS_JUST_PRESSED(wm, WIIMOTE_BUTTON_LEFT)){nave_img.x-==4}
if (IS_JUST_PRESSED(wm, WIIMOTE_BUTTON_UP)){nave_img.y+==4}
if (IS_JUST_PRESSED(wm, WIIMOTE_BUTTON_DOWN)){nave_img.y-==4}

if (PAD_ButtonsDown (0) & PAD_BUTTON_START){
reload ();}
}


return(0);

}
Pues no me hagas mucho caso pero creo que tienes unos fallos...

Primero que nada has mezclado el uso de wiimotes con el uso del pad de gamecube, si lo que querias es manejar la nave con el wiimote, primero deberias de haber puesto la secuencia de sincronizacion con el wiimote, puedes copiartela de cualquiera de los ejemplos que hice, luego la linea de
PAD_ScanPads ();
tenias que haberla cambiado por
wiimote** wiimotes;

Pero lo de los wiimotes de momento dejalo y prueba con el pad de gamecube y cuando tengas el codigo bien, lo cambias.

Segundo, ten en cuenta que el movimiento que realizas en la nave luego no lo reflejas a la hora de dibujarla en pantalla, osea, lo de la nave_img.x, creo que no sirve, ya que no existe, ya que no se ha declarado el tipo como tal, en fin... que me estoy liando y seguramente a ti tambien.

La cosa para ir bien seria declarar al principio dos variables, por ejemplo, xx yy, no utilizo x y porque igual alguna libreria puede que las use y te de un error, lo hariamos asi.

int xx;//declaramos la variable como entero
int yy;//declaramos la variable como entero

int main(){

Como tu ya le das un punto de partida a la nave se lo asignamos.

int xx;//declaramos la variable como entero
int yy;//declaramos la variable como entero
xx=20;
yy=30;

int main(){

y ahora dibujamos la nave

int xx;//declaramos la variable como entero
int yy;//declaramos la variable como entero
xx=20;
yy=30;

int main(){
PAD_ScanPads ();
GRRLIB_DrawImg(xx, yy, / *x and y cordenadas donde se dibujara*/nave_width, nave_high, / *anchura y altura de la imf*/nave_img);


Ahora solo nos faltaria cambiar el desplazamiento con la nave con

if (PAD_ButtonsHeld (0) & PAD_BUTTON_RIGHT) xx=xx+4;

La funcion PAD_ButtonsHeld indica que se realizará mientras el boton este pulsado.

Por ultimo, antes del final del while te faltará dibujar lo que tienes en el buffer, osea la nave, esto lo harás con

GRRLIB_Render();
VIDEO_WaitVSync();
}


return(0);

}


Conforme estaria ahora te iria moviendo la nave pero la anterior se quedaría en pantalla por lo tanto al principio del while colocaremos algo para limpiar la pantalla antes de pintar nuestra nave
int main(){
PAD_ScanPads ();
GRRLIB_FillScreen(0x0000); //la pantalla se llena con el color negro
GRRLIB_DrawImg(xx, yy, / *x and y cordenadas donde se dibujara*/nave_width, nave_high, / *anchura y altura de la imf*/nave_img);


Bueno pues asi quedaria mas o menos, puede que tenga fallos ya que todos somos humanos :)

Espero no haberte liado mucho, y te felicito por atreverte a hacer algo como esto. Si tienes alguna duda mas aqui estoy.

Saludos.
bte_init();
bte_start();
wiimotes = wiiuse_init(MAX_WIIMOTES, wiimote_event);
wiiuse_find(wiimotes, MAX_WIIMOTES, 5);
wiiuse_connect(wiimotes, MAX_WIIMOTES);
wiiuse_set_leds(wiimotes[0], WIIMOTE_LED_1);//Enchufa el Led 1 del wiimote
wiiuse_rumble(wiimotes[0], 1);//Enchufa el vibrador
usleep(200000); //Hace una pausa de 200ms
wiiuse_rumble(wiimotes[0], 0);//Apaga el vibrador
wiiuse_set_ir(wiimotes[0], 0);
usleep(200000); //Hace una pausa de 200ms
wiiuse_motion_sensing(wiimotes[0], 1);


eso es para sincronizar el wiimote no?

y asi se me ha que dado el code:

/*===========================================
GRRLIB Template
Use this to start coding with GRRLIB
*/

#include

#include

#include

#include

#include

#include


#include "GRRLIB.h"



//incluir imagene
#include"../gfx/nave.h"//convertidas a gfx
//
extern u16 *GRRLIB_buffer;





void (*reload)() = (void (*) ()) 0x80001800;





int main(){


GRRLIB_buffer=(u16 *)malloc(640*480*2);


VIDEO_Init();

PAD_Init();


GRRLIB_InitVideo();

GRRLIB_Start(640, 480, 80, 60);

GRRLIB_FillScreen(0x0000);

GRRLIB_Render();
VIDEO_WaitVSync();

int xx;//declaramos la variable como entero
int yy;//declaramos la variable como entero

xx=20

yy=30


while(1){

PAD_ScanPads ();



int main(){
PAD_ScanPads ();
GRRLIB_FillScreen(0x0000); //la pantalla se llena con el color negro
GRRLIB_DrawImg(xx, yy, / *x and y cordenadas donde se dibujara*/nave_width, nave_high, / *anchura y altura de la imf*/nave_img);


if (PAD_ButtonsHeld (0) & PAD_BUTTON_RIGHT) xx=xx+4;
if (PAD_ButtonsHeld (0) & PAD_BUTTON_LEFT) xx=xx-4;
if (PAD_ButtonsHeld (0) & PAD_BUTTON_UP) yy=yy+4;
if (PAD_ButtonsHeld (0) & PAD_BUTTON_DOWN) yy=yy-4;

if (PAD_ButtonsDown (0) & PAD_BUTTON_START){
reload ();}

GRRLIB_Render();
VIDEO_WaitVSync();}


return(0);

}
Si lo primero es para sincronizar el wiimote.

Lo demas esta todo bien quitado de esto:
xx=20
yy=30
que te se ha olvidado poner al final ;
xx=20;
yy=30;
todo lo demas deberia funcionar, compila y prueba :)
ok enserio me ayudas un monton[tadoramo] [tadoramo] [tadoramo] [tadoramo] .Lo malo es k no lo puedo probar un amigo tiene mi zelda mañana me lo devolvera asi k a esperar
14 respuestas