En esta ocasión vamos a hacer uso de la decompilación del juego StarFox/LylatWars de N64 para instalar dicho juego, lo que nos permitirá disfrutar del tÃtulo a 60FPS.
Instalación:
En principio hay una versión precompilada del binario para Linux, pero en mi caso fué necesario recompilar desde las fuentes ya que esta fué compilada contra versiones de librerÃas que no están presentes en mi sistema.
PaperStreet # ~> lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
Al ejecutar el binario mostraba este error:
PaperStreet $ ~/Starship> ./starship.appimage
./starship.appimage: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by ./starship.appimage)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by ./starship.appimage)
./starship.appimage: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.31' not found (required by ./starship.appimage)
./starship.appimage: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by ./starship.appimage)
./starship.appimage: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libSDL2-2.0.so.0)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libSDL2-2.0.so.0)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libtinyxml2.so.10)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libXcursor.so.1)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libwayland-client.so.0)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libxkbcommon.so.0)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libdecor-0.so.0)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libcrypto.so.3)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libpulsecommon-16.1.so)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libdbus-1.so.3)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libsndfile.so.1)
./starship.appimage: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libsndfile.so.1)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libsystemd.so.0)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libapparmor.so.1)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libmp3lame.so.0)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libcap.so.2)
./starship.appimage: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /tmp/.mount_starshyU51Ff/usr/bin/../lib/libgcrypt.so.20)
Instalamos las dependencias tal como indica la documentación :
apt-get install gcc g++ clang git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libboost-dev libopengl-dev libogg-dev libvorbis-dev
Clonamos el repositorio:
git clone https://github.com/HarbourMasters/starship.git
cd starship
git submodule update --init
Debemos tener en cuenta que solo se soportan ciertas versiones de ROM :
The SHA-1 hash for a US 1.0 ROM is D8B1088520F7C5F81433292A9258C1184AFA1457.
The SHA-1 hash for a US 1.1 ROM is 09F0D105F476B00EFA5303A3EBC42E60A7753B7A.
Comprobamos el hash:
sha1sum ~/Star\ Fox\ 64\ \(U\)\ \(V1.1\)\ \[\!].z64
09f0d105f476b00efa5303a3ebc42e60a7753b7a /home/kr0m/Star Fox 64 (U) (V1.1) [!].z64
Copiamos la ROM
con el nombre baserom.z64
:
cp ~/Star\ Fox\ 64\ \(U\)\ \(V1.1\)\ \[\!\].z64 ./baserom.z64
Generamos el proyecto Ninja
:
cmake -H. -Bbuild-cmake -GNinja
Generamos el fichero sf64.o2r
:
cmake --build build-cmake --target ExtractAssets -j8
Generamos el fichero starship.o2r
:
cmake --build build-cmake --target GeneratePortO2R -j8
Compilamos el proyecto:
time cmake --build build-cmake -j8
real 2m13.282s
Ejecutamos el binario, en
la documentación
indican ./build-cmake/mm/2s2h.elf
, pero el path correcto es ./build-cmake/Starship
:
./build-cmake/Starship
En esta captura se puede ver el juego, por supuesto se puede jugar a pantalla completa.
Por cierto el mando de Xbox
funciona de maravilla, incluso los efectos de vibración.