I have started a small thread on the Pine64 forum related to gaming on the Pinebook-pro https://forum.pine64.org/showthread.php?tid=8665 and decided to add some more detailed instructions for others to replicate the efforts on their arm64 device.
What is needed – Pinebookpro with Manjaro (latest) Linux which can be downloaded from here https://wiki.pine64.org/index.php/Pinebook_Pro_Software_Release#Manjaro_ARM and a good fast microSD card with at least 64 GB size (Im using a Kingston 100 mb/s read 80 mb/s write)
The microSD card boots easily on the Pinebook, and is ideal for this kind of testing, since we would not risk any bricking apart from the OS on the microSD card, and backups are easily done via dd clone.
As of now the following is the kernel version Im running on it
Linux pinebookpro 5.5.0-0.1-MANJARO-ARM #1 SMP Mon Jan 6 18:31:54 UTC 2020 aarch64 GNU/Linux
Also here is a list of all the packages I have installed, so please make sure you have these in order to build the code in the future. My primary WM is Fluxbox which is very light, although I have used the XFCE Manjaro distribution image, I don’t really use much of XFCE apart from the terminal and the network-manager. (I have experimented with xfce, mate and cinnamon, but like Fluxbox the most still)
alsa-utils 1.2.1-1
ap6256-firmware 2019.11-5
audacious 3.10.1-2
autoconf 2.69-6
automake 1.16.1-2
avahi 0.7+18+g1b5f401-3
base 2-2
bc 1.07.1-3
binutils 2.33.1-2
binwalk 2.2.0-2
bison 3.5-1
blueman 2.1.1-2
bluez 5.52-2
boost 1.71.0-4
bootsplash-systemd 0.1.2-1
bootsplash-theme-manjaro 0.1-2
bridge-utils 1.6-4
cbatticon 1.6.10-1
cheese 3.34.0-2
cinnamon 4.4.6-1
clang 9.0.1-1
cmake 3.16.2-1
cpio 2.13-1
cpu-temp-speed 20190929-1
dhclient 4.4.1-4
dhcpcd 8.1.4-1
dialog 1:1.3_20191210-1
dillo 3.0.5-7
dos2unix 7.4.1-1
dosbox 0.74.3-1
doxygen 1.8.17-1
elinks 0.13-21
engrampa 1.22.2-1
exo 0.12.11-1
fakeroot 1.24-2
fbpanel 7.0-2
feh 3.3-2
firefox 71.0-1.1
firefox-ublock-origin 1.24.2-1
flex 2.6.4-3
fluxbox 1.3.7-5
freerdp 1:2.0.0_rc4-7
galculator-gtk2 2.1.4-4
garcon 0.6.4-1
gcc 9.2.0-4
gconf 3.2.6+11+g07808097-5
gksu 2.0.2-6
glances 3.1.3-2
gnu-netcat 0.7.1-7
go 2:1.13.5-1
graphviz 2.42.3-1
groff 1.22.4-3
gtk-xfce-engine 2.10.1-2
gvfs 1.42.2-1
gvfs-gphoto2 1.42.2-1
gvfs-mtp 1.42.2-1
gvfs-nfs 1.42.2-1
gvfs-smb 1.42.2-1
haveged 1.9.8-1
htop 2.2.0-2
ifuse 1.1.3-6
imagemagick 7.0.9.13-1
inxi 3.0.37-1
irrlicht 1.8.4-2.1
irssi 1.2.2-2
jdk-openjdk 13.0.1.u9-1
jre-openjdk 13.0.1.u9-1
kvantum-qt5 0.14.0-1
kvantum-theme-matcha 20190810-1
leveldb 1.22-1
libcurl-gnutls 7.67.0-2
libreoffice-fresh 6.3.4-1
lightdm 1:1.30.0-2
lightdm-gtk-greeter 1:2.0.7-1
lightdm-gtk-greeter-settings 1.2.2-4
linux-pinebookpro 5.5.0-0.1
lsof 4.93.2-1
luajit-git v2.1.0.beta3.r68.g9b410621-1
m4 1.4.18-3
make 4.2.1-4
manjaro-arm-wallpapers 20180416-1
manjaro-hotfixes 2018.08-6
manjaro-release 19.12-1
manjaro-settings-manager 0.5.6-4
manjaro-system 20191017-1
matcha-gtk-theme 20191110-1
mate-backgrounds 1.22.0-1
mate-desktop 1.22.2-1
mate-panel 1.22.2-1
mate-polkit 1.22.0-1
mate-session-manager 1.22.3-1
mate-settings-daemon 1.22.1-2
mate-themes 3.22.20-1
mesa 19.3.1-1
mesa-demos 8.4.0-2
meson 0.53.0-1
minetest 5.1.0-2
mlocate 0.26.git.20170220-2
mousepad 0.4.2-2
mplayer 38139-3
mtpfs 1.1-3
nano 4.7-1
ncdu 1.14.1-1
neofetch 6.1.0-1
net-tools 1.60.20181103git-2
network-manager-applet 1.8.24-1
networkmanager 1.22.2-1
nmap 7.80-1
noto-fonts 20190926-3
ntfs-3g 2017.3.23-3
numlockx 1.2-4
openal 1.20.0-1
opencv 4.2.0-1
openra 20190314-1
openssh 8.1p1-2
orage 4.12.1-4
p7zip 16.02-5
pacman 5.2.1-1
pamac-gtk 9.2.2-1
papirus-maia-icon-theme 20190726-1
parted 3.3-1
patch 2.7.6-8
pavucontrol 1:4.0-1
pkgconf 1.6.3-3
postgresql 12.1-2
pulseaudio-alsa 2-5
pulseaudio-bluetooth 13.0-2
qpdf 9.1.0-1
qt4 4.8.7-28
qt5ct 0.41-2
rdesktop 1.9.0-1
repo 1.13.8-2
rust 1:1.40.0-1
samba 4.10.10-2
sdl 1.2.15-13
sdl2_mixer 2.0.4-3
sdl2_net 1:2.0.1-2
sdl2_ttf 2.0.15-1
sdl_mixer 1.2.12-7
sdl_ttf 2.0.11-5
smplayer 19.10.2-1
snapd 2.42-2
sudo 1.8.30-1
tcl 8.6.10-1
texinfo 6.7-2
thunar 1.8.11-1
thunar-archive-plugin 0.4.0-2
thunar-media-tags-plugin 0.3.0-1
thunar-volman 0.9.5-2
tigervnc 1.10.1-1
timidity++ 2.15.0-1
tlp 1.2.2-1
ttf-bitstream-vera 1.10-12
tumbler 0.2.8-1
uboot-pinebookpro 2017.09-2
unrar 1:5.8.5-1
vi 1:070224-4
viewnior 1.7-2
vim 8.2.0033-1
virglrenderer 0.8.0-1
volumeicon 0.5.1-4
wget 1.20.3-2
xcursor-breeze 5.14.4-1
xdg-user-dirs 0.17-2
xdg-utils 1.1.3+18+g0547886-4
xf86-input-elographics 1.4.2-1
xf86-input-keyboard 1.9.0-3
xf86-input-libinput 0.29.0-1
xf86-input-mouse 1.9.3-1
xf86-input-void 1.4.1-4
xf86-video-fbturbo-git 199.f9a6ed7-4
xfce4-appfinder 4.14.0-1
xfce4-battery-plugin 1.1.3-1
xfce4-clipman-plugin 1.4.3-2
xfce4-datetime-plugin 0.8.0-1
xfce4-diskperf-plugin 2.6.2-1
xfce4-fsguard-plugin 1.1.1-1
xfce4-genmon-plugin 4.0.2-1
xfce4-mailwatch-plugin 1.2.0-8
xfce4-mount-plugin 1.1.3-1
xfce4-mpc-plugin 0.5.2-1
xfce4-notes-plugin 1.8.1-4
xfce4-notifyd 0.4.4-2
xfce4-panel 4.14.1-1
xfce4-power-manager 1.6.5-2
xfce4-pulseaudio-plugin 0.4.2-2
xfce4-screenshooter 1.9.7-1
xfce4-session 4.14.0-2
xfce4-settings 4.14.1-1
xfce4-systemload-plugin 1.2.3-1
xfce4-taskmanager 1.2.2-1
xfce4-terminal 0.8.9.1-1
xfce4-time-out-plugin 1.1.0-1
xfce4-timer-plugin 1.7.0-1
xfce4-verve-plugin 2.0.0-1
xfce4-wavelan-plugin 0.6.1-1
xfce4-weather-plugin 0.10.0-1
xfce4-whiskermenu-plugin 2.3.4-1
xfce4-xkb-plugin 0.8.1-2
xfconf 4.14.1-1
xfdesktop 4.14.1-2
xfwm4 4.14.0-1
xorg-server 1.20.6-3
xorg-server-xephyr 1.20.6-3
xorg-twm 1.0.10-1
xorg-xinit 1.4.1-1
xorg-xkill 1.0.5-1
xterm 351-1
youtube-dl 2020.01.01-1
Lets move onto the games section now, remember – most of the games here are old and data files were found on various abandon wares, but some can be legally bought still via GOG so support the authors etc … by buying the originals :) Below games were tested for building, running and a short gameplay, many other games coredump and crash on the Pinebookpro so I will add hopefully more howtos in the future if time allows
Pentagram Ultima8
https://en.wikipedia.org/wiki/Ultima_VIII:_Pagan
git clone https://github.com/pentagram-u8/pentagram.git cd pentagram ./bootstrap
Bootstrap fails because the code is older and it does not know about aarch64
checking build system type... system/auto/config.guess: unable to guess system type
so we need to update the system/auto/config.guess to a more recent version
cd system/auto/ rm config.guess wget https://raw.githubusercontent.com/gcc-mirror/gcc/master/config.guess cd .. cd .. ./configure make -j4 # make install # exit
Below ini file should be placed in ~/.pentagram
pentagram.ini and change the path to the game data files, I have used mine as /home/user/DOS/Pagan
[pentagram] defaultgame=u8 fullscreen=no # Width of the game resolution. scalex=640 # height of the game resolution. scaley=480 # Select the scaler you want to use. Currently you can choose between # point, bilinear, scale2x, 2xSaI, super2xSaI, supereagle, hq. # hq scaler will automatically decide whether to use HQ2x, HQ3x or HQ4x # depending on width and height. scaler=2xSaI # The game resolution is scaled to this width. width=1280 # The game resolution is scaled to this height. height=1024 bpp=32 # Enable this to use the BitStream Vera font for conversations and object descriptions. ttf=no # If you don't specify midi_driver, Pentagram will automatically select one, # based on your platform. # (Note: Windows will only work on Windows. CoreAudio and CoreMIDI only on Mac OS X. # Alsa is Linux-only and UnixSeq will only work on Unix variants.) # See further down for more options on Linux. midi_driver=disabled/windows/fmopl/timidity/alsa/unixseq/coreaudio/coremidi/fluidsynth # Enter the path to the SoundFont for CoreAudio (optional) and FluidSynth (required). soundfont=path to soundfont # Conversation speed. Higher is slower. textdelay=8 [u8] # replace 'path to U8 directory' with the directory containing 'u8.exe' path=/home/user/DOS/Pagan # replace with the directory you want Pentagram to save games to. # (no, loading of the original's savegames is not supported) save=/home/user/DOS/Pagan # Enable this to skip the intro of U8 and initial conversation with Devon. skipstart=no # Gives the option to see the endgame animation. endgame=no # Gives the option to see the quotes (without having to watch the credits). quotes=no # Footsteps are audible. footsteps=yes # Enables post patch targeted jumps. targetedjump=yes # Enables cheating by clicking on the Avatar - currently cannot be disabled. cheat=yes lastSave=
Download Ultima8 data file https://mega.nz/#!ZY4AhCxK!ip_UuJEVPedw6Hp0UDuTRRRTcMTT6MEZ1Z7ClOk-PsU
and place and place it in some directory to which the pentagram.ini will point
(My example is $HOME/DOS/Pagan)
gunzip Pagan.tar.gz tar -xvf Pagan.tar mv Pagan /home/user/DOS/
Then we can start the game by running the flollowing binary from /usr/local/bin
./pentagram
Dune2 – Dune Legacy
https://en.wikipedia.org/wiki/Dune_II
We start by creating a working directory for dune2
mkdir dune2 cd dune2 wget https://sourceforge.net/projects/dunelegacy/files/dunelegacy/0.96.4/dunelegacy-0.96.4-src.tar.bz2 bunzip dunelegacy-0.96.4-src.tar.bz2 tar -xvf dunelegacy-0.96.4-src.tar cd dunelegacy-0.96.4 ./configure make -j4
And we will get an error
make[1]: *** [Makefile:1423: FileClasses/music/DirectoryPlayer.o] Error 1 make[1]: *** Waiting for unfinished jobs.... FileClasses/music/XMIPlayer.cpp: In constructor ‘XMIPlayer::XMIPlayer()’: FileClasses/music/XMIPlayer.cpp:35:18: error: ‘MIX_INIT_FLUIDSYNTH’ was not declared in this scope 35 | if((Mix_Init(MIX_INIT_FLUIDSYNTH) & MIX_INIT_FLUIDSYNTH) == 0) { | ^~~~~~~~~~~~~~~~~~~ make[1]: *** [Makefile:1423: FileClasses/music/XMIPlayer.o] Error 1 make[1]: Leaving directory '/home/user/SRC/dune2/dunelegacy-0.96.4/src' make: *** [Makefile:450: all-recursive] Error 1
We need to patch the code a little
sed -e 's/MIX_INIT_FLUIDSYNTH/MIX_INIT_MID/g' \ -i src/FileClasses/music/DirectoryPlayer.cpp \ -i src/FileClasses/music/XMIPlayer.cpp
And return to build again
make -j4 # make install # exit
Download the datafile for Dune2 https://mega.nz/#!xYpAHIJB!IZlHpCuAZtIklkAVVFOBjFzXSOijckeDh1R8yyXludM
and move the Dune2 data files to ~/.config/dunelegacy
gunzip dunelegacy-data.tar.gz tar -xvf dunelegacy-data.tar mv data ~/.config/dunelegacy/
And start the game by running the binary from /usr/local/bin
./dunelegacy
Diablo – DevilutionX
https://en.wikipedia.org/wiki/Diablo_(video_game)
git clone https://github.com/diasurgical/devilutionX cd devilutuionX mkdir bin cd bin cmake .. make -j4 # make install # exit
Download the ISO from archive.org
cd .. cd .. wget https://archive.org/download/Diablo_1996_Blizzard/Diablo%20%281996%29%28Blizzard%29.iso mv ‘Diablo (1996)(Blizzard).iso’ diablo.iso mkdir iso # mount -o loop diablo.iso iso # cd iso # cp diabdat.mpq ../devilutionX/bin # chown user:user .../devuilutionX/bin/diabdat.mpq \\change to user you are runnin # cd .. # umount iso # exit cd devilutionX/bin
We can launch the game from the devilutionX/bin directory like this
./devilutionX
Chocolate-Doom(heretic-hexen-strife)
git clone https://github.com/chocolate-doom/chocolate-doom cd chocolate-doom ./autogen.sh ./configure make -j4 su # make install # exit
Get the Doom1, Doom2, Hexen and Heretic WADs and play
chocolate-doom -iwad doom1.wad -window
There are plenty of iwad files out there so not going to link any here
Exult (Ultima 7)
https://en.wikipedia.org/wiki/Ultima_VII:_The_Black_Gate
wget https://github.com/exult/exult/archive/master.zip unzip master.zip cd exult-master ./autogen ./configure make -j4 su # make install # exit
Download the Black-Gate datafile
wget 'http://www.ravestats.com/public/aw-remote-download.php?dlc=Zy9VbHRpbWFfN18tX1RoZV9CbGFja19HYXRlLnppcA==' --output-document 'u7-bg.zip' unzip u7-bg.zip cd Ultima_7-_The_Black_Gate su # mkdir /usr/local/share/exult/blackgate # mv STATIC /usr/local/share/exult/blackgate # mv gamedata /usr/local/share/exult/blackgate # exit
To play the game run the launcher from /usr/local/bin
./exult
Similar can be done for the Forge of Virtue, Serpent Isle and Silver Seed
Duke Nukem 3D aka eduke32
https://en.wikipedia.org/wiki/Duke_Nukem_3D
git clone https://github.com/svn2github/eduke32 cd eduke32 make
Downloaf the DUKE3D.GRP data file , extract and https://mega.nz/#!RJAFXC4S!EqH2Liz6BBifBo_NL7UASIua7oFKt2CVBGP7AFlgEyQ
copy DUKE3D.GRP (original data file) to ~/.config/eduke32/
gunzip duke3d.grp.gz mv duke3d.gp ~/.config/eduke32/
Run the game by launching the eduke32 in the build directory
./eduke32
Blood aka NBlood
https://en.wikipedia.org/wiki/Blood_(video_game)
git clone https://github.com/nukeykt/NBlood cd NBlood make -j4
Download the Blood BLOOD-GAME-DATA.tar.gz file https://mega.nz/#!dMZFmAxL!UZheorFBt6a2OUg6OzVCz0SSQgbb6sYNNZ8-ZoSrDGg
Extract in the build directory or where the nblood binary resides
gunzip BLOOD-GAME-DATA.tar.gz tar -xvf GAME-DATA.tar mv GAME-DATA/* .
Play the game from the build directory
./nblood
STUFF AVAILABLE VIA PACMAN ARCH PACKAGE MANAGER
OpenRA (aka RedAlert)
# pacman -S openra
ScummVM
# pacman -S scummvm
DOSBox
# pacman -S dosbox