jueves, 28 de octubre de 2010

COMPILAR NUESTRO CODIGO CON MINPSPW

Hola a todos veo que seguís interesados en hacer vuestros propios programas para PSP Pues una vez que tenemos instalado el compilador nos tendríamos que poner a programar como locos pensando que ya está todo hecho pero no es así porque si no hacemos unas determinadas cosas el compilador cuando le pasemos nuestro código no sabe para que dispositivo queremos portar nuestro código que si para PC,NDS,PSP,Etc..  Y lo más importante que librerías y archivos van a formar este programa esto lo hacemos mediante el archivo MAKEFILE todo programa que hagáis tiene que tener su MAKEFILE  este archivo se puede hacer con cualquier editor de textos que nos permita guardar el texto sin formato, por ejemplo el BLOC de notas de WINDOWS, pero yo tanto para esto como para programar prefiero usar el ULTRAEDIT. aunque eso es una cuestion de gustos jajaja.
Bueno sin más rollo vamos a lo que nos importa empezamos con el compilador.

Mirar cuando instalamos el compilador lo hicimos en la carpeta X:\PSPDEV donde X es la unidad donde habéis instalado el Compilador, en mi caso C:\PSPDEV dentro de esta Crearemos una carpeta llamada HOMEBREW  o como queráis, es por tener todos nuestros proyectos ordenados dentro de una carpeta y no en la carpeta PSPDEV, ni desperdigados por todo el disco duro una cuestión de orden nada mas jajaja, la carpeta creada quedaría así X:\PSPDEV\HOMEBREW en mi caso la dirección queda así C:\PSPDEV\HOMEBREW.





Esta carpeta es la que usaremos para poner nuestro código, dentro de otra carpeta con el nombre que queráis por ejemplo PRUEBA1 metemos la carpeta con el código en esta dirección para tenerlo todo mucho más organizado y así nos ahorramos tener que estar moviéndonos por los directorios del disco duro pero si no os gusta ponerlo hay, pues nada os tocara andar  moviendos por los directorios, por ejemplo si ponéis vuestro código en el raíz ósea en X:\EJEMPLO donde X es la unidad donde lo habías puesto y EJEMPLO el directorio que habéis creado para almacenar los archivos con el código, una vez que cargáis el START.bat tendríais que poner esto para ir a ese directorio, CD X:\ una vez en la unidad, tendrías que poner CD EJEMPLO y ya estaríais en el directorio deseado, también lo podéis hacer de esta manera          CD X:\EJEMPLO y os lleva directamente al directorio deseado, lo podéis hacer así perfectamente pero yo prefiero tener todo el código colocado junto y saber en cada momento donde se encuentra y que mejor que dentro de la carpeta donde está el compilador, jajaja también es que soy muy vago y prefiero no tener que andar moviéndome por todos los directorios de la unidad jajaja por eso meto las carpetas con el código en X:\PSPDEV\HOMEBREW donde X es la unidad y así una vez que cargo el START.bat solo tengo que poner CD HOMBREW y luego el CD EJEMPLO y listo ya estoy dentro de la carpeta del código simple verdad.



 



Una vez aclarado esto vamos a mirar el MAKEFILE que uso yo para mis proyectos la verdad es que no voy a hacer un tutorial exhaustivo sobre cómo crear un MAKEFILE porque la verdad se escapa un poco de lo que aquí pretendo enseñaros y la verdad hay muy buenos tutoriales en la red  sobre cómo se crean los archivos MAKEFILE Pero no os preocupéis que os voy a enseñar lo más importante para que ya podáis programar todas o por lo menos la mayor parte de vuestras aplicaciones ya os digo yo siempre uso el mimo MAKEFILE solo le hago pequeñas variaciones que os voy a explicar a continuación.
Mirar aquí tenéis el código que yo uso para mi archivo MAKEFILE

TARGET = Prueba1
PSPSDK = $(shell psp-config --pspsdk-path)
PSPBIN = $(shell psp-config --psp-prefix)/bin
SDL_CONFIG = $(PSPBIN)/sdl-config

OBJS = main.o

BUILD_PRX = 1
PSP_FW_VERSION = 371

SDL_INSTALL_PATH=/pspdev/psp

DEFAULT_CFLAGS = -I$(SDL_INSTALL_PATH)/include/SDL

MORE_CFLAGS = -G0 -O2 -DPSP

CFLAGS = $(DEFAULT_CFLAGS) $(MORE_CFLAGS)
CXXFLAGS = $(DEFAULT_CFLAGS) $(MORE_CFLAGS) -fno-exceptions -fno-rtti

LIBS = -lSDL_gfx -lSDL_image -lstdc++ -lSDL_mixer -lSDL_ttf -lvorbisidec -lfreetype -lpng -ljpeg -lz -lm -L$(SDL_INSTALL_PATH)/lib -lSDL -lm -L$(SDL_INSTALL_PATH)/sdk/lib -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsppower -lpsphprm -lpspsdk -lpspaudio -lc -lpspuser -lpsputility -lpspkernel

EXTRA_TARGETS = EBOOT.PBP

PSP_EBOOT_TITLE = Prueba1

include $(PSPSDK)/lib/build.mak
 
Vereis que no es tanto como parecia al principio la verad los MAKEFILE asutan un poco al principio y mucha gente se echa para tras contar de no lidiar con ellos pero la verdad una vez que tienes su estructura principal definidad solo es cambiar una cosa aquí y otra alli y listo que eso es lo que vamos a hacer ahora este tipo de archivos no tiene extension osea su nombre es Makefile y listo.

El archivo MAKEFILE le dice al compilador los archivos que van a formar el codigo las librerias que se tienen que mezclar con ese codigo para que este funcione y la forma de salida que tendra este codigo para poder usarse en un PC,NDS,PSP,Etc.. asi como la direccion en la que se encuentran dichas librerias y los ejecutables que usa el compilador para tales fines .
Sin mas empiezo a esplicar las partes que cambiaremos habitualmente.

TARGET = Prueba1

Mirar es ta parte del codigo es la encargada de darle el nombre a los archivos una vez compilados osea le pone el nombre al .ELF por eso no pongais nombres raros poner nombres descriptibos de pocas letras y sin signos raros o os dara error a la hora de compilar.

PSPSDK = $(shell psp-config --pspsdk-path)
PSPBIN = $(shell psp-config --psp-prefix)/bin
SDL_CONFIG = $(PSPBIN)/sdl-config

SDL_INSTALL_PATH=/pspdev/psp
DEFAULT_CFLAGS = -I$(SDL_INSTALL_PATH)/include/SDL
MORE_CFLAGS = -G0 -O2 -DPSP

CFLAGS = $(DEFAULT_CFLAGS) $(MORE_CFLAGS)
CXXFLAGS = $(DEFAULT_CFLAGS) $(MORE_CFLAGS) -fno-exceptions -fno-rtti

include $(PSPSDK)/lib/build.mak


Estas  lineas de codigo le dicen al compilador donde tiene que Buscar las librerias y demas asi como definiciones que vamos a usar en nuestro codigo de esto no se toca nada ya esta listo para usarse.

OBJS = main.o

Esta linea es muy importante por que aquí le decimos al compilador los archivos que van a formar nuestro codigo osea los archivos  .C por ejemplo mi codigo tienes dor archivos de C que son main.c y movimiento.c pues tendria que poner esta linea de esta manera.

OBJS = main.o movimiento.o

cambiando la extencion C por O para que el compilador sepa que esos archivos los tiene que compilar como objetos y asi con todos los archivos de codigo que formen nuestro programa.


LIBS = -lSDL_gfx -lSDL_image -lstdc++ -lSDL_mixer -lSDL_ttf -lvorbisidec -lfreetype -lpng -ljpeg -lz -lm -L$(SDL_INSTALL_PATH)/lib -lSDL -lm -L$(SDL_INSTALL_PATH)/sdk/lib -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsppower -lpsphprm -lpspsdk -lpspaudio -lc -lpspuser -lpsputility -lpspkernel

Si  la linea OBJS es importante esta también lo es muchísimo por que en ella se incluyen las librerias que vamos a LINKAR a nuestro código así como su dirección por eso esta linea es tan importante,esta linea de momento no la vamos a modificar por que en ella se encuentran todas las librerías que vamos a usar en esta serie de tutoriales así como casi todas las librerías que vas a usar en una gran cantidad de proyectos jajaja.


BUILD_PRX = 1

Esta linea no se tiene que tocar por que le dice al compilador que debe crear un archivo prx, para compatibilizar el codigo a partir del firmware 3.71.

PSP_FW_VERSION = 371

Con esta linea le decimos al compilador que la version minima del firmware para que el programa funcione tiene que ser la 3.71.

EXTRA_TARGETS = EBOOT.PBP

Esta linea simplemente le dice al compilador que el ejecutable tiene que ser EBOOT.PBP como en nuestros proyectos siempre o casi siempre va a aser así pues nada la ponéis tal cual y listo

PSP_EBOOT_TITLE = Prueba1

Y por fin llegamos a esta linea que es super descriptiva asi que no va a hacer mucha falta explicarla pero por si acaso esta linea lo que hace es ponerle el titulo a la aplicación que hemos echo ese titulo es el que se ve en la PSP cuando nos ponemos sobre el icono de nuestra aplicación.

Con esto a grandes rasgos tenéis todo lo que hace falta para modificar un archivo MAKEFILE muy simple si queréis saber mas pues lo dicho anteriormente en la RED hay verdaderas maravillas en cuanto a manuales sobre archivos MAKEFILE.
Una vez tengáis creado el archivo
MAKEFILE lo ponéis junto con vuestro código en la carpeta en la que lo tengáis guardado acto seguido cargáis el START.bat y vais al directorio en el que se encuentre el código por ejemplo así CD HOMEBREW y luego CD EJEMPLO.



Y ponéis make  y automáticamente el compilador se pone a trabajar si el codigo esta bien os generara varios archivos el importante es EBOOT.PBP  que es el que copiaremos en nuestra psp para ejecutar la aplicación.
Con esto queda visto el tema de compilar nuestras aplicaciones, los tutoriales que voy a hacer vendran con su código y su Makefile listo para compilar asi que solo tendreis que copiarlos en  X:\PSPDEV\HOMEBREW q donde X n es la unidad donde tenéis instalado el Compilador y listo lo compilais y a jugar.

Un saludo
Kaltorak

2 comentarios:

  1. Buen tutorial , estoy interesado en crear mi propio juego para psp , pero no se como empezar ,he instalado unas cuantas veces algunos copiladores pero pocos me han funcionado , algunas personas me dijeron que primero programara para pc , ya que es mas facil , hice eso , mi primer helloworld para pc , y luego no supe que hacer.

    Te agradeceria que me dijeras de donde puedo descargar el copilador , ya que tengo muchas dudas acerca de esto , y de como programar un juego , etc , esto es muy complicado pero espero aprender , Un saludo!

    ResponderEliminar
  2. Hola Sergio en este mismo blog te puedes descargar el compilador que uso yo para hacer mis Homebrew, el titulo de la entrada es Compilador Alternativo a CYGWIN, en esa entrada tienes una descarga con todo lo necesario para instalar dicho compilador, así como las librerías que han sido actualizadas desde la salida de dicho compilador y un tutorial de como instalarlo lee te también la entrada Instalación de un PSPDEVPAK que es un tutorial como instalar las librerías que han sido actualizadas desde la creación del compilador. Espero que te sea de utilidad, cualquier duda que tengas puedes preguntarme e intentare responderte lo antes posible.
    Un saludo
    Kaltorak

    ResponderEliminar