Escrito por Helius.
Este tutorial se publicó en la entrada del 7 de Noviembre de 2006

Voy a intentar resumir los pasos que hay que dar para compilar un programa de PSP en Windows, usando Visual Studio 2005 como IDE.

Para empezar, debemos descargar el software que necesitaremos, PSPSDK y PSPBrew. PSPSDK es un conjunto de librerí­as amateur que nos proporcionan las herramientas necesarias para programar la PSP con C/C++. Vamos a descargar una versión preparada para Windows que viene con todo, compilador gcc, librerías, algunas herramientas cygwin, ejemplos, etc:

PSPSDK

La siguiente herramienta, PSPBrew, nos permitirá adaptar nuestro programa final para que pueda ser ejecutado en el firmware 1.5. Además nos ayudará a insertar las imágenes y sonidos que aparecen en el menú de la consola cuando seleccionamos un juego.

PSPBrew

Una vez tengamos las dos cosas, comenzaremos por instalar el SDK. Debemos instalarlo en una ruta sin espacios. Recomiendo dejar su ruta por defecto: “c:\pspdev”. Cuando la instalación nos pregunte sobre las variables de entorno le diremos que las defina para todos los usuarios (la primera opción).

Vamos a probar que todo funciona. Para ello trataremos de compilar uno de los ejemplos.

Abrimos una ventana de comandos (cmd) y nos desplazamos a cualquiera de los directorios de ejemplos que hay en el SDK en “c:\pspdev\psp\sdk\samples” (recordad cambiar la ruta si no habeis dejado la ruta por defecto):

Por ejemplo a este: “cd c:\pspdev\psp\sdk\samples\gu\lights”.

Ahora ejecutamos el comando “make”. Si todo va bien, gcc habrá mostrado el resultado de la compilación. Si nos fijamos en esta carpeta, ahora existirán unos cuantos archivos más, entre ellos uno llamado EBOOT.PBP. Este fichero es el binario de nuestro programa y ya podrí­amos ejecutarlo en una PSP con firmware 1.0.

Para poder ejecutar nuestro programa en el firmware 1.5 deberemos usar PSPBrew. Una vez instalado y ejecutado, este programa muestra una serie de opciones para la modificación de EBOOTs.

Lo primero es ponerlo en Español. Luego le damos a “Cargar PBP”, seleccionamos el EBOOT.PBP que hemos creado antes y que estará en el directorio “c:\pspdev\psp\sdk\samples\gu\lights” en nuestro caso. El recuadro que nos interesa es el que pone “Firmware”. Seleccionamos “1.5″ y marcamos la casilla “Ocultar datos dañados”.

Conectamos ahora la PSP al usb. Seleccionamos la unidad que corresponda a la PSP donde pone “Unidad de PSP” y finalmente le damos al botón “Salvar PBP”.

Esta operación nos creará unas nuevas carpetas en el directorio “/psp/game” de nuestro Memory Stick. Ahora podremos probar el ejemplo seleccionándolo simplemente desde el menú de nuestra PSP.

Con esto tenemos el framework preparado, pero ahora vamos a hacer que todo sea más cómodo usando Visual Studio.

Empezamos creando un nuevo proyecto Visual C++ de tipo “Makefile Project”. El directorio donde lo pongamos es indiferente. Cuando nos salga la ventanita del asistente le damos directamente a “Finish”.

Para esta prueba vamos a copiar el fichero “c:\pspdev\psp\sdk\samples\controller\basic\main.c” al directorio donde hemos creado el proyecto. Justo después, lo cargamos en el proyecto con el menú “Project –> Add Existing Item…”.

A continuación vamos a crear un fichero en el directorio de nuestro proyecto, que se llame “makefile” y que contenga el siguiente texto:

TARGET = ejemplo
OBJS = main.oINCDIR =
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)LIBDIR =
LDFLAGS =EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Ejemplo Geardome

PSPSDK=$(shell psp-config --pspsdk-path)

include $(PSPSDK)/lib/build.mak

El formato de texto del archivo “makefile” debe ser el que se usa en Unix. Para ello deberemos usar un editor como Ultraedit, que nos permita salvar en formato Unix. También podemos probar a editar alguno de los makefiles que vienen con el sdk, para no tener que crearlo desde cero.

También vamos a crear otro fichero en el directorio de nuestro proyecto que se llame “clean.bat” y que contenga el siguiente texto:

del *.elf
del *.o
del *.pbp
del *.sfo

Y otro otro fichero más que se llame “rebuild.bat” con el siguiente texto:

del *.elf
del *.o
del *.pbp
del *.sfo
make

Ahora configuraremos el proyecto con el menú “Project –> Properties” o pulsando “ALT+F7″. Seleccionamos la pestaña “NMake” dentro de “Configuration Properties” y donde pone “Build Command Line” pondremos “make”. Donde pone “Rebuild All Command Line” pondremos “rebuild” y donde pone “Clean Command Line” pondremos “clean”.

En la misma pestaña, donde pone “Include Search Path” indicaremos los directorios de includes del SDK, en nuestro caso “c:\pspdev\psp\sdk\include; c:\pspdev\psp\include”.

Pulsamos ahora “CTRL+ALT+F7″ o “Rebuild Solution” y podremos ver cómo se compila nuestro proyecto. El EBOOT resultante ha quedado en la carpeta del proyecto y sólo nos queda pasarlo por PSPBrew para poder ejecutarlo en nuestra PSP 1.5.

Si todo ha ido bien, hasta el IntelliSense detectará las funciones del SDK, y cuando compilemos y nos salgan errores podremos hacer doble click en ellos y el propio Visual nos llevará hasta la fuente del error. Para añadir más archivos C o CPP al proyecto también tendremos que añadirlos al “makefile” si queremos que se compilen.

Espero que os haya sido de ayuda. Ahora queda lo más divertido: programar :D

Escribe un Comentario

(obligatorio)

(obligatorio) (No se muestra)


Palabra de seguridad

Comentario de wolvelopez

pinPublicado el 12 de Agosto de 2007

Hola, he seguido todo el tutorial, pero me encuentro con un problema a la hora e hacer el “Rebuild Solution”, el caso es que genero el proyecto pero me salta un error que dice:
Error 1 error PRJ0019: Una herramienta devolvió un código de error de “Ejecutando acciones de proyecto de archivo MAKE” Prueba
Haber si a alguien le ha pasado esto y sabe como continuar.Saludos

Comentario de wolvelopez

pinPublicado el 12 de Agosto de 2007

Ok, ya está todo resuelto,He cogido el makefile que pusiste en http://www.elotrolado.net Helius, y me ha funcionado perfectamente.Muchas gracias, y por cierto, habeis conseguido un seguidor más.Saludos.