Usuario:   
Contraseña: ¿No estás registrado?

:: Publicidad y patrocinios ::

Programación Wii - Template comentado

De ElOtroLado

Este artículo está en construcción.

Por esta razón, seguramente habrá lagunas en el contenido o en el formato. Por favor, antes de cambiar el contenido, consulta la página de discusión del artículo.

Descripción

El programa generado por este código es el famoso "Hello World". O lo que es lo mismo, que lo único que vamos a hacer es mostrar en pantalla el mensaje "Hola mundo".

printf("Hola Mundo!\n");

La función encargada de imprimir una cadena de texto en pantalla es en este caso printf("el texto de marras");
Añadiendo \n al final del texto hacemos que se "salte una línea", esto es, que si volvemos a utilizar la función printf(); el siguiente texto se mostrará una línea más abajo.

Aprovecharemos también el código para comprobar cómo se lee el estado de los botones, en nuestro caso el programa dejará de ejecutarse en el caso de que se presionen simultáneamente Z y Start.

if( (botonesPulsados & PAD_TRIGGER_Z) && (botonesPulsados & PAD_BUTTON_START) ) exit(0);

Anteriormente habremos tenido que refrescar la información de los pads conectados: PAD_ScanPads();

A continuación creamos una variable de tipo int para almacenar el valor que nos devuelva la función encargada de si los botones están siendo pulsados.
int botonesPulsados = PAD_ButtonsHeld(0);


Código

//LIBRERIAS////////////////////////////////////////////////////////////////////////////////////////
#include <stdio.h>  //Para manejar de ficheros
#include <stdlib.h> 
#include <string.h> //Funciones para operar con cadenas: strcpy(), strcmp()...
#include <malloc.h> //
#include <ogcsys.h>
#include <gccore.h>

//DATOS GLOBALES///////////////////////////////////////////////////////////////////////////////////
static void *xfb = NULL; //Puntero que señalará a nuestro frame buffer (pantalla virtual)
static GXRModeObj *rmode = NULL; //Estructura para cargar los datos del modo de vídeo

//-------------------------------------------------------------------------------------------------
// MAIN
//-------------------------------------------------------------------------------------------------
int main(int argc, char **argv) {

	//Inicializaciones.............................................................................
	VIDEO_Init(); // Iniciamos e modo de video
	PAD_Init(); //Iniciamos la gestión de los pads
	
	//Establecer modo de vídeo.....................................................................
	switch(VIDEO_GetCurrentTvMode()) {  //Averiguamos qué modo de video usa la consola...
		case VI_NTSC:
			rmode = &TVNtsc480IntDf; //...y cargamos la información de éste en rmode
			break;
		case VI_PAL:
			rmode = &TVPal528IntDf;
			break;
		case VI_MPAL:
			rmode = &TVMpal480IntDf;
			break;
		default:
			rmode = &TVNtsc480IntDf;
			break;
	}

	//Reservamos memoria para la pantalla virtual en función de la resolución que emplearemos.....
	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("Hola Mundo!\n"); //Imprimimos en pantalla la cadena 

	while(1) { //Lanzamos un bucle infinito (se ejecuta mientras 1 sea distinto de 0)
 		PAD_ScanPads();  //Actualizamos la información sobre el estado de los pads
               int botonesPulsados = PAD_ButtonsHeld(0); //Cargamos nuestra variable
               if( (botonesPulsados & PAD_TRIGGER_Z) && (botonesPulsados & PAD_BUTTON_START) ) exit(0); 
		VIDEO_WaitVSync();  //Esperamos al retrazo vertical
        }//fin del while

	return 0;
}


Apuntes

Pendiente

MediaWiki