Cómo ver la PSP en la TFT de tu ordenador
Esta mañana el bueno de Netámbulo me comentaba que una de sus noticias estaba en portada de Fresqui junto a la mía de Digital+ con Linux, y la verdad es que el post lo merecía: varios súper friquis se las han ingeniado para poder ver los juegos de la PSP en la pantalla del PC o portátil. El proceso es un pelín complejo, pero la verdad es que es una de esas 'fricadas' que me gusta probar, así que en cuanto he llegado del trabajo me he puesto a ello y ya está funcionando :-)
Así que para celebrarlo va pequeño tutorial en castellano para todos aquellos que lo quieran intentar en sus casas. La información está sacada del post original de Emanuel (un máquina que ya antes había explicado como instalar XP en un disco duro externo, algo que funciona aunque con ciertas limitaciones) y del README del proyecto psptoolchain que otros friquis increíbles han sacado en la web PS2Dev.org. Para que veáis que funciona de verdad, incluyo vídeo (8 MB de Flash, la compresión es buena, pero claro, ocupa lo suyo) :
Y lo primero, como dice Emanuel, son los requisitos, a saber:
· Un PC con Linux instalado (mis pruebas también sobre Ubuntu 7.04 Feisty Fawn, como las suyas, pero debería funcionar para cualquier distro)
· Una PSP con un firmware OE (en su guía le funciona con la 3.40, yo tengo la 3.03OE-B y también me ha tirado)
· Ciertos paquetes software descargables libremente
Los valientes, que sigan leyendo ;-)
Lo primero que deberéis hacer es crear un directorio llamado, por ejemplo, pspdev en donde queráis. Yo lo he hecho en un directorio que tengo para estas cosas llamado /temp, pero seguro que muchos lo hacéis en vuestros directorios $HOME. En cualquier caso, sigo mis pasos. Desde una cuenta de usuario convencional (sin privilegios de súperusuario/root):
cd /temp
mkdir pspdev
cd pspdev
Ahora a descargar el primer componente, psptoolchain, necesario para compilar el segundo componente, psplinkusb
svn co svn://svn.ps2dev.org/psp/trunk/psptoolchain
cd psptoolchain
Si el ficherito toolchain.sh no era ejecutable cambiáis los permisos:
chmod a+x ./toolchain.sh
Y lo ejecutáis
./toolchain.sh
Esto hará que se descarguen una buena cantidad de paquetes que además empezarán a compilarse automáticamente ellos solitos. Os advierto que es un proceso larguito: no he estado muy al tanto pero he visto que dos de ellos ocupaban unos 15 y 30 Mbytes respectivamente, así que entre la descarga - según vuestra conexión a Internet - y la compilación todo llevará fácil 15-20 minutos que debéis dejar la máquina tranquila.

Una vez termine es importante establecer una variable de entorno que permitirá que el segundo componente se compile haciendo uso del programita psp-config. Así pues, cuando todo ese proceso anterior de compilación termine escribiremos:
export PATH="/usr/local/pspdev/bin:$PATH"
Y ahora vamos a por el segundo componente, situándonos previamente en el directorio pspdev creado antes.
cd /temp/pspdev
svn co svn://svn.ps2dev.org/psp/branches/psplinkusb
cd psplinkusb
Ahora antes de nada os recomiendo instalar una serie de paquetes que me han hecho falta para poder compilar todo lo necesario:
sudo apt-get install sudo libsdl1.2-dev libusb-dev libreadline5 libreadline5-dev
Y ya podemos ponernos a ello:
make -f Makefile.oe release
Eso hace que en ese directorio se compile el programita que instalaremos en la PSP. Ahora la conectamos a Linux como lo haríamos en Windows - sí, sí, la reconoce perfectamente, aunque en Ubuntu el icono que sale es el de un iPod nano ;-). Abrimos el explorador de Linux que utilicemos (en mi caso, Nautilus) y creamos dos carpetas en /PSP/GAME. Una de ellas se llamará PSPLINK y la otra %PSPLINK.
- Copiamos desde otro navegador de archivos el fichero /temp/pspdev/psplinkusb/release_oe/psplink/EBOOT.PBP al directorio %PSPLINK
- Copiamos desde ese navegador de archivos TODOS los ficheros (incluido de nuevo el EBOOT.PBP) del directorio /temp/pspdev/psplinkusb/release_oe/psplink/ al directorio PSPLINK

No desconectéis aún la consola, hay cosas que hacer aún. Ahora a compilar los pequeños programitas complementarios:
cd /temp/pspdev/psplinkusb/tools/remotejoy/
make
En el raíz de la consola (al nivel /, no dentro de /PSP) creamos un directorio llamado 'joy' (sin las comillas), y dentro copiamos el fichero /temp/pspdev/psplinkusb/tools/remotejoy/remotejoy.prx

Seguimos compilando:
cd /temp/pspdev/psplinkusb/pspsh
make
cd /temp/pspdev/psplinkusb/usbhostfs_pc
make
cd /temp/pspdev/psplinkusb/tools/remotejoy/pcsdl
make
Ahora ejecutamos un pequeño script en el directorio usbhostfs_pc:
cd /temp/pspdev/psplinkusb/usbhostfs_pc
sudo ./mod.sh
Ahora viene lo bueno. Tendremos que copiar desde /temp/pspdev/psplinkusb/release_oe/psplink los ficheros psplink.prx, psplink_user.prx y usbhostfs.prx al directorio /seplugins que está en el raíz de la PSP. A ese mismo directorio tendrá que ir también el fichero /temp/pspdev/psplinkusb/tools/remotejoy/remotejoy.prx. Ahora desde el navegador de archivos de Ubuntu nos vamos a ese directorio /seplugins, donde veremos dos ficheros, vsh.txt y game.txt. Y si no los vemos, los creamos, y en cada uno de ellos introducimos las siguientes líneas:
ms0:/seplugins/usbhostfs.prx
ms0:/seplugins/psplink.prx
ms0:/seplugins/psplink_user.prx
ms0:/seplugins/remotejoy.prx

Ahora apagamos la consola del todo (manteniendo el botón de apagado arriba unos 10 segundos) y justo después la volvemos a iniciar, pero con el gatillo derecho pulsado para que se cargue el menú Recovery. En ese menú tendremos que activar los siguientes plugins - y sólo esos, cuidado, porque están también los mismos pero acabados en [VSH] - :
psplink.prx [GAME]
psplink_user.prx [GAME]
remotejoy.prx [GAME]
Tras lo cual ya podremos salir de esos menús del todo, con lo que la consola se iniciará normalmente, pero con esos módulos cargados en memoria, que detectarán que si lanzamos un juego, deben ponerse en marcha. Ese es el secreto (al menos, la mitad del secreto) de este procedimiento.
Ahora en Linux abrimos tres consolas. La PSP tiene que estar conectada por USB con el cable, pero no tenéis que ponerla en modo USB de transferencia de archivo, sino tenerla simplemente encendida, por ejemplo en el icono de la Memory Stick o el UMD desde el que luego cargaremos el juego.
En la primera activamos el programa de conexión entre el PC y la consola:
cd /temp/pspdev/psplinkusb/usbhostfs_pc
./usbhostfs_pc

Antes de abrir la segunda consola, en la PSP ejecutamos la aplicacioncita que hemos compilado antes, así que nos vamos a la Memory Stick y pinchamos sobre el icono PSPLink v3.0 OE, lo que hará que aparezca una ventana en negro y en la consola donde hemos ejecutado el programita usbhostfs_pc aparezca el mensaje 'Connected to device'.
En la segunda iniciamos un intérprete de comandos que nos deja acceder a la PSP en modo consola :-)
cd /temp/pspdev/psplinkusb/pspsh
./pspsh

En la tercera lanzamos la ventana de reproducción de vídeo con la que obtendremos la imagen de la PSP en nuestras TFTs o monitores:
cd /temp/pspdev/psplinkusb/tools/remotejoy/pcsdl
./remotejoy -d -c

Con eso ya tenemos casi todo. Ahora en la segunda, la de la terminal escribimos (nos habrá salido un 'prompt' que estará esperando a que introduzcamos comandos, podéis probar a escribir 'help') lo siguiente:
reset vsh
ldstart flash0:/vsh/module/vshmain.prx
ldstart ms0:/joy/remotejoy.prx
Lo cierto es que a mí eso no me ha ido muy bien, así que ahora mismo no estoy seguro cómo lo he conseguido - ups - porque el primer comando reinicia el enlace entre el PC y la consola. Así que si no os funciona a la primera comenzad desde lo de las tres consolas, pero no introduzcais el primero de esos tres comandos, sólo los dos ldstart.
Con eso le habremos dicho a la PSP que ejecute el programita que permite vernos en la TFT lo que el plugin le mande, así que ya podemos iniciar en la PSP el juego, ¡¡y listo!!

Actualización: (13/05/07) Por cierto, sí se puede ver en pantalla completa, cuando estéis en la ventanita de la PSP pulsáis F8 y veréis cómo la pantalla de la PSP ocupa todo vuestro monitor o TFT. Obviamente eso hace que los 'pixelacos' aparezcan más grandes, pero está curioso :-)