This time we are going to use the decompilation of the StarFox/LylatWars N64 game to install it, which will allow us to enjoy the title at 60FPS.
Installation:
There is a precompiled binary version for Linux, but in my case it was necessary to recompile from source since it was built against library versions that are not present on my system.
PaperStreet # ~> lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
When running the binary it showed this 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)
We install the dependencies as indicated in the documentation :
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
Clone the repository:
git clone https://github.com/HarbourMasters/starship.git
cd starship
git submodule update --init
We must keep in mind that only certain ROM versions are supported :
The SHA-1 hash for a US 1.0 ROM is D8B1088520F7C5F81433292A9258C1184AFA1457.
The SHA-1 hash for a US 1.1 ROM is 09F0D105F476B00EFA5303A3EBC42E60A7753B7A.
We check the hash:
sha1sum ~/Star\ Fox\ 64\ \(U\)\ \(V1.1\)\ \[\!].z64
09f0d105f476b00efa5303a3ebc42e60a7753b7a /home/kr0m/Star Fox 64 (U) (V1.1) [!].z64
We copy the ROM
with the name baserom.z64
:
cp ~/Star\ Fox\ 64\ \(U\)\ \(V1.1\)\ \[\!\].z64 ./baserom.z64
We generate the Ninja
project:
cmake -H. -Bbuild-cmake -GNinja
We generate the file sf64.o2r
:
cmake --build build-cmake --target ExtractAssets -j8
We generate the file starship.o2r
:
cmake --build build-cmake --target GeneratePortO2R -j8
We compile the project:
time cmake --build build-cmake -j8
real 2m13.282s
We run the binary. In
the documentation
they indicate ./build-cmake/mm/2s2h.elf
, but the correct path is ./build-cmake/Starship
:
./build-cmake/Starship
In this screenshot you can see the game. Of course, it can be played in fullscreen.
By the way, Xbox
gamepad works flawlesly even the rumble effects.