{"id":747,"date":"2007-08-04T12:51:15","date_gmt":"2007-08-04T18:51:15","guid":{"rendered":"http:\/\/www.joelsedano.com\/blog\/?p=747"},"modified":"2007-08-04T12:51:15","modified_gmt":"2007-08-04T18:51:15","slug":"como-programar-homebrew-para-psp","status":"publish","type":"post","link":"https:\/\/www.joelsedano.com\/blog\/2007\/08\/04\/como-programar-homebrew-para-psp\/","title":{"rendered":"C\u00f3mo programar homebrew para PSP"},"content":{"rendered":"<p>Este post no te ense\u00f1ar\u00e1 a programar, aqu\u00ed solamente voy a hablar de qu\u00e9 herramientas son necesarias y c\u00f3mo configurarlas para comenzar a programar <em>homebrew<\/em> para tu <acronym title=\"PlayStation Portable\">PSP<\/acronym>, aparte de tener algo de conocimiento de programaci\u00f3n adem\u00e1s debes saber como compilar c\u00f3digo fuente desde la linea de comandos en Linux.<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"http:\/\/www.joelsedano.com\/blog\/wp-content\/uploads\/2007\/08\/psplogo.png\" alt=\"psplogo.png\" \/><\/p>\n<p><!--more--><strong>Nota:<\/strong> Soy usuario de Ubuntu, por lo que el siguiente tutorial lo hice basado en el sistema operativo Linux, si usas Windows podr\u00edas compilar el <acronym title=\"Software Development Kit\">SDK<\/acronym> con <a href=\"http:\/\/www.cygwin.com\/\">cygwin<\/a>, lamento no poner las instrucciones para este sistema, pero si sabes ingles puedes seguir <a href=\"http:\/\/www.psp-programming.com\/tutorials\/c\/lesson01.htm\">este tutorial<\/a>.<\/p>\n<p>Lo primero es instalar las librer\u00edas necesarias, abre una ventana de terminal y pon el siguiente comando:<\/p>\n<blockquote><p>sudo apt-get install flex libncurses5-dev bison automake autoconf gcc make patch subversion texinfo wget<\/p><\/blockquote>\n<p>Despu\u00e9s descarga el <a href=\"http:\/\/ps2dev.org\/psp\/Tools\/Toolchain\">ToolChain<\/a> y descomprimelo en alguna carpeta temporal (yo lo descomprim\u00ed en <strong>~\/Programas\/psptoolchain<\/strong>).<\/p>\n<p>Crea una carpeta donde se vaya a compilar nuestro <acronym title=\"PlayStation Portable\">PSP<\/acronym> SDK:<\/p>\n<blockquote><p>mkdir ~\/Programas\/pspdev<\/p><\/blockquote>\n<p>y ahora agreguemos esa ruta a nuestro PATH (en mi caso esos son los directorios, modificalos si los cambiaste):<\/p>\n<blockquote><p>export PSPDEV=~\/Programas\/pspdev<br \/>\nexport PATH=$PATH:$PSPDEV\/bin<\/p><\/blockquote>\n<p><strong>Tip:<\/strong> puedes poner estas dos ultimas lineas en tu login script (.bashrc) para no tener que teclearlas cada vez que quieras usar el compilador.<\/p>\n<p>Ahora s\u00ed, ejecutamos el script (antes de este paso te recomiendo leer lo que puse despu\u00e9s):<\/p>\n<blockquote><p>.\/toolchain.sh<\/p><\/blockquote>\n<p>Tardar\u00e1 un rato en descargar un mont\u00f3n de cosas (principalmente librer\u00edas para el gcc), dependiendo de la velocidad de tu conexi\u00f3n ser\u00e1 el tiempo que tardar\u00e1 en descargar alrededor de 50 <acronym title=\"Megabyte\">MB<\/acronym>, puedes retirarte un par de horas de tu computadora, ya que adem\u00e1s de tardarse descargando esa cantidad de megas tiene que compilar y configurar varias cosas m\u00e1s (en mi P4 a 2.8 GHz tard\u00f3 como una hora).<\/p>\n<p>Y eso es todo, ya tienes un <acronym title=\"PlayStation Portable\">PSP<\/acronym>-<acronym title=\"Software Development Kit\">SDK<\/acronym> en tu carpeta <strong>pspdev<\/strong>, si tienes alg\u00fan programa ya hecho puedes compilarlo con un <strong>make<\/strong>, si no&#8230; veamos un ejemplo para probar que haya quedado bien, abrimos alg\u00fan editor de texto o <acronym title=\"Integrated Development Environment\">IDE<\/acronym> y pegamos el siguiente c\u00f3digo:<\/p>\n<blockquote><p>#include &lt;pspkernel.h&gt;<br \/>\n#include &lt;pspdebug.h&gt;<\/p>\n<p>PSP_MODULE_INFO(\u00abHola Mundo\u00bb, 0, 1, 1);<br \/>\n#define printf pspDebugScreenPrintf<\/p>\n<p>int exit_callback(int arg1, int arg2, void *common) {<br \/>\nsceKernelExitGame();<br \/>\nreturn 0;<br \/>\n}<\/p>\n<p>int CallbackThread(SceSize args, void *argp) {<br \/>\nint cbid;<br \/>\ncbid = sceKernelCreateCallback(\u00abExit Callback\u00bb, exit_callback, NULL);<br \/>\nsceKernelRegisterExitCallback(cbid);<br \/>\nsceKernelSleepThreadCB();<br \/>\nreturn 0;<br \/>\n}<\/p>\n<p>int SetupCallbacks(void) {<br \/>\nint thid = 0;<br \/>\nthid = sceKernelCreateThread(\u00abupdate_thread\u00bb, CallbackThread, 0x11, 0xFA0, 0, 0);<br \/>\nif(thid &gt;= 0) {<br \/>\nsceKernelStartThread(thid, 0, 0);<br \/>\n}<br \/>\nreturn thid;<br \/>\n}<\/p>\n<p>int main() {<br \/>\npspDebugScreenInit();<br \/>\nSetupCallbacks();<br \/>\nprintf(\u00abHola Mundo\u00bb);<br \/>\nsceKernelSleepThread();<br \/>\nreturn 0;<br \/>\n}<\/p><\/blockquote>\n<p>Lo guardamos con el nombre de <strong>main.c<\/strong>.<\/p>\n<p>Ahora nos hace falta el archivo <strong>makefile<\/strong> (s\u00ed sin extensi\u00f3n), va de la siguiente manera:<\/p>\n<blockquote><p>TARGET = hello<br \/>\nOBJS = main.o<br \/>\nCFLAGS = -O2 -G0 -Wall<br \/>\nCXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti<br \/>\nASFLAGS = $(CFLAGS)<br \/>\nEXTRA_TARGETS = EBOOT.PBP<br \/>\nPSP_EBOOT_TITLE = Hola Mundo<br \/>\nPSPSDK=$(shell psp-config &#8211;pspsdk-path)<br \/>\ninclude $(PSPSDK)\/lib\/build.mak<\/p><\/blockquote>\n<p>Guardamos el archivo y nos dirigimos, desde la l\u00ednea de comandos, a la carpeta que contiene esos dos archivo (en mi caso <strong>\/Proyectos\/psp-hello<\/strong>), y ejecutamos la instrucci\u00f3n <strong>make<\/strong>, compilar\u00e1 nuestro c\u00f3digo y nos crear\u00e1 un archivo <strong>EBOOT.PBP<\/strong> el cual podremos poner en nuestro <acronym title=\"PlayStation Portable\">PSP<\/acronym> en la carpeta <strong>\/PSP\/GAME150\/Hello<\/strong>.<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"http:\/\/www.joelsedano.com\/blog\/wp-content\/uploads\/2007\/08\/hello.jpg\" alt=\"hello.jpg\" \/><\/p>\n<p>Y con eso y unos pocos de conocimientos extra de programaci\u00f3n en <strong>C<\/strong> y <strong>C++ <\/strong>podr\u00e1s comenzar a desarrollar juegos o aplicaciones propias para tu <acronym title=\"PlayStation Portable\">PSP<\/acronym>.<\/p>\n<p>M\u00e1s delante tratar\u00e9 de explicar el uso de librer\u00edas gr\u00e1ficas y de sonido para hacer cosas m\u00e1s interesantes.<\/p>","protected":false},"excerpt":{"rendered":"<p>Este post no te ense\u00f1ar\u00e1 a programar, aqu\u00ed solamente voy a hablar de qu\u00e9 herramientas son necesarias y c\u00f3mo configurarlas para comenzar a programar homebrew para tu PSP, aparte de tener algo de conocimiento de programaci\u00f3n adem\u00e1s debes saber como compilar c\u00f3digo fuente desde la linea de comandos en Linux.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21,2,33],"tags":[],"class_list":["post-747","post","type-post","status-publish","format-standard","hentry","category-linux","category-programacion","category-psp"],"_links":{"self":[{"href":"https:\/\/www.joelsedano.com\/blog\/wp-json\/wp\/v2\/posts\/747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.joelsedano.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.joelsedano.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.joelsedano.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.joelsedano.com\/blog\/wp-json\/wp\/v2\/comments?post=747"}],"version-history":[{"count":0,"href":"https:\/\/www.joelsedano.com\/blog\/wp-json\/wp\/v2\/posts\/747\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.joelsedano.com\/blog\/wp-json\/wp\/v2\/media?parent=747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.joelsedano.com\/blog\/wp-json\/wp\/v2\/categories?post=747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.joelsedano.com\/blog\/wp-json\/wp\/v2\/tags?post=747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}