#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <ogcsys.h>
#include <gccore.h>
#include <wiiuse/wpad.h>

//incluimos librerias

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

int main(int argc, char **argv) {//iniciamos la función "main()"

VIDEO_Init();//Iniciamos el video
PAD_Init();//Iniciamos el pad
WPAD_INIT();//Iniciamos wiimote


rmode = VIDEO_GetPreferredMode(NULL);//Esto recibe el tipo de "monitor" y la configuración que tienes en la wii

xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));//Inicia el buffer


CON_InitEx(rmode, 20,30,rmode->fbWidth-40,rmode->xfbHeight-60);//Inicia el modo consola

VIDEO_ClearFrameBuffer(rmode,xfb,COLOR_WHITE);//Borde de la pantalla, color blanco
VIDEO_Configure(rmode);//Le dices a la consola que modo de vídeo que usar y la pantalla se configura según esto
VIDEO_SetNextFramebuffer(xfb);//Le dices donde guardar el siguiente buffer
VIDEO_SetBlack(FALSE);//Sirve para poner pantalla en negro
VIDEO_Flush();//Vaciamos el buffer
VIDEO_WaitVSync();

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

/*TEXTO*/


printf(" \n\n");//2 saltos de línea

printf("Hola mundo!\n");/*ponemos texto y un salto de línea para que lo lea.
La función printf no pone el texto en el monitor, lo almacena en el buffer y , con el salto de línea,
conseguimos que salga en ella*/
printf(" \n\n");//2 saltos de línea

printf("Hola mundo realizado por Rigle y explicado por el con ayuda de Waninkoko y marcan\n");
printf("Gracias a Marcan y demas gente por la liboGC, que hacen posible el homebrew en wii\n");


while(1) {

WPAD_ScanPads();//Inicia el escaneo de wiimotes
u32 pressed = WPAD_ButtonsDown(0);
if ( pressed & WPAD_BUTTON_HOME ) exit(0);//Si se pulsa el botón home se vuelve al menu de la wii
VIDEO_WaitVSync();//Esperamos a que se haga un refresco de pantalla para comenzar el redibujado de pantalla
}

return 0;
}//Final del main