Mi primer homebrew

Posiblemente la mayoría de ustedes no saben que desde hace tiempo me he metido mucho al desarrollo de juegos caseros (Homebrew) para el PSP. Tenía un poco de miedo de no acordarme de C y C++ porque tenía mucho que no programaba en ellos, pero decidí ver más o menos en qué nivel andaba y las buena noticia es que todavía tengo C y C++ todavía muy bien.

Aunque por razones personales no puedo hacer público el código de mi primer homebrew (técnicamente no es muy llamativo, pero sentimentalmente tiene mucho valor), sí puedo poner aquí un breviario de lo que hice y cómo lo logré, en caso de que a alguien le interese.

**¿Qué se necesita para programar homebrew?**
Primero, saber programar. Sobra decir que saber programar no significa saber un lenguaje en específico, sino saber crear algoritmos. En el PSP se puede programar en LUA, pero para tener realmente control de todo el hardware del PSP se recomienda C o C++. Para personas que todavía tienen problemas en estos lenguajes, LUA es bueno para comenzar. Mi recomendación es C/C++, y el SDK se puede encontrar aquí.
Aquí hay una mala noticia: El SDK usa toolchains, y solo funciona en Linux. La buena noticia es que los usuarios de Windows pueden instalar Cywing para emular un sistema en Linux. De cualquier forma, se necesita un conocimiento básico de Linux para poder moverse dentro de él.
Segundo, una idea. No importa que tan bueno se sea programando, si no se tiene una idea de qué hacer, no se puede ir a ningún lado.

**Programación en C/C++ en el PSP**
Las librerías que se necesitan ya vienen incluídas en el SDK. Las funciones que se necesitan para manejar el hardware hay que aprendérselas, pero las funciones generales de estos lenguajes son las ya conocidas (stdio.h, math.h, etc.).
Estos tutoriales son buenísimos para comenzar. El programa “Hello World” funciona, pero al autor se le olvidó agregar 2 include que son necesarios para que el programa corra:

#include pspdebug.h
#include pspkernel.h

Para compilar, se tiene que crear un Makefile con ciertas opciones especiales. Algunas de ellas son necesarias para agregar determinadas cosas al ejecutable final:

PSP_EBOOT_TITLE = “Titulo”. Solo es visible cuando no hay background
PSP_EBOOT_ICON0 = ICON0.PNG El ícono que se verá en la lista de juegos en el menú “Game”. Tiene que llevar ese nombre.
PSP_EBOOT_PIC1 = PIC1.PNG El background que se pondrá cuando el juego esté seleccionado en la lista. Tiene que llevar ese nombre.
PSP_EBOOT_SND0 = SND0.AT3 El sonido que se reproducirá mientras el juego esté seleccionado. Debe estar en formato ATRAC3 forzosamente. Es relativamente fácil convertir un archivo a este formato si se tiene el códec correcto.

El ejecutable para el PSP es llamado EBOOT.PBP. Si se compila solo con make, el resultado es un archivo para firmware 1.00, pero si se compila con make kxploit, el resultado son 2 carpetas con el nombre del programa, una de ellas con un % al final del nombre, y en cada una habrá un EBOOT.PBP. Hecho esto, solo hay que copiar el resultado a la carpeta PSP/GAME y listo, a disfrutar el resultado.

Aunque realmente no es tan difícil como se piensa, tampoco es que a la primera se van a tener buenos resultados. El PSP es una pieza de hardware que, en comparación con las computadoras modernas, tiene recursos limitados, y éstos se pueden acabar rápido si no sabemos lo que estamos haciendo. Hay que practicar y mucho, y sobre todo, tener paciencia. No vamos a lograr un buen programa con solo saber cómo hacer homebrew. Hay que hacer un proyecto y seguirlo poco a poco (a menos que ése sea su trabajo).

**¿De qué sirve saber programar homebrew?**
Lo primero que se me viene a la mente es diversión aunada con conocimiento. Hacer un programa siempre es interesante, más cuando se trata de un objeto que es parte de tus pasatiempos más importantes. Pero además, si uno se vuelve realmente bueno, puede ser que alguna compañía de videojuegos nos contrate. Parece sueño guajiro, pero así le pasó a PSMonkey, un conocido desarrollador de homebrew para el PSP. El contrato con su nueva compañía tiene una cláusula que le impide realizar homebrew, pero el trabajo que se consiguió creo que sí lo vale.

Para la bitácora.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.