viernes, 27 de noviembre de 2009

Emulador Playstation 1 en GNU/Linux de 64bits

Pues hace unos días, con un amigo, buscábamos un emulador funcional para Ubuntu, con el eterno problema de que, a veces, los desarrolladores se olvidan un poco de los usuarios de 64 bits.

Bueno gracias a los pasos de UbuntuGeek conseguimos hacer funcionar el emulador pSX el cual, creo, es el mejor emulador que he visto para Playstation (y he probado tanto PCSX como ePSXe). Los plugins están incluidos en el propio binario (ejecutable), así que no hay que complicarse la vida en buscar plugins compatibles para Linux ni chorradas de esas :)

Voy a contaros ahora mismo como lo conseguimos. Tan solo hay que hacer un poquito de "hacking", nada complicado, veréis:

1- Empieza por abrir una terminal, desde el menú Aplicaciones -> Accesorios -> Terminal, y acto seguido navega hasta una ruta de trabajo temporal. Nosotros usamos la carpeta de sistema /tmp:
cd /tmp
2- Ahora instala los paquetes de compatibilidad con programas de 32bits (puede que ya los tengas instalados, pero igual prueba):
sudo apt-get install ia32-libs ia32-libs-sdl ia32-libs-gtk
Nota: Si usas Karmic (Ubuntu 9.10) no se instalarán los paquetes ia32-libs-sdl e ia32-libs-gtk. No le des importancia, ya que ahora el paquete ia32-libs substituye a esos dos.

3- Necesitarás buscar y descargar el paquete libgtkglext1_1.0.6-2.1ubuntu1_i386.deb ya que contiene unas librerías necesarias para que funcione el emulador. Nosotros conseguimos encontrarlo en los servidores ftp de Guadalinex. Puedes usar el comando wget o descargarlo gráficamente (con Firefox por ejemplo) y después moverlo a la carpeta /tmp:
wget -c ftp://ftp.guadalinex.org/ubuntu/pool/universe/g/gtkglext/libgtkglext1_1.0.6-2.1ubuntu1_i386.deb
4- Extrae el contenido del paquete (no lo instales):
sudo dpkg -x libgtkglext1_1.0.6-2.1ubuntu1_i386.deb libgtkglext
Esto creara la carpeta /tmp/libgtkglext/ y dentro de esta extraerá el contenido del paquete.

5- Ahora moveremos las librerías, recién extraídas, a la carpeta de sistema con las librerías de compatibilidad con 32bits (/usr/lib32/):

sudo mv -v libgtkglext/usr/lib/* /usr/lib32

6- Puedes borrar la carpeta extraída anteriormente y el propio paquete, aunque la carpeta /tmp se vacía sola al reiniciar el sistema:
sudo rm -Rv libgtkglext
sudo rm -v libgtkglext1_1.0.6-2.1ubuntu1_i386.deb
7- Ahora descarga la ultima versión del emulador pSX. Actualmente es la 1.13, pero puedes consultarlo en su web. Haz la descarga con Firefox y pon el paquete en la ruta de trabajo (/tmp) o usa wget para obtenerlo directamente en la terminal:
wget -c http://psxemulator.gazaxian.com/pSX_linux_1_13.tar.bz2
8- Extrae y borra, si quieres, el paquete descargado:
tar xvf pSX_linux_1_13.tar.bz2
sudo rm -v pSX_linux_1_13.tar.bz2

9- Ya puedes probarlo, entra a la carpeta /tmp/pSX:
cd pSX/
Y ejecuta el binario que hay dentro:
./pSX

---Si no te funciona el sonido----
Actualización (Gracias a Blue y Marc): Puede que, llegados a este punto, te de error al ejecutar el binario. Si el error esta relacionado con el sonido: 
[src/linux/sound.cpp, line 215]: 'snd_pcm_hw_params_set_access(pcm_handle,hwparams,SND_PCM_ACCESS_MMAP_INTERLEAVED)' returned 'Argumento inválido'
pad=0
Fallo de segmentación

Si te devuelve este error, el problema es del servidor de PuseAudio. Desconozco el motivo, pero se que suele dar la lata con otros programas (como Skype). Si desinstalas PulseAudio en Karmic, el reproductor Totem dejara de reproducir audio, así que tendrás que buscar otro "video-player" como SMplayer o VLC.

En fin si estas seguro que quieres dejar de depender del servidor de Pulse y usar directamente ALSA o OSS sin intermediarios puedes hacer esto:

sudo aptitude purge pulse-audio && sudo aptitude install esound xfce4-mixer
El paquete xfce4-mixer es una aplicación para manejar los niveles de reproducción y de captura de la placa de sonido, indispensable si desinstalas pulse, para poder subir-bajar el volumen. También olvidaros de poder integrar las teclas multimedia de volumen del teclado con Gnome (Ya que sin el pulse, Gnome no sabe como bajar/subir el volumen)
-----------------------------------------------

Seguramente te pedirá la bios original de la consola. Es ilegal tener la bios, sin ser poseedor de una consola. Y se supone que la forma de obtenerla es conectando la consola al PC y dumpear la bios de Playstation a un archivo en tu PC....

Claro! Que también puedes buscarla en Google, ya que no es ilegal saber que se llama scph1001.bin. Cuando la dumpees (o la descargues :D ), busca en la carpeta del emulador una subcarpeta llamada bios....
Exactamente, hay debes poner el archivo descar... (uy, perdon) dumpeado.

Una vez que confirmes que todo va bien, saca la carpeta pSX del directorio temporal para no perderla. Y una sola cosa, aunque el emulador tiene la opción de hacer savestates de los juegos por si mismo, si quieres usar memory cards tendrás que crear los archivos para tal efecto:
touch ~/.pSX/cards/card1
touch ~/.pSX/cards/card2

Y después los seleccionas como memory card 1 y memory card 2 cada uno, desde las opciones de configuración del emulador.

Excelente emulador totalmente funcional para Linux 64bits, con altísima compatibilidad de juegos. ¿Bueno qué? ¿Hace unas partidas al Final Fantasy VII?

Fuente: Ubuntu Geek

9 comentarios:

  1. todo correcto, ./pSX

    [src/linux/sound.cpp, line 215]: 'snd_pcm_hw_params_set_access(pcm_handle,hwparams,SND_PCM_ACCESS_MMAP_INTERLEAVED)' returned 'Argumento inválido'
    pad=0
    Fallo de segmentación

    ResponderEliminar
  2. Algun problema con el sonido... Confirma que tu tarjeta funcione conrrectamente en el sistem y que no este ocupada por otra aplicación.

    ResponderEliminar
  3. Todo bien y mira que llevaba dos días peleándome con el tema, pero me sale el mismo fallo:

    [src/linux/sound.cpp, line 215]: ...

    He comprobado la tarjeta de sonido y funciona correctamente y cuando ejecuto el pSX ninguna otra aplicación la utiliza.

    ResponderEliminar
  4. Solo se me ocurre que sea por que utilizas pulse audio a Dukkon se le paso por alto que nosotros no tenemos pulse instalado.

    ResponderEliminar
  5. Efectivamente el problema era del molesto PulseAudio.
    Lo he desinstalado y a jugar ...

    Muchas gracias por todo!!!!!!!!!!!!!

    ResponderEliminar
  6. Te corrigo. El "molestisisimo" PulseAudio....
    Pues nada tomo nota y actualizo el post.

    P.D. ¿Se notó demasiado que no soporto el PulseAudio?

    ResponderEliminar
  7. Buenas, me preguntaba si habia alguna solucion para esto: ./pSX: error while loading shared libraries: libpangox-1.0.so.0: cannot open shared object file: No such file or directory

    sera que tengo que buscar && descargar la version de 32 bits? alguna idea?

    de antemano, muchisimas gracias ;)

    ResponderEliminar
  8. Prueba con estos comandos:

    cd ~/
    wget -c http://mirror.anl.gov/pub/ubuntu//pool/main/libg/libglade2/libglade2-0_2.6.4-1build1_i386.deb
    sudo dpkg -x libglade2-0_2.6.4-1build1_i386.deb libglade2
    sudo mv -v libglade2/usr/lib/* /usr/lib32/
    sudo ldconfig

    ResponderEliminar