[TUTORIAL] Como programar para PSP y no morir en el intento

Hola a todos,

Durante estos días he estado buscando algún manual para inexpertos como yo que se quieran iniciar en la programación en PSP y he encontrado algunas cosas desperdigadas.
No esperéis novedades apabullantes; este tutorial es un compendio de algunos conocimientos que nos puedan servir como punto de partida para el desarrollo de software casero.


Prerrequisitos

    Un SDK de código abierto que podéis descargar desde aquí.
    Un conjunto de librerías que nos harán la vida un pelín más sencilla: las OSLib.
    Un editor de textos. Recomendable el Notepad++.

PASO 0: Instalando el IDE sobre Windows

A lo largo de estos primeros compases instalaremos un entorno de desarrollo.

Abrid el SDK y comenzará un asistente de Siguiente, Siguiente. Dejadlo todo por defecto ("C:\pspsdk") y ya está.
Cuando terminéis, extraed las OSLib en donde queráis y ejecutad el install.bat.
Eso es todo, no hay que tocar ni variables de entorno ni nada. El propio instalador te crea una para tu usuario actual.

NOTA: Es probable que si tienes Vista o superior tengas que ejecutar ambos instaladores como Administrador.


PASO 1: El Makefile y el main.c, nuestro primer Hola Mundo!

Ahora que ya tenemos todo lo necesario, es precisa la creación de un par de plantillas: el Makefile y el main.c.
Abrid vuestro editor de texto preferido y al lío!

    Makefile
    TARGET = EOL
    OBJS = main.o 

    INCDIR =
    CFLAGS = -G4 -Wall -O2
    CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
    ASFLAGS = $(CFLAGS)

    LIBDIR =
    LDFLAGS =
    STDLIBS= -losl -lpng -lz \
      -lpspsdk -lpspctrl -lpspumd -lpsprtc -lpsppower -lpspgu -lpspaudiolib -lpspaudio -lm
    LIBS=$(STDLIBS)$(YOURLIBS)


    EXTRA_TARGETS = EBOOT.PBP
    PSP_EBOOT_TITLE = EOL
    PSP_EBOOT_ICON = ICON0.png

    PSPSDK=$(shell psp-config --pspsdk-path)
    include $(PSPSDK)/lib/build.mak

    De aquí nos interesan tres apartados:

      TARGET y PSP_EBOOT_TITLE: El nombre que aparecerá en el XMB al cargar nuestro homebrew.
      PSP_EBOOT_ICON: La ruta de la imagen de 144x80 píxeles que queremos que aparezca en el menú, por ejemplo ésta. (CONSEJO: no la toquéis, meted la imagen que querais con esas dimensiones en el propio directorio y llamadla ICON0.png).

    main.c
    /* Declaración de OSLib. */
    #include <oslib/oslib.h>

    /* Instrucciones necesarias para lanzar el EBOOT. */
    PSP_MODULE_INFO("OSLib Sample", 0, 1, 1);
    PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

    int main()
    {
       /* Inicialización de las librerías. */
       oslInit(0);

       /* Inicialización del modo gráfico. */
       oslInitGfx(OSL_PF_8888, 0);

       /* Inicialización de la consola para mostrar texto. */
       oslInitConsole();

       /* Mostramos un mensaje. */
       oslPrintf("Muy buenas coleguito de EOL!");

       /* Esperamos la pulsación de una tecla para salir. */
       oslWaitKey();
       
       /* Salimos del programa. */
       oslEndGfx();
       oslQuit();
       return 0;
    }

    He procurado comentar todos los aspectos del main en Castellano, basándome en la Wiki de OSLib. Las únicas instrucciones que puede que no ejecutéis alguna vez son la de oslPrintf, para mostrar texto por pantalla o oslWaitKey, para esperar la pulsación de una tecla. Las demás son "obligatorias". ;)
Si lo habéis hecho todo bien, deberíais de tener en un directorio un fichero llamado Makefile, otro llamado main.c y una imagen llamada ICON0.png.
Teclead Windows + R, escribid cmd y aceptad. Meteros en ese directorio y escribid lo siguiente: make.
Deberíais de obtener el EBOOT correspondiente, ya nada más quedaría meterlo en el directorio ms0:/PSP/GAME/PRUEBA (por ejemplo) y probarlo.

Continuará...
Se agradece el esfuerzo [beer]
muy buen aporte!!! seguiré expectante el hilo.
2 respuestas