Anuncios Google

Profundizando en los mandos de la Wii - Parte 1

Tutoriales Avanzados Homebrewes

Estoy seguro que muchos de vosotros os habéis quedado encantados con los tutoriales de SceneBeta. Y es que eso de dominar vuestra consola favorita es una fantástica experiencia. Pues bien, para aquellos que os habéis quedado con ganas de profundizar en la programación para Wii os propongo que sigáis esta serie de tutoriales especializada en los mandos y sus extensiones.

En estos tutoriales voy a intentar no utilizar ninguna librería en particular, únicamente tener instalado el devkitpro y os recomiendo que sigáis los cuatro tutoriales de programación (Hechos por csar.ale) ya que daré por sabido todo lo que explica en ellos.

También os diré que pasaré por alto toda la inicialización de vídeo agrupándola en una función que es llamada al principio del programa y que podéis considerar como una caja negra. Aunque realmente no tiene mucha complicación y os animo a que le echéis un vistazo.

Al final de este primer tutorial habréis construido un tester de las capacidades extendidas de los WiiMotes incluido el manejo del sensor de infrarrojos, del joystick  y la lectura del ángulo del wiimote y del nunchuck.

En siguientes tutoriales aprenderemos a usar los acelerómetros, el rumble y el sonido del mando.

Si me animo con esto de los tutoriales la idea es haceros una pequeña introducción de las GX (hasta donde yo sé) con gestión de sprites y manejo de transparencias a través del canal alfa.

Pues termino de daros el rollo y comienzo con el tema.

Construcción de un tester de las capacidades extendidas de los wiimotes



Antes que nada, debemos descargar este pack con nuestras herramientas.

Descargar Pack Profundizando mandos de Wii



Preparando el entorno ¿Qué necesitamos?

Para seguir este tutorial necesitaréis los siguientes elementos:

Descargaros el zip que incluye:

  • El programa básico que contiene la estructura general del programa.
  • El makefile.
  • El archivo ejecuta.bat. Este archivo deberéis modificarlo con la dirección IP de vuestra Wii. No es estrictamente necesario pero os evitará innumerables viajes del sofá a la Wii y viceversa poniendo y quitando la SD.

Adicionalmente necesitaremos:

  • El Notepad++ o el Programer’s Notepad que viene con el Devkitpro.
  • El programa wiiload.exe que viene en el archivo comprimido del homebrew channel. Usad el correspondiente a la versión que tengáis instalada ya que hay algunas incompatibilidades con las versiones.

Una vez que tengamos todo esto, cread una carpeta nueva y copiad el contenido del zip y el wiiload en dicha carpeta.

Abrid el archivo ejecuta.bat con el Notepad y sustituir la dirección IP que figura ahí por la de vuestra Wii, grabando el archivo una vez modificado.

Si lo habéis modificado correctamente y tenéis cargado el Homebrew Channel ejecutad este archivo después compilar el programa ya que tranferirá automáticamente el .dol a la SD y lo cargará en la memoria de la Wii.



Vamos con el programa

Como ya visteis en el ButtonTester de csar.ale, lo primero que tenemos que hacer a la hora de gestionar los wpads es inicializarlos. Para ello utilizaremos la función WPAD_Init();

En aquel caso utilizamos un solo wpad, entendiendo que necesariamente era el número 0 el que teníamos en nuestras manos. Para manejar más de un mando o buscar cual de todos está encendido utilizaremos la función WPAD_Probe.

s32 WPAD_Probe(s32 chan,u32 *type);

Para utilizar dicha función pasaremos como parámetro el número de wpad que queremos testear y nos devolverá como resultado un valor mayor o igual que cero si ese mando está conectado y en type en tipo de expansión que tenemos conectada en él.

Como ejemplo, si queremos ver cuál es el primer mando que tenemos activado podríamos usar un bucle como el siguiente:

	u32 expansion_type, pad;
 
	int ret = -1;
 
	while (ret < 0) {
 
		for(pad=0;(pad<4)&(ret<0);pad++) 
 
			ret=WPAD_Probe(pad, &expansion_type);
 
	}
 
	pad--;

Una vez sabemos cuál es el mando que vamos a usar deberemos configurar algunas cosas más de los wiimotes:

WPAD_SetVRes(pad, 640, 480);
 
WPAD_SetDataFormat(pad, WPAD_FMT_BTNS_ACC_IR);
 
WPAD_SetIdleTimeout(300);

La  función WPAD_SetVRes asigna la resolución con la que vamos a trabajar con el IR, siendo 0,0 la esquina superior izquierda de la pantalla y (en este caso) 640x480 la esquina inferior derecha.

La función WPAD_SetDataFormat ajusta el modo de operación de los PADS. Como en este programa vamos a utilizar todas las características de los wiimotes utilizaremos WPAD_FMT_BTNS_ACC_IR, que activa el wiimote, los acelerómetros y el IR, aunque podríamos desactivar algunas funciones para ahorrar batería usando las constantes WPAD_FMT_BTNS, o WPAD_FMT_BTNS_ACC.

Por último la función SetIdleTimeout nos permite configurar el tiempo en segundos de inactividad necesarios para que se desactive el wiimote.

A continuación ya entramos en el típico bucle de control del programa en el que estamos leyendo los wiimotes hasta que pulsamos el botón Home.

	while(1) {
 
		……
 
		WPAD_ScanPads();
 
		u32 pressed = WPAD_ButtonsHeld(pad);
 
		……
 
		if ( (pressed & WPAD_BUTTON_HOME) | (ret < 0)) exit(0);
 
		VIDEO_WaitVSync();
 
	}

En dicho bucle llamamos, en cada ciclo, a la función WPAD_ScanPads para leer el estado de los wpads y comprobamos la pulsación de la tecla Home para permitirnos volver al Homebrew Channel.

Al final del bucle llamamos a la función VIDEO_WaitVSync() para sincronizarnos con el refresco de la pantalla y evitar parpadeos.

Partiendo de este bucle básico vamos a añadir funciones adicionales que nos permitan leer las extensiones del wpad:

Para comprobar y mostrar por pantalla si un botón está pulsado podemos utilizar una sentencia como esta:

		if ( pressed & Boton ) {
 
			printf("\x1b[%d;%dH", y, x);
 
			printf(texto);
 
		} else {
 
			printf("\x1b[%d;%dH", y, x);
 
			printf("  ");
 
}

Para facilitar la labor y reducir código en el programa he convertido este fragmento de código en una función ya que lo vamos a utilizar para comprobar todas y cada una de las teclas de los mandos.

int procesaboton(u32 pressed, int x, int y, u32 Boton, char* texto);

A esta función la he llamado procesaboton y tiene como parámetros la variable pressed que contiene el estado de las teclas pulsadas, la posición x e y donde queremos que nos muestre la cadena contenida en la variable texto y la constante correspondiente a la tecla que queremos comprobar.

Ya dentro del bucle llamaremos a la función una vez por cada botón a ser comprobado.

Hasta aquí, aparte de utilizar más de un wiimote no hemos visto nada nuevo en comparación con el clásico button tester. Para poder utilizar todas las características de los mandos podemos utilizar la función WPADData *WPAD_Data(int chan) a la que pasándole el número del wpad que queremos consultar nos devuelve un puntero a una variable tipo WPADData que contiene toda la información que necesitamos.

wmote_data=WPAD_Data(pad);
 
 
 
typedef struct _wpad_data
 
{
	s16 err;
	u32 data_present;
	u8 battery_level;
	u32 btns_h;
	u32 btns_l;
	u32 btns_d;
	u32 btns_u;
	struct ir_t ir;
	struct vec3w_t accel;
	struct orient_t orient;
	struct gforce_t gforce;
	struct expansion_t exp;
 
} WPADData;
 

La posición a la que apunta el sensor infrarrojo la podemos sacar del par de valores wmote_data->ir.x, wmote_data->ir.y, mientras que la orientación del wiimote la podemos sacar de wmote_data->orient.pitch y wmote_data->orient.roll, donde pitch es el cabeceo del mando y roll el giro del mismo sobre un eje imaginario perpendicular al sensor.

Para mostrar estos valores podríamos escribir lo siguiente:

		// Muestra la posición X,Y del infrarrojo
 
		printf("\x1b[%d;%dH", 1, 0);
 
		printf("IR: ( \%0.0f;\%0.0f )   ", wmote_data->ir.x, wmote_data->ir.y); 
 
 
 
		// Muestra la orientación del wiimote
 
		printf("\x1b[%d;%dH", 2, 0);
 
		printf("Cabeceo: \%0.00f  ", wmote_data->orient.pitch);
 
		printf("\x1b[%d;%dH", 3, 0);
 
		printf("Giro: \%0.00f  ", wmote_data->orient.roll);

Para mostrar el estado de la expansión conectada al wiimote, ya sea el nunchuk, el mando clásico u otro, podemos utilizar la variable expansión_type que previamente nos había devuelto la función WPAD_probe.

La información de la expansión viene en el campo exp de la estructura. Así, la información del Nunchuk la podemos encontrar en wmote_data->exp.nunchuk, teniendo la posibilidad de acceder a los campos, pitch, roll y js entre otros.

Los campos pitch y roll, al igual que en el wiimote, nos devuelven la orientación del nunchuk, mientras que el campo js nos permite el acceso a la información del joystick analógico.

El campo wmote_data->exp.nunchuk.js.ang nos da el ángulo de orientación de la palanca del joystick, mientras que wmote_data->exp.nunchuk.js.mag nos informa de lo alejado que está la palanca de la posición central. 

Podemos observar los rangos de valores de todas estas variables al ver el programa en ejecución. 

Por ejemplo wmote_data->exp.nunchuk.js.ang oscila entre 0 y 360, mientras que la variable wmote_data->exp.nunchuk.js.mag contiene 0 con el joystick en la posición de reposo mientras que contiene un 1 con el joystick en la posición más alejada.

No voy a extenderme con el resto porque la programación es idéntica.

Aquí os dejo el código completo:

#include <stdio.h>
#include <stdlib.h>
#include <gccore.h>
#include <wiiuse/wpad.h>
 
static void *xfb = NULL;
static GXRModeObj *rmode = NULL;
 
int procesaboton(u32 pressed, int x, int y, u32 Boton, char* texto) {
		if ( pressed & Boton ) {
			printf("\x1b[%d;%dH", y, x);
			printf(texto);
		} else {
			printf("\x1b[%d;%dH", y, x);
			printf("  ");
		}
}
 
void Init_Video(void);
 
//---------------------------------------------------------------------------------
int main(int argc, char **argv) {
//---------------------------------------------------------------------------------
 
	u32 expansion_type, pad;
	WPADData * wmote_data;
 
	Init_Video();
 
	// Esta función inicializa los PADs conectados
	WPAD_Init();
 
	// Busca el primer pad encendido y guarda el tipo de su expansión en expansion_type
	int ret = -1;
	while (ret < 0) {
		for(pad=0;(pad<4)&(ret<0);pad++) 
			ret=WPAD_Probe(pad, &expansion_type);
	}
	pad--;
 
 
	// Asigna la resolucion que nos devuelve el IR
	WPAD_SetVRes(pad, 640, 480);
 
	// ajusta el modo de operación de los PADS activando acelerometros y el IR
	WPAD_SetDataFormat(pad, WPAD_FMT_BTNS_ACC_IR);
 
	// tiempo en segundos que aguardará el wiimote hasta apagarse por falta de uso
	WPAD_SetIdleTimeout(300); 
 
	while(1) {
 
 
		// Comprobamos si se conecta o desconecta alguna expansión
		ret=WPAD_Probe(pad, &expansion_type);
 
		// Esto lee el estado de los mandos a cada ciclo del bucle
		WPAD_ScanPads();
 
		// recoge los datos extra del wiimote
		wmote_data=WPAD_Data(pad);
 
		// WPAD_ButtonsHeld nos dice todos los botones pulsados tanto del wiimote como
		// de las expansiones
		// Si en su lugar usaramos WPAD_ButtonsDown solo se activaría una vez y no volveria
		// a activarse hasta que no soltaramos el botón y lo volvieramos a pulsar
		u32 pressed = WPAD_ButtonsHeld(pad);
 
		// Muestra el primer mando detectado
		printf("\x1b[%d;%dH", 0, 0);
		printf("Mando \%d", pad);
 
		// Muestra la posición X,Y del infrarrojo
		printf("\x1b[%d;%dH", 1, 0);
		printf("IR: ( \%0.0f;\%0.0f )   ", wmote_data->ir.x, wmote_data->ir.y); 
 
		// Muestra la orientación del wiimote
		printf("\x1b[%d;%dH", 2, 0);
		printf("Cabeceo: \%0.00f  ", wmote_data->orient.pitch);
		printf("\x1b[%d;%dH", 3, 0);
		printf("Giro: \%0.00f  ", wmote_data->orient.roll);
 
		// Muestra los botones pulsados del wiimote
		procesaboton(pressed, 0, 5, WPAD_BUTTON_1, "1");
		procesaboton(pressed, 0, 6, WPAD_BUTTON_2, "2");
		procesaboton(pressed, 0, 7, WPAD_BUTTON_A, "A");
		procesaboton(pressed, 0, 8, WPAD_BUTTON_B, "B");
		procesaboton(pressed, 0, 9, WPAD_BUTTON_PLUS, "+");
		procesaboton(pressed, 0, 10, WPAD_BUTTON_MINUS, "-");
		procesaboton(pressed, 0, 11, WPAD_BUTTON_LEFT, "<-");
		procesaboton(pressed, 0, 12, WPAD_BUTTON_RIGHT, "->");
		procesaboton(pressed, 0, 13, WPAD_BUTTON_UP, "^");
		procesaboton(pressed, 0, 14, WPAD_BUTTON_DOWN, "v");
 
		// Muestra caracteristicas de la expansión conectada al wiimote
		int i;
 
		switch (expansion_type) {
			case WPAD_EXP_NONE:  // No hay expansión conectada
				for (i=0;i<15;i++){
					printf("\x1b[%d;%dH", i, 20);
					printf("                  ");
 
				}
				break;
			case WPAD_EXP_NUNCHUK: // Conectado el Nunchuck
				printf("\x1b[%d;%dH", 0, 20);
				printf("Nunchuk");
 
				// Muestra la orientación del Nunchuk
				printf("\x1b[%d;%dH", 1, 20);
				printf("Cabeceo: \%0.00f  ", wmote_data->exp.nunchuk.orient.pitch);
				printf("\x1b[%d;%dH", 2, 20);
				printf("Giro: \%0.00f  ", wmote_data->exp.nunchuk.orient.roll);
 
				// Posición del Joystick
				printf("\x1b[%d;%dH", 3, 20);
				printf("Angulo: \%f", wmote_data->exp.nunchuk.js.ang);
				printf("\x1b[%d;%dH", 4, 20);
				printf("Magnitud: \%f", wmote_data->exp.nunchuk.js.mag);
 
				// Botones C y Z
				procesaboton(pressed, 20, 4, WPAD_NUNCHUK_BUTTON_C, "C");
				procesaboton(pressed, 20, 5, WPAD_NUNCHUK_BUTTON_Z, "Z");
 
				break;
			case WPAD_EXP_CLASSIC: // Mando clasico conectado
				printf("\x1b[%d;%dH", 0, 20);
				printf("Mando Clasico");
 
				// Posición del Joystick izquierdo
				printf("\x1b[%d;%dH", 1, 20);
				printf("Angulo: \%f", wmote_data->exp.classic.ljs.ang);
				printf("\x1b[%d;%dH", 2, 20);
				printf("Magnitud: \%f", wmote_data->exp.classic.ljs.mag);
				// Posición del Joystick derecho
				printf("\x1b[%d;%dH", 3, 20);
				printf("Angulo: \%f", wmote_data->exp.classic.ljs.ang);
				printf("\x1b[%d;%dH", 4, 20);
				printf("Magnitud: \%f", wmote_data->exp.classic.ljs.mag);
				procesaboton(pressed, 20, 5, WPAD_CLASSIC_BUTTON_ZL, "1");
				procesaboton(pressed, 20, 6, WPAD_CLASSIC_BUTTON_ZR, "2");
				procesaboton(pressed, 20, 7, WPAD_CLASSIC_BUTTON_A, "A");
				procesaboton(pressed, 20, 8, WPAD_CLASSIC_BUTTON_B, "B");
				procesaboton(pressed, 20, 9, WPAD_CLASSIC_BUTTON_PLUS, "+");
				procesaboton(pressed, 20, 10, WPAD_CLASSIC_BUTTON_MINUS, "-");
				procesaboton(pressed, 20, 11, WPAD_CLASSIC_BUTTON_LEFT, "<-");
				procesaboton(pressed, 20, 12, WPAD_CLASSIC_BUTTON_RIGHT, "->");
				procesaboton(pressed, 20, 13, WPAD_CLASSIC_BUTTON_UP, "^");
				procesaboton(pressed, 20, 14, WPAD_CLASSIC_BUTTON_DOWN, "v");
				break;
			case WPAD_EXP_GUITARHERO3: // Conectado Guitar Hero
				printf("\x1b[%d;%dH", 0, 20);
				printf("Guitar Hero 3");
				break;
			default: // Tipo de expansión desconocida
				printf("\x1b[%d;%dH", 0, 20);
				printf("%d", expansion_type);
		}
 
 
 
 
		// Volvemos al launcher cuando pulsamos el botón Home
		if ( (pressed & WPAD_BUTTON_HOME) | (ret < 0)) exit(0);
 
		// Esperamos al siguiente frame
		VIDEO_WaitVSync();
	}
 
	// Terminamos de trabajar con el wiimote
	WPAD_Shutdown();
 
	return 0;
}
 
 
void Init_Video(void) {
	// Initialise the video system
	VIDEO_Init();
 
 
	// Obtain the preferred video mode from the system
	// This will correspond to the settings in the Wii menu
	rmode = VIDEO_GetPreferredMode(NULL);
 
	// Allocate memory for the display in the uncached region
	xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
 
	// Initialise the console, required for printf
	console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
 
	// Set up the video registers with the chosen mode
	VIDEO_Configure(rmode);
 
	// Tell the video hardware where our display memory is
	VIDEO_SetNextFramebuffer(xfb);
 
	// Make the display visible
	VIDEO_SetBlack(FALSE);
 
	// Flush the video register changes to the hardware
	VIDEO_Flush();
 
	// Wait for Video setup to complete
	VIDEO_WaitVSync();
	if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
}

Si queréis saber más al respecto, podéis investigar vosotros mismos en los ficheros wpad.h y wiiuse.h.

Para la segunda parte del tutorial, tengo previsto pasar a explicar la funcionalidad de la vibración (Rumble), del sonido de los mandos y de los acelerómetros.

Espero que os haya gustado el tutorial, ahora……a disfrutar programando.

4.366665
Tu voto: Ninguno Votos totales: 4.4 (60 votos)

Anuncios Google

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de pusana

retardo en la imagen

Hola, resulta que tengo un retardo cuando muevo el puntero con la imagen del televisor de unos segundos y eso impide jugar bien. Este tutorial me podría solucionar este problema?

Gracias


Lengua fuerapusanaGuiño

Imagen de NaxoR93

Hola, este tutorial no es

Hola, este tutorial no es para eso. Lo más probable es que tú hayas cambiado de TV con la que usabas la consola y se te empezó a presentar ese problema, ¿es así? Revisa este tutorial por si te ayuda:

http://wii.scenebeta.com/tutorial/solucion-al-lag-o-retardo-...

Saludos.


Mi entrada de bitácora: 3 años: Historia de un Editor

Si tienes una duda, por favor realízala en los foros o en la noticia correspondiente, ya que así también ayudas a otros usuarios. No respondo dudas por mensajería privada.

Tengo unas dudas

Tengo unas dudas:

  1. ¿Dónde debo de extraer la carpeta? ¿Cón que nombre?
  2. ¿Dónde programo, en la carpeta extraída o en una que cree yo?
  3. En caso de que sea una carpeta que cree yo, ¿qué archivos copio?
  4. ¿Por qué no me responde nadieeeeeeeeeeeeeee?
Imagen de david86

Hay cosas que no entiendo.

Hola a tod@s,
Quisiera dar las gracias a todos por el trabajo realizado aqui.He seguido los anteriores tutoriales de cesar y se lo basico bueno tal vez ni eso jajaja.He leido varias veces este tutorial y me han surgido unas dudas esperon que me puedan ayudar.
1 En mi afan de aprender mas sibre la programacion he dado muchas vueltas y he obsaervado que algunas librerias son de C y eso no afectara a la hora de compilar es decir no tendre problemas?
2 Los programillas que he hecho son muy basicos (el hola mundo y un button testter modificado para que cada boton sea de un color) pero no entiendo lo de las funciones y los bucles y los tipos de whiles se que hay varios pero nada mas.Tal vez este tuto me venga grande.
3 Es completamente necesario descargar ese archivo del principio.Es que no dispongo de internet.
4 He dejado unas dudas en el foro de programacion y no han recibido respuesta espero que alguien se apiade de mi y le heche un vistazo.
Por ultimo dar las gracias y seguid asi.
Saludos

Imagen de wilco2009

Intentaré responderte por

Intentaré responderte por orden:

  1. El lenguaje usado en programación para Wii es el C. Todas las bibliotecas utilizadas son estándar C o bibliotecas específicas para gestionar el Hardware de Wii. Si tienes correctamente instalado el devkitpro con todas sus bibliotecas no deberías tener ningún problema para compilar.
  2. Para entender los bucles y las funciones estándar de C necesitas aprender C. No pretendemos en ninguno de estos tutoriales enseñar C (quizás dar alguna pequeña pincelada) ya que para esto hace falta un tutorial específico mucho más largo.Te sugiero que le eches un vistazo a alguno de los tutoriales que se pueden encontrar en internet. (por ejemplo este: 
    http://www.elrincondelc.com/cursoc/cursoc.html)
  3. No, no es necesario descargar el archivo del principio, pero sí muy conveniente. Puedes recuperar todo el código que viene listado al final del tutorial, pero el archivo makefile no viene listado y si no sabes como configurar este tipo de archivos podría ser un problema. Te recomiendo que te descargues el archivo .rar desde algún sitio con acceso a internet.
  4. Ya te he respondido a algunas de ellas, vuelve a echar un vistazo en el foro.

Curso aplicado de GRRLIB - Parte 1 - Parte 2 - Parte 3 - Parte 4 - Parte 5 - Parte 6 - Parte 7 - Parte 8 - Parte 9 - Parte 10 - Parte 11

Profundizando en los mandos de la Wii - Parte 1 - Parte 2 - Parte 3  - Parte 4 (Balanceboard) - Parte 5 (Miis) 

Homebrew - WiiTriis -  LifemiiWii

no soi capad de hackear la wi

Hola, tengo una wii 4.3E y he probado todo lo relacionado con el pirateo y no doi, el primer problema es que cuando ejecuto los cios los mandos dejan de funcionar y la wii no responde por lo que tengo que desenchufarla de la corriente, he intentado descargarme todos los programas con relacion a esto pero hai uno que no se me ejecuta con CMD (GRRLIB), tampoco tengo wi-fi, pero de todos modos si me podeis guiar como proceder os lo agradeceria.

Un saludo.

Imagen de wilco2009

Este hilo no es el adecuado

Este hilo no es el adecuado para tu pregunta. GRRLIB es una biblioteca de programación para hacer software casero para Wii.

Lo mejor que puedes hacer es seguir este hilo: http://wii.scenebeta.com/tutorial/piratear-wii-sin-chip


Curso aplicado de GRRLIB - Parte 1 - Parte 2 - Parte 3 - Parte 4 - Parte 5 - Parte 6 - Parte 7 - Parte 8 - Parte 9 - Parte 10 - Parte 11

Profundizando en los mandos de la Wii - Parte 1 - Parte 2 - Parte 3  - Parte 4 (Balanceboard) - Parte 5 (Miis) 

Homebrew - WiiTriis -  LifemiiWii

problema resuelto

ya resolvi el problema, lo que paso fue que como yo empeze con los tutos de csar crei que habia que compilarlo igual, pero ya vi que no jeje. muchas gracias

pd: muy bueno tu tutorial

no lo puedo compilar

ese es mi problema no puedo compilarlo esto es lo que dice la ventana:C:\util>SET WIILOAD=tcp:192.168.1.10

C:\util\wiiload mandos.dol "fat:/" wiiload v0.4

codded by dhewg, #wiidev efnet

error opening the file: no such file or directory

C:\util>pause

presione una tecla para continuar

hay que ponerlo en alguna carpeta en paricular? espero tu respuesta

 

Imagen de wilco2009

Lo primero es que debes tener

Lo primero es que debes tener instalado el devkitpro. Si no lo tienes debes seguir el tutorial número 1 del curso de GRRLIB que viene explicado en detalle o bien en el curso de csar tal y como te indica en este tutorial.

El contenido de los rar lo debes descomprimir en cualquier carpeta de tu disco duro y después para compilarlo lo puedes hacer de dos maneras:

1 - abrir el archivo mandos.pnproj desde el programmers notepad y pulsar Alt+1

2 - escribir make desde la misma carpeta en la que has descomprimido los archivos.

El archivo .bat que viene en el paquete es para pasar el programa via wifi a tu Wii, pero para ello debes haber copiado primero el archivo wiiload.exe en la carpeta c:\util y tener configurada tu wii para conectarse a tu red wifi.

Otra manera de ejecutar el archivo es copiarlo manualmente a la SD y ejecutarlo, por ejemplo con el wiiexplorer.

 


Curso aplicado de GRRLIB - Parte 1 - Parte 2 - Parte 3 - Parte 4 - Parte 5 - Parte 6 - Parte 7 - Parte 8 - Parte 9 - Parte 10 - Parte 11

Profundizando en los mandos de la Wii - Parte 1 - Parte 2 - Parte 3  - Parte 4 (Balanceboard) - Parte 5 (Miis) 

Homebrew - WiiTriis -  LifemiiWii

Imagen de Mikystars

otro link de descarga?¿

Holoa me podriais dar otro link de descarga esque an cerrado megaupload

Imagen de wilco2009

Ya están subido los fuentes

Ya están subido los fuentes de nuevo.

Gracias por el aviso.

Imagen de Mikystars

muchas gracias

muchas gracias por el nuevo link.

y denada por avisaros

Imagen de _Kamikaze_

.

estos tutoriales deberian aparecer aqui http://wii.scenebeta.com/tutorial/tutoriales-programacion-wi...

Imagen de wilco2009

Estoy de acuerdo

Estoy de acuerdo contigo.

¿Quien debería encargarse de ello?

Imagen de NaxoR93

Yo me encargo.Saludos.

Yo me encargo.

EDITO: Todos colocados donde corresponde.

Saludos.

Imagen de babadioso

Librerias en visual net....

sabe alguien si existen liobrerias para controlar los controles de wii en plataforma NET, seria interesante ejecutar tecnicas de control con motores y sensores por medio del mando Wii.... o controlar por mediod e bluthtoot otros dispositivos por medio de la consolay el control.... espero alguien sepa algo y comenten el tema!!!

Imagen de wilco2009

Las librerias de wiiuse las

Las librerias de wiiuse las tienes, además de para Wii, tambien para Linux y Windows.

Yo no las he probado pero si accedes a la página oficial, igual puedes averiguar tú algo.

 

http://www.wiiuse.net/docs/index.htm

 

Espero que te sirva de ayuda


Curso aplicado de GRRLIB - Parte 1 - Parte 2 - Parte 3 - Parte 4 - Parte 5 - Parte 6 - Parte 7 - Parte 8 - Parte 9 - Parte 10 - Parte 11

Profundizando en los mandos de la Wii - Parte 1 - Parte 2 - Parte 3  - Parte 4 (Balanceboard) - Parte 5 (Miis) 

Homebrew - WiiTriis -  LifemiiWii

Imagen de adrianako

esta muuuuy bien el tutorial.

esta muuuuy bien el tutorial. Ya estuve viendo los 4 anteriores y otros mas en otra pagina con la libreria multiusos.h y algunas funciones no se escriben iwal como printf ke seria screenFontPrintf();

 

y nada, cuando tenga algo de tiempo mirare este (y la 2ª parte ke ya veo ke has hecho ya)

hay ke aprovechar al maximo y bien el material ke nos brindas ya ke en la red hay muy poko sobre el tema, y lo ke hay la mayoria esta en ingles, cosa ke aun dificulta mas el aprendizaje pero bueno, como bien dices, si a 4 o 5 les sirve tu trabajo, ke sepas ke yo soy uno de esos 4 o 5 :D gracias y animo para hacer mas tutoriales educativos, ke son realmente estos tutoriales donde una vez aprendido lo expuesto, nos vienen pekeñas ideas para pekeños proyectos, dandole un fin personalizado a todas las funciones ke podemos utilizar!!

gracias de nuevo, hasta pronto ;)

Imagen de wilco2009

Muchisimas gracias. Ver que

Muchisimas gracias.

Ver que hay gente que le gusta todo esto es lo que anima a continuar.

Saludos, y aquí estoy para lo que queráis.


Curso aplicado de GRRLIB - Parte 1 - Parte 2 - Parte 3 - Parte 4 - Parte 5 - Parte 6 - Parte 7 - Parte 8 - Parte 9 - Parte 10 - Parte 11

Profundizando en los mandos de la Wii - Parte 1 - Parte 2 - Parte 3  - Parte 4 (Balanceboard) - Parte 5 (Miis) 

Homebrew - WiiTriis -  LifemiiWii

Perdon, pero no acabo de

Perdon, pero no acabo de entender para que vale este tutorial, seria conveniente que lo pusieses por el principio para los usuarios menos hábiles ;)

La verdad es que me interesa, espero vuestra respuesta gracias :)

Imagen de wilco2009

El objetivo del tutorial es

El objetivo del tutorial es aprender a hacer un programa en C que funcione en nuestras Wii y que muestre en pantalla los siguientes datos:

- El mando que está encendido.

- Los botones que hemos pulsado en dicho mando.

- La posición X, Y a la que apunta (a esto se le llama IR en el tutorial porque utiliza tecnología de Infrarrojos igual que el mando a distancia de la tele.

- El angulo de giro de dicho mando.

- Si tiene un Nunchuk, o un mando clasico conectado (a estos dispositivos se les llama extensión en el tutorial)

- Qué botones del Nunchuk o del mando clasico que hay pulsados.

- La posición del Joystik del Nunchuk o de los Joysticks izquierdo y derecho del mando clasico.

 

El objetivo del tutorial no es comenzar por el principio, sino continuar suponiendo que hemos seguido los 4 tutoriales de csar.ale que están magnificamente explicados y que sí que empiezan desde el principio.

En los tutoriales de Csar se empieza explicando el entorno de programación y se terminando en una versión de button tester parecida a esta pero solo mostrando el estado de los botones del mando.

Si pese a todo hay demanda de un turial "Parte 0" que explique todo desde el principio, intentaré sacarlo después de terminar el que estoy escribiendo en este momento.

Aquí os dejo el enlace a los tutoriales de csar.ale para que los probéis y y a me decis.

http://wii.scenebeta.com/tutorial/cursos-basicos-de-programacion-en-c-para-wii

 


Curso aplicado de GRRLIB - Parte 1 - Parte 2 - Parte 3 - Parte 4 - Parte 5 - Parte 6 - Parte 7 - Parte 8 - Parte 9 - Parte 10 - Parte 11

Profundizando en los mandos de la Wii - Parte 1 - Parte 2 - Parte 3  - Parte 4 (Balanceboard) - Parte 5 (Miis) 

Homebrew - WiiTriis -  LifemiiWii

Imagen de quiquecold

Falta analizar el modo de

Falta analizar el modo de almacenamiento que tiene el wiimote.

Pero saldrìa en otro tutorial , o no està previssto eso???

A travès de esto serìa bueno poder modificar para poder convertir el wiimote en un medio de almacenamiento general entre wiis, y no solamente para llevar y almacenar datos de los Mii entre wiis.

Por ejemplo llevar los saves de una consola a otra.

Saludos y Bendiciones


Quique

Imagen de wilco2009

Estoy investigandolo ahora

Estoy investigandolo ahora mismo.

Tengo información de como acceder a través del Bluetooth y de la estructura de datos, pero en las librerías que vienen con el devkitpro no está muy claro como poder hacerlo.

Si consigo la información haré un tuto con eso.

De todas formas hay mucho que ver en los siguientes tutoriales que tengo preparados.

 

EDITO: Lo prometido es deuda:

http://wii.scenebeta.com/node/30751


Curso aplicado de GRRLIB - Parte 1 - Parte 2 - Parte 3 - Parte 4 - Parte 5 - Parte 6 - Parte 7 - Parte 8 - Parte 9 - Parte 10 - Parte 11

Profundizando en los mandos de la Wii - Parte 1 - Parte 2 - Parte 3  - Parte 4 (Balanceboard) - Parte 5 (Miis) 

Homebrew - WiiTriis -  LifemiiWii

Imagen de quiquecold

Que tal Probè hasta el

Que tal

Probè hasta el nunchuck y va de lujo y rapido, siguiendo el tutorial, uno se da cuenta de como funciona, estos dispositivos inclusive se puede aumentar la velocidad.El control clàsico no le tomè mucha importancia

Con eso esperarè, al segundo tutorial.

Saludos y Bendiciones


Quique

Imagen de Rikadoh

Perfecto!!!

Si algun dia me animo, seguire estos tutoriales ;)

Paz!!

Imagen de --Vito--

Hay algo que no entendí. ¿El

Hay algo que no entendí. ¿El tester que creamos con este tuto sirve sólo para ver la capacidad actual del mando de wii o para mejorarla?

Imagen de quiquecold

Por lo general para ver para

Por lo general para ver para la capacidad de funcionamiento de su programaciòn, inclusive a travès de su estructura de su lenguaje de programaciòn, permite analizar las reacciones que tanto el sensor hacia y desde los componentes de cada una de la wii, maneja.

Es como que que fueran parte del equipo de programadores de nintendo, la diferencia es que nintendo ya lo realizò y nosotros podemos ver y comprobar.

Saludos y Bendiciones


Quique

Imagen de wilco2009

Únicamente para aprender a

Únicamente para aprender a utilizar las capacidades del mando.

La idea es profundizar en su conocimiento para ser capaces de crear nuestros propios Homebrews explotando todas sus posibilidades.

El primero es muy sencillo y es simplemente un buttontester potenciado, pero en los próximos tutoriales se va incrementando la complejidad, llegando a poder haceros algunos sencillos juegos, como un tiro al blanco y una balanza electronica que habla explotando las posibilidades de la BalanceBoard.


Curso aplicado de GRRLIB - Parte 1 - Parte 2 - Parte 3 - Parte 4 - Parte 5 - Parte 6 - Parte 7 - Parte 8 - Parte 9 - Parte 10 - Parte 11

Profundizando en los mandos de la Wii - Parte 1 - Parte 2 - Parte 3  - Parte 4 (Balanceboard) - Parte 5 (Miis) 

Homebrew - WiiTriis -  LifemiiWii

Imagen de noel_9

Ge-Ni-Al, XD

Esta genial el tutorial y esplicas todo muy claro(por lo menos para mi) estoy deseando ver la segunda parte

lo de la vibracion y el sonido suena(vaya hironia jeje) interesante ;)

has hecho un gran trabajo y seguro que te lo agradeceremos muchos jeje

Saludoos


[url=http://www.wiinnertag.com][img]http://www.wiinnertag.com/signature/noel_9.jpg[/img][/url]

 

 

Hay 10 tipos de personas, las que entienden binario y las que no.


Imagen de bad2795

¿ de que sirve esto ?

de que sirve esto ??

Imagen de mastermatiel1

Por favor

Si lees mas puedes obserbar que nos enseña a programar, por favor no seas tan seco en tu respuesta, ya que puedes hacer que el autor se moleste, ha echo un gran trabajo para que nosotros disfrutemos, podrias minimo agradeser, desde ya gracias y saludos ;).

 

Gracias por el Tuto, esta muy bueno he interesante, sigue haci que dentro de poco tengo clarito lo de programacion jeje, un saludo y gracias ;).


  The Allies, tu lugar para ayudar y ser ayudado.

Mantenemos un gran respeto hacia los usuarios que empiezan, y asi seguira siendo. Por estocreemos justo que se respeten nuestras normas de convivencia. Manual del perfecto forero.

Imagen de bad2795

jaja deveras no se T_T

no se que funcion tiene , que ase o que , iguala el wii mation plus o que .. ?????

Imagen de wilco2009

Como decía abajo, solo sirve

Como decía abajo, solo sirve para aprender como se utilizan los mandos desde un programa en C. Lo que te permite, por ejemplo, programar tus propios juegos.

No tiene utilidad por si mismo si no pretendes aprender a programar para Wii.


Curso aplicado de GRRLIB - Parte 1 - Parte 2 - Parte 3 - Parte 4 - Parte 5 - Parte 6 - Parte 7 - Parte 8 - Parte 9 - Parte 10 - Parte 11

Profundizando en los mandos de la Wii - Parte 1 - Parte 2 - Parte 3  - Parte 4 (Balanceboard) - Parte 5 (Miis) 

Homebrew - WiiTriis -  LifemiiWii

Imagen de wilco2009

Por supuesto que no me

Por supuesto que no me molesto.

No nos tiene porqué gustar a todos lo mismo, sino el mundo sería muy aburrido.

A mi me encanta programar. Mucho más que jugar a una consola. Y aunque al final todo esto solo sirva para disfrutar programando, para mi merece la pena. Especialmente cuando lo que programas es algo que inicialmente no está pensado para que lo pueda programar cualquiera. Es la atracción de lo desconocido.

Entiendo que a otros pueda no gustarle, pero solo con que a algunos de los que leais esto os guste, a mi me habrá valido la pena el tiempo que he invertido.


Curso aplicado de GRRLIB - Parte 1 - Parte 2 - Parte 3 - Parte 4 - Parte 5 - Parte 6 - Parte 7 - Parte 8 - Parte 9 - Parte 10 - Parte 11

Profundizando en los mandos de la Wii - Parte 1 - Parte 2 - Parte 3  - Parte 4 (Balanceboard) - Parte 5 (Miis) 

Homebrew - WiiTriis -  LifemiiWii

Imagen de bad2795

AHHHH

PERO QUE FUNCION TIENE ??? !!!!!!

Editado: El úso abusivo de las letras mayúsculas dificulta la lectura y en los foros equivale a gritar además incumple las Normas de la comunidad, antes de volver a postear por favor revíselas.| Rafael jesus

Imagen de mastermatiel1

Pues

No dije que le deve gustar, me habeis malinterpretado, lo que quise espresar es que no fuera tan seco como para responder de esa manera, osea no hay entrada para tal comentario, caundo lo ley quede O.o, digo por favor un poco mas de respeto, sinceramente ha mi si me ha caido gordo, pero bueno es tu tuto, es como tu veas, si te molesta bien y si no bueno puedes desirlo, en este caso a mi si, espero me entiendas, trate de no ser muy trillado je, un saludo y cuidate ;).

P.D: Lo que trate de expresar es que tenga un poquito mas de respeto a alguien que se ha dedicado a hacer tal trabajo y pues a mi tambien me gusta la programacion jaja, pero yo lo ago a nivel de la computadora, pero por haora estoy viendo la posibilidad de empesar con la Wii, un saludo gradne y cuidate ;).


  The Allies, tu lugar para ayudar y ser ayudado.

Mantenemos un gran respeto hacia los usuarios que empiezan, y asi seguira siendo. Por estocreemos justo que se respeten nuestras normas de convivencia. Manual del perfecto forero.

Imagen de wilco2009

Muchas gracias compañero por

Muchas gracias compañero por tu apoyo. Por supuesto que se debería intentar ser respetuosos con los que publican.

Aquí estoy para lo que queráis.


Curso aplicado de GRRLIB - Parte 1 - Parte 2 - Parte 3 - Parte 4 - Parte 5 - Parte 6 - Parte 7 - Parte 8 - Parte 9 - Parte 10 - Parte 11

Profundizando en los mandos de la Wii - Parte 1 - Parte 2 - Parte 3  - Parte 4 (Balanceboard) - Parte 5 (Miis) 

Homebrew - WiiTriis -  LifemiiWii

Imagen de mastermatiel1

Pues muchas gracias

Ha ese punto queria llegar, gracias por comprender y pues cualquier duda que tenga te lo comunicare, pero con lo vien que esta redactado todo es muy dificil jajaja, muchas gracias y saludos.

Mejor la dejamos por aqui por que si no, nos van a retar por Off-Topic, un saludo y cuidate ;).


  The Allies, tu lugar para ayudar y ser ayudado.

Mantenemos un gran respeto hacia los usuarios que empiezan, y asi seguira siendo. Por estocreemos justo que se respeten nuestras normas de convivencia. Manual del perfecto forero.

Ante todo muchas gracias por

Ante todo muchas gracias por el tutorial. Me pareció muy interesante y de gran utilidad. Es increíble el peazo de curre que hacéis algunos para enseñarnos este tipo de cosas.

Mi más sincera enhorabuena.

Un saludo.

Imagen de JAVIenigma

Como siempre mi sincera

Como siempre mi sincera felicitación para todos aquellos que dedicais vuestro tiempo y esfuerzo en realizar estos tutoriales, noticias, aportes para compartir con toda la comunidad. Ya sólo el hecho de hacerlo se merece un GRACIAS.

Saludos

Imagen de wilco2009

Gracias a vosotros por

Gracias a vosotros por hacerlo posible con esta fantástica web.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.