Mostrando entradas con la etiqueta Wii. Mostrar todas las entradas
Mostrando entradas con la etiqueta Wii. Mostrar todas las entradas

viernes, 22 de enero de 2010

Tetris para la Wii

Como ya comentamos en una entrada anterior vamos a ver como pasar el Tetris de la DS a la Wii.

Lo primero de todo es bajar el Tetris para la DS, y ponernos a cambiar las llamadas a la librería PAlib por las de la Wii. Para la Wii hay varias librerías disponibles, en nuestro caso hemos usado las librerías libwiisprite, para la parte gráfica, fat, para le acceso al disco y wpad para manejar el wiimote.

Por ejemplo el #include se debe cambiar por #include , #include y #include .

Por ejemplo las llamadas de tipo PA_Init, PA_InitVBL() y PA_InitText por gwd.InitVideo, donde se ha definido gwd de tipo GameWindow, fatInitDefault y WPAD_Init();.

Otra cosa, las librería del Wii que he usado están en C++, por lo que hay que pasar de tetris.c a tetris.cpp. He utilizado la nomenclatura de objetos con . en vez de con ->. Esto es debido a que todos los ejemplo venían con . y como he hecho Copy/Paste pues así es como ha quedado.

Este es el código para cargar el fondo:

Image img_fondo;
 if (img_fondo.LoadImage("fondo.png") != IMG_LOAD_ERROR_NONE) exit(0);
  Sprite fondo;
  fondo.SetImage(&img_fondo);
  fondo.SetPosition(0, 0);

La explicación del código sería muy fácil: primero definimos la variable img_fondo de tipo Imagen y cargamos el fondo en este objeto, con la función LoadImage. Se crea un objeto de tipo Sprite y se le asocia la imagen. Finalmente lo colocamos en la posición 0, 0 y Ya tenemos el fondo.

Ahora toca cargar los tilset para las fichas y el tablero. Esto, si se ha seguido la programación del tetris de la DS, no sería necesario explicarlo mucho. Sólo comentaremos que un tileset es una zona gráfica que se puede rellenar con pequeñas imágenes para crear la imagen completa, a modo de ladrillos.

Para crear una zona de tilesets (el tablero del tetris y la fichas siguiente) usaremos
el objeto TiledLayer:

TiledLayer tablero_layer(TABLERO_ANCHO, TABLERO_ALTO, 8);
TiledLayer ficha_siguiente_layer(FICHA_ANCHO, FICHA_ALTO, 8);

Image tiles;
if (tiles.LoadImage("tiles16.png") != IMG_LOAD_ERROR_NONE) exit(0);
tablero_layer.SetStaticTileset(&tiles, 16, 16);
tablero_layer.SetPosition(160, 50);

ficha_siguiente_layer.SetStaticTileset(&tiles, 16, 16);
ficha_siguiente_layer.SetPosition(350, 50);

La explicación sería muy parecida a la de cargar el fondo. Se han creado dos objetos de tipo TiledLayer y a ambos se les asocia una imagen como StaticTileset. Esta será la que contendrá los ladrillos. Finalmente posicionamos los dos tilesets en la pantalla.

Ahora vamos a cargar todo en pantalla. Para esto se usa un LayerManager, al cual hay que asignarle los tres componentes que queremos que muestre:

LayerManager tablero_manager(3);
 tablero_manager.Append(&tablero_layer);
 tablero_manager.Append(&ficha_siguiente_layer);
 tablero_manager.Append(&fondo);
El orden es importante, el fondo debe ir al final.

En el próximo post veremos como utilizar el mando el wiimote como un mando clásico.

Saludos y feliz año.

P.D. Este es el primer y único desarrollo que he hecho para la Wii, así que no puedo decir si como se ha hecho es la mejor forma posible. Cargar un fondo en un objeto de tipo Sprite no parece muy correcto, pero es que no he encontrado otra forma de hacerlo. Me gustaría estudiar más a fondo la librería libogc pero, como siempre, la falta de tiempo...

viernes, 27 de noviembre de 2009

Qué se necesita para programar en Wii

O mejor dicho que he usado yo. En primer lugar, deciros que hay un emulador para Wii o gamecube que se llama dolphin-emu. Pero parece ser que necesita un montón de recursos. Yo lo he intentado ejecutar y me ha sido imposible.

Así que una vez más os voy a mostrar la forma 'chapucera' que tengo de trabajar con la Wii. En primer lugar vemos mi 'laboratorio'. Tengo un router wifi, un ordenador (en mi caso un portátil con ubuntu) y la Wii, estos dos últimos conectados al router, que es por él por donde salgo a Internet.

Me he bajado el ftpii que es un servidor de ftp para la Wii. Lo he copiado a la tarjeta SD de la Wii (dentro de apps) en una carpeta que he llama ftpii_clave, donde clave será nuestra contraseña de entrada.

En el Homebrew channel saldrá el ftpii como un programa a ejecutar. Lo hacemos y nos mostrará la IP con la que sirve los ficheros. Pues nada cogemos nuestro cliente de ftp (en mi caso el filezilla) que estará instalado en el portátil y nos conectamos a esa IP. Si la carpeta la hemos llamado ftpii_clave habrá que usar 'clave' como la contraseña de la cuenta.

Y ya está, tenemos acceso a la tarjeta SD de la Wii, sin tener que estar manipulándola todo el rato. Dentro de apps creo la carpeta del juego que estoy compilando y, eso sí, cambio el nombre del archivo ejecutable mi_programa.dol por boot.dol.

Para probar yo os animaría a instalar de esta forma cualquier otro programa homebrew que bajéis de Internet.

Saludos

viernes, 13 de noviembre de 2009

Programar para la Wii

Ya desde el primer post teníamos intención de programar algo para la Wii, y no ha sido hasta el pasado mes de Octubre que tuvimos un par de tardes libre y pudimos hacer las primeras pruebas.

En este post vamos a mostrar como preparar la instalación de devkitpro para poder compilar juegos para la Wii. En su día preparamos una instalación sobre ubuntu y ahora vamos a hacer que esa misma instalación soporte a la Wii, y a la Game Cube que es lo mismo.

En resumen podemos decir que es lo mismo que el otro día pero instalando las librerías libogc en vez de libnds. Vamos a ver paso a paso:

Lo primero será bajar todo lo necesario:

Bajar devkitPPC de http://sourceforge.net/projects/devkitpro/files/ (si no lo tenemos instalado ya)
libogc -> http://sourceforge.net/projects/devkitpro/files/libogc/ (libogc-1.7.1.tar.bz2)
libfat-ogc -> http://sourceforge.net/projects/devkitpro/files/libfat/ (libfat-ogc-1.0.4.tar.bz2)
Wii examples (optional) -> http://sourceforge.net/projects/devkitpro/files/examples/ (wii-examples-20090509.tar.bz2)

En segundo lugar todos estos comandos:
$ cd Escritorio

(Si no tenemos instalado devkitpro)
$ sudo mkdir /usr/local/devkitpro 'si ni existiera ya
$ sudo chmod 777 /usr/local/devkitpro 'si ni existiera ya
$ sudo bunzip2 devkitARM_r26-i686-linux.tar.bz2
$ sudo tar xvf devkitARM_r26-i686-linux.tar -C /usr/local/devkitpro

(Seguimos)
$ sudo bunzip2 devkitPPC_r17-i686-linux.tar.bz2
$ sudo tar xvf devkitPPC_r17-i686-linux.tar -C /usr/local/devkitpro
$ sudo mkdir /usr/local/devkitpro/libogc
$ sudo chmod 777 /usr/local/devkitpro/libogc
$ sudo bunzip2 libogc-1.7.1.tar.bz2
$ sudo tar xvf libogc-1.7.1.tar -C /usr/local/devkitpro/libogc
$ sudo bunzip2 libfat-ogc-1.0.4.tar.bz2
$ sudo tar xvf libfat-ogc-1.0.4.tar -C /usr/local/devkitpro/libogc

Ahora añadimos unas variables de contexto:

$ gksudo gedit /etc/environment

y añadimos al final las siguientes líneas:

DEVKITPRO="/usr/local/devkitpro"
DEVKITARM="/usr/local/devkitpro/devkitARM"
DEVKITPPC="/usr/local/devkitpro/devkitPPC"

Reiniciando la máquina ya podremos compilar los ejemplos.

Instalar libwiisprite:

Descargar de http://chaosteil.googlepages.com/libwiisprite-0.3.0b.tar.gz

Lo descomprimos en el mismo lugar donde lo descargamos y realizamos los siguientes pasos:

De la carpeta libwiisprite/libwiisprite/include copiamos todos los archivos a /usr/local/devkitpro/libogc/include
(en mi caso he ejecutado la siguiente acción desde un terminal: sudo cp /home/inigo/Escritorio/libwiisprite/libwiisprite/include/*.h /usr/local/devkitpro/libogc/include)
Ahora sudo cp /home/inigo/Escritorio/libwiisprite/libwiisprite/lib/*.a /usr/local/devkitpro/libogc/lib/wii

Lo mismo con la carpeta libwiisprite/libpng:
sudo cp /home/inigo/Escritorio/libwiisprite/libpng/include/*.h /usr/local/devkitpro/libogc/include
sudo cp /home/inigo/Escritorio/libwiisprite/libpng/lib/*.a /usr/local/devkitpro/libogc/lib/wii

Yo en este punto tuve un problema con libwiisprite y realicé los siguientes pasos:

Bajar una nueva compilación de http://www.mediafire.com/download.php?wwycxmg0j0x
y ejecutar: sudo cp /home/inigo/Escritorio/libwiisprite.a /usr/local/devkitpro/libogc/lib/wii

Descargar con Synaptic la librería libfreeimage

Si todo ha ido bien ya se podrá compilar los ejemplos que vienen con la librería.

Hemos instalado la librería libwiisprite, hay más librerías pero nosotros sólo vamos a usar esta, por ahora.

Y que vamos a hacer nosotros en este blog, pues algo muy sencillo, vamos a pasar el Tetris que hicimos para la DS a la Wii!!!

Para ir abriendo boca os dejo un video para que veáis como ha quedado el juego, si os fijaís bien es el mismo que el de la nintendo DS (sólo hemos cambiado el fondo).


Saludos

P.D. En los siguientes post sobre Wii veremos como trabajo con ella, pero lo que no puedo explicar bien es como crear el Homebrew channel. Lo hice hace un año y ahora hay nuevas formas de hacerlo y no tengo ni idea.

P.D. Seguimos con el tema del New Super Mario Bros. El próximo post será para él.

martes, 10 de noviembre de 2009

Retomamos

Ha habido un cierre temporal del blog estos meses, que espero que sea eso, temporal.

Como penitencia voy a crear unos post hablando de la Wii y de como programar para ella. Ya tengo portado el tetris (por ahora usando el mando como un pad) y no hemos pasado el New Super Mario Bros, porque lo van a hacer los de Nintendo este mes y no era cuestión de adelantarnos a ellos :D

Por supuesto, seguiremos con el New Super Mario Bros para la Nintendo DS.

Este viernes posteamos fijo!!!

Saludos

P.D. Hemos cambiado el título del blog, ahora es Programar para la Nintendo DS y Wii, la url por supuesto sigue igual!!