miércoles, 27 de mayo de 2009

Chapter 2 Compilacion de un hola mundo

Codigo principal del Template
Ahora, deberás abrir template.pnproj, o ir dentro del directorio source/ y abrir main.c. Este es el nombre recomendado, main.c es el archivo principal del programa. De hecho, contiene todos los elementos basicos que serán cargados por defecto cuando la rom se ejecute. El template main.c contiene todo lo necesario para ejecutar PAlib. Si tu compilas y ejecutas las roms en un emulador o en DS, Si compilaras y ejecutaras la rom en un emulador o DS, tal cual esta en el main.c, no pasaría nada, simplemente verías dos pantallas en blanco.... Esto es lo que ves la primera vez que abres main.c:
// Includes
#include // Include for PA_Lib

// Function: main()
int main(int argc, char ** argv)
{
PA_Init(); // Inicializa PA_Lib
PA_InitVBL(); // Inicializa un VBL standard

// Bucle infinito para mantener el programa funcionando
while (1)
{
PA_WaitForVBL();
}

return 0;
} // End of main()


Decodificando el código !
Si ya tienes conocimientos de programación en C++, probablemente esto te va a resultar muy secillo. Para los que no lo tienen, quizás no lo sea tanto, por eso detallaré cada linea a continuación... // Includes

Simple : // Significa que el texto a continuación es un comentario... Cuando ponemos //, le estamos diciendo al compilador que no compile lo que le sigue a la derecha, porlo que puedes escribir cualquier texto como comentarios! Esta linea esta solamente ahi para decir que puedes poner archivos para incluir aquí (imagenes, etc...) #include

Esto significa: Por favor incluye la librería Palib dentro de mi código, yo lo necesitaré ! Si no pones esto, las funciones de la librería Palib, no serán reconocidas, y obtendras errores. El concepto de usar includes, llegará a ser muy importante despues ya que los includes son usados para añadir archivos con graficos, otro código importante, y más. int main(int argc, char ** argv)
Esto puede verse raro, pero lo tendras en todos los projectos: es el comienzo de tu programa, donde todo comienza. No te preocupes intenando averiguar por que está :) simplemente que sepas que cualquier cosa detras de ‘{’ sera ejecutado ! PA_Init(); // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL

Estas 2 lines se usaran en todos los proyecto que usen Palib. La primera es una inicialización general. Esto prepara tu programa para usar sprites, fondos, texto, todo. Sin esto la Palib no empezará a funcionar. La segundo, con el VBL, puede ser modificada por usuarios avanzados. Basicamente, el VBL permite sincronizar el programa con la pantalla, a 60 frames por segundo. Si no inicializas el VBL, cualquier programa funcionara los más rápido posible (como 100000 frames por segundo, lo cual es injugable) o no funcionará del todo (quedándose colgado en el primer frame). Siempre debes dejar estas dos lineas en tu programa. // Infinite loop to keep the program running
while (1){
El comando while, ejecuta el codigo que sigue, en corchetes, mientras el resultado del comando en el (aquí esta a 1), es diferente de 0. Aquí, siempre es 1, asi basicamente este un loop infinito. Para que? Bien, si no tienes ese loop, cada linea del codigo sera ejecutada solamente una vez y el programa saldrá, sin mostrar nada más. Esto permite al programa continuar de manera infinita, o por lo menos hasta que es jugador pulse el boton de apagado. El concepto es que en cada ejecución atraves del loop while, el programa calculará todo lo que necesita para la proxima vez que dibuje la pantalla y despues lo dibujará. PA_WaitForVBL();
Este último comando sincroniza el loop infinito que comentamos antes, con la fracuencia de pantalla (60fps). Si no la pones, el programa funcionará como dije antes, MUCHO mas rapido que la frecuencia de la pantalla }

return 0;
} // End of main()
Todo esto es el final de codigo, siempre ahi, siempre como este, no te preocupes por el, solo dejalo ahi solo :p Ahora sabes todo sobre el template, vamos a ver como mostrar texto !

Hola Mundo
Un simple Hola Mundo, sirve para mostrar que facil puede ser... Con este no entraremos en detalles de programación para la DS, solo es para mostrarte que puede ser facil y para introducirte al dia 2 :p
El sistema de textos utiliza los backgrounds, normalmente un background (tienes cuatro capas para elegir), y tambien puedes elegir que pantalla y que y donde ponerlo.Hay otras funciones como configurar la fuente del texto, o cambiar el color de las letras, pero ya las veremos mas tarde :p
Puedes encontrar una copia (o muy similar) de este código en PAlibExamples/Text/Helloworld
#include //Include PAlib

int main(void)
{
PA_Init(); //Inicia la libreria PA_Lib
PA_InitVBL(); // Inicia el Vertical Blanking

PA_InitText(1,2); //Escribelo para escribir en la pantalla 1, background 2
PA_OutputSimpleText(1,1,1,"Hello World !"); //Escribe el texto en la pantalla 1, con coordenadas 1,1

while(1)
{
//Loop infinito para seguir ejecutando el programa indefinidamente
PA_WaitForVBL();
}

return 0;
}

Como puedes ver, la mayoria del código es muy similar, pero no es exactamente igual, al código basico.
En realidad hemos añadido dos lineas: PA_InitText(1,2); //Escribelo para escribir en la pantalla 1, background 2
PA_OutputSimpleText(1,1,1,"Hello World !"); //Escribe el texto en la pantalla 1, con coordenadas 1,1
Lo primero se usa para iniciar el texto, cargando la fuente del texto en la video ram de la DS. Si no se hiciese esto, el texto pareceria un garabato... deberia ser como escribir, pero cambiando cada letra de forma aleatoria ... no serviria ;) PA_InitText tiene 2 argumentos: la pantalla (0 para la pantalla inferior, 1 para la pantalla superior), y el background a usar (0 para la capa mas superior, 1 para la siguiente, 2, y 3 para la mas inferior...).
PA_OutputSimpleText(1,1,1,”¡Hola Mundo!”), como dijimos, escribe el texto en la pantalla. Si el
background fué iniciado con InitText... (En estos momentos, te habras dado cuenta que las funciones PAlib empiezan por PA_...) La funcion texto tiene 4 argumentos:
Pantalla (0-1)
Horizontal (X) tile desde el que empieza, desde 0 hasta 31. Cada tile es un cuadrado de 8×8 pixeles, asi que el tile 0 esta en la posicion 0, tile 1 en la posicion 8 (en pixeles), etc...
Posición vertical , es lo mismo que el horizontal, pero desde 0 hasta 23...
Texto... este texto empieza y acaba con ‘“‘, para que el compilador C lo reconozca...
Una vez entendido esto, simplemente pulsa F6 para compilar y ejecutarlo en DualiS, o F7 para compilarlo y ejecutarlo en DeSmuME ! Pulsando F5 hace una compilacion normal sin cargar la rom(se puede utilizar para compilarlo y pasarlo a la DS...).

viernes, 22 de mayo de 2009

Capitulo 1: Instalacion de palib

Esto no es para usuarios de linux, siento mucho comunicarselo, llevo mucho tiempo sin conseguir instalar palib en linux, y aunque es posible, yo no pndre como se pone.

Instalación
Bien, para tener todo lo necesario para la programación de la DS, primero debes descargar e instalar devkitPro, utilizando la ultima versión del instalador devkitPro updater.

Instala devkitPro con este estupendo instalador. ¡Cuidado! puedes desmarcar las librerías PSP ó GBA, pero por favor, deja el resto marcado (MSYS, devkitarm, libnds...). Si algo falta, no funcionará. Si no estás seguro, deja todo marcado y no tendrás problemas.

Ahora bien, los últimos paquetes de devKitPro instalan las librerias devKitARM_r26 en adelante, mientras que PALib, por ahora, trabaja con devKitARM_r21, por lo que vamos a instalarlo a parte. Para ello elimina o renombra la carpeta de devKitARM en la carpeta de devKitPro y luego descarga el paquete devKitARM_r21 y descomprimelo en el mismo lugar
descargar devKitARM_r21

Vamos a hacer lo mismo con la carpeta libnds que se encuentra en el directorio de devKitPro. Borramos la que hay y la sustituimos por la que podemos descargar aquí.
PAlib ahora requiere que tengas instalado .Net framework. Este es usado por PAGfx (convertidor de gráficos), PAFS (sistema de archivos) y el IDE VHam. ¡Obtenlo aquí!
A continuación, descarga e instala PAlib (usando el instalador): PAlib Installer. Instálalo en el mismo directorio que devkitPro y todo debería estar correcto.
Ten cuidado cuando vayas a instalar el devkitpro y la PALib, ya que no puedes hacerlo en una carpeta que contenga un espacio en el nombre (tal como “c:\DS Development\PA Lib\”). Igualmente, si está instalado en el Escritorio, tampoco funcionará, pues el directorio también contiene espacios en su “path” (”c:\Documents and Settings\...”).
Ahora que ya tenemos todo instalado... ¡Vayamos al siguiente paso!


Prueba de Compilación
Intentaremos compilar un ejemplo.
Abre PAlibExamples\Text\Helloworld\ y haz doble click sobre el fichero build.bat para compilarlo... si todo va bién, deberás de obtener 3 ficheros: helloworld.ds.gba, helloworld.nds y helloworld.sc.nds.
¡Ey, ha sido fácil!
Ahora, existen 2 formas de cargar las ROMs: usando emuladores (ten cuidado, tienen muchos bugs) ó directamente en hardware (flashme/passme/wifime/wmb)

informacion sacada de: http://http://www.palib.info/wiki/doku.php?id=day1es

domingo, 17 de mayo de 2009

Aqui podreis ver

Aqui podreis ver por capitulos como programar la nds...