#MonkeyIsland on #Librem5 and #Pinephone
My eldest son of #1EngelUnd4Bengel is attending third grade now and starts getting really interested in computers and games. I remembered #MonkeyIsland sitting on an old cdrom. It's cute and he can practice his reading skills .
My first attempt to provide it went to our #LibreElec TV, but I couldn't get #scummvm running on the #Rock64 system. Maybe I'll try with a #RockPro64 and #LibreElecRR someday - your experience doing this would be welcome.
But then I had the idea to test it on my #Librem5 and if it worked install it on the #Pinephone running #Mobian my son uses.
It went really well and the two of us started playing a bit. But we couldn't reach the menu to save a game, nor could we change the text speed. Keyboard didn't work.
@dos@librem.one explained to me that #squeekboard would only work occasional and unpredictable with the #SDL based #scummvm.
scummvm is a interpreter that can run many games like Monkey Island or Myst on a great variety of modern hardware. On #mobian and #pureos it is available as a package to be installed from the repositories of the distribution sudo apt-get install scummvm
.
The problems with using squeekboard (the on-screen keyboard used in #phosh on the two phones) can be circumvented by using version 2.16.x as the underlying problem has been fixed in these newer versions.
Sebastian told me that this fix will probably end up soon in #Debian and thereby in #PureOS and #Mobian. But until then here's the recipe to run scummvm using a self-compiled version of SDL which makes at least Monkey Island fully functional.
install build prerequisites
packages
I had to install the following packages to build SDL:
sudo apt-get install autoconf automake autopoint \
autotools-dev build-essential debhelper dh-autoreconf \
dh-strip-nondeterminism doxygen dpkg-dev m4 po-debconf libtool \
intltool-debian libclang1-14 libdebhelper-perl libdpkg-perl \
libsndio-dev libxkbcommon-dev libdbus-1-dev libdecor-0-dev
SDL source
If not already installed you need to install git for this to work: sudo apt-get install git
git clone https://github.com/libsdl-org/SDL.git
cd SDL
git checkout release-2.26.1
only Librem5/PureOS: sndio.pc
The package libsndio-dev in PureOS byzantium is missing the .pc-file needed by pkg-config
to find the libraries provided. It can easily be generated manually.
Remember to remove the file sometimes before upgrading to the next PureOS version that might contain a newer package containing the .pc-file. You wouldn't want to override it with the old version in /usr/local.
sudo mkdir -p /usr/local/lib/aarch64-linux-gnu/pkgconfig
echo 'prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib/aarch64-linux-gnu
includedir=${prefix}/include
Name: sndio
Description: sndio library
Version: 1.5.0
Requires:
Libs: -L${libdir} -lsndio
Cflags: -I${includedir}' | sudo tee /usr/local/lib/aarch64-linux-gnu/pkgconfig/sndio.pc
compile SDL
I chose to install the build in directories in ~/.local/. You might want to change the command to install them elsewhere.
A list of the files installed is printed during install. I saved this list to make it possible to delete the files if I want to get rid of them.
cmake -D SDL_X11=off -S . -B build && cmake --build build && cmake --install build --prefix $HOME/.local
install scummvm
sudo apt-get install scummvm
scummvm.sh
To start scummvm forcing it to use the freshly build SDL I wrote scummvm.sh
:
mkdir ~/bin
echo '#!/bin/sh
# in case SDL is compiled with support for X11 it would default to X and not
# use wayland. To force it using wayland anyway DISPLAY can be unset:
# unset DISPLAY
# start scummvm using SDL from the given path
SDL_DYNAMIC_API=$HOME/.local/lib/libSDL2-2.0.so.0.2600.1 scummvm' > ~/bin/scummvm.sh
override scummvm.desktop
To start scummvm.sh by tapping on the starter icon scummvm.desktop needs to be overridden.
I put my own version into .local/share/applications/scummvm.desktop
like this:
echo '[Desktop Entry]
Name=ScummVM
Comment=Interpreter for numerous adventure games and RPGs
Comment[pl]=Interpreter graficznych gier przygodowych
Comment[sv]=Tolk för flera äventyrsspel
Comment[he]=פרשן למספר משחקי הרפתקאות
Comment[de]=Interpreter für zahlreiche Abenteuerspiele und RPGs
Comment[es]=Intérprete para varias aventuras gráficas
Comment[ca]=Intèrpret per diverses aventures gràfiques
Exec=scummvm.sh
Icon=scummvm
Terminal=false
Type=Application
Categories=Game;AdventureGame;
StartupNotify=false
X-Purism-FormFactor=Workstation;Mobile;' > ~/.local/share/applications/scummvm.desktop
restart phosh
I didn't find out if and when phosh does use the new .desktop file instead of the one installed by the scummvm package. To make sure I restarted phosh like this:
sudo systemctl restart phosh
install Monkey Island and play
The scummvm documentation provides information what is needed to play Monkey Island.
After copying the needed files you can add the game to scummvm. I set the global option for graphics to fullscreen and enabled filtering to make the graphic a bit smoother.
This is the content of my ~/.config/scummvm/scummvm.ini (VGA version of Monkey Island in german):
[scummvm]
gui_browser_native=true
filtering=true
midi_gain=100
mute=false
speech_volume=192
native_mt32=false
opl_driver=auto
mt32_device=null
aspect_ratio=false
talkspeed=60
gui_use_game_language=false
tts_voice=0
subtitles=false
multi_midi=false
fullscreen=true
gm_device=null
sfx_volume=192
music_volume=192
speech_mute=false
lastselectedgame=monkey-vga-de
music_driver=auto
tts_enabled=false
local_server_port=12345
versioninfo=2.2.0
autosave_period=120
enable_gs=false
[monkey-vga-de]
description=The Secret of Monkey Island (VGA/DOS/German)
extra=VGA
path=/home/purism/Spiele/monkey
engineid=scumm
gameid=monkey
language=de
gui_saveload_last_pos=1
platform=pc
guioptions=sndNoSpeech lang_German
@me
pretty cool!