Pinebookpro gaming part 1

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

We get the code via git

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 -DBINARY_RELEASE=ON ..

If you get errors like this - 
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
 Could NOT find sodium (missing: sodium_LIBRARY_RELEASE
 sodium_LIBRARY_DEBUG) (found version "1.0.18")
Call Stack (most recent call first):
 /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)
 CMake/Findsodium.cmake:224 (find_package_handle_standard_args)
 CMakeLists.txt:117 (find_package)

-- Configuring incomplete, errors occurred!
See also "/home/branon/git/devilutionX/bin/CMakeFiles/CMakeOutput.log".
See also "/home/branon/git/devilutionX/bin/CMakeFiles/CMakeError.log".
 Commenting out this line set(sodium_USE_STATIC_LIBS ON) in CMakeLists.txt
 resolves the issue. make -j4

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

About astr0baby

Please run Adblock or similar... we have been told to do so since Carl Sagan wrote the Contact .
Gallery | This entry was posted in Uncategorized. Bookmark the permalink.

9 Responses to Pinebookpro gaming part 1

  1. brzegorz says:

    Great post!

  2. lukaszpine64 says:

    Awesome :)

    • astr0baby says:

      I will add more .. I guess the pine64 wiki would be more useful for this kind of stuff. Next I will create it directly there :)
      There are more games howto coming :)

  3. Pingback: PinePhones start shipping – all you want to know | PINE64

  4. ssww says:

    is prince of persia in C (emulator kompiling) https://github.com/NagyD/SDLPoP

  5. Gleb Mazovetskiy says:

    For Diablo, you should configure it like this get an optimized build:

    “`
    cmake -DBINARY_RELEASE=ON ..
    “`

Leave a Reply to ssww Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.