This time we will be doing a pure stock Debian 9 Stretch aarch64 that the PinebookPro ships with. I always keep the stock system installed on the eMMC and use other systems off the microSD (Manjaro, NetBSD) I have kept this because Debian 9 ships with a 32bit userland and 64bit kernel, and some games/programs are just not ready yet for 64bit space (which Manjaro aarch64 is – the code builds there but crashes and I need to figure out why )
This time we will build a native Linux 32-bit ARM launcher for Half-Life 1 called xash3d and play Half-Life and some of the mods – namely the legendary Counter Strike 1.3 and 1.6
There is a detailed howto on the project’s Github page already (https://github.com/FWGS/xash3d/wiki/Building-and-running), but we will just go through the steps here
You will need the standard Debian development tools/SDL2-dev/cmake
# apt-get install build-essential cmake libsdl2-dev libsdl1.2-dev libsdl2-mixer-dev ..etc
Lets create a working directory for the sources and call it SRC and store the build files there
mkdir ~/SRC
cd ~/SRC
git clone --recursive https://github.com/FWGS/xash3d
cd xash3d
git clone https://github.com/ValveSoftware/halflife hlsdk/
cd engine
git clone https://github.com/FWGS/nanogl
cd ..
mkdir -p build
cd build
cmake -DHL_SDK_PATH=../hlsdk/ -DXASH_VGUI=no -DXASH_NANOGL=yes -DXASH_GLES=yes ..
make -j4
Should say [100%] Built target xash
We have compiled the xash engine, lets get the game done now
cd ~/SRC git clone https://github.com/FWGS/hlsdk-xash3d cd hlsdk-xash3d mkdir build cd build cmake ../ make -j4 Should say [100%] Built target server
Now lets prepare the actual Game data directory and copy over the compiled arm32 binaries
mkdir ~/HalfLife cd ~/HalfLife cp ~/SRC/xash3d/build/engine/libxash.so . cp ~/SRC/xash3d/build/game_launch/xash3d . cp ~/SRC/xash3d/build/mainui/libxashmenu.so . cp ~/SRC/hlsdk-xash3d/build/cl_dll/client.so . cp ~/SRC/hlsdk-xash3d/build/dlls/hl.so .
Now we need to prepare the actual Game Data and move them from an installed Windows or Wine environment.
You can download the Half Life 1 ISO from Archive.org and install it in Wine on x86_64 Linux or Windows in Qemu :)
https://archive.org/details/HalfLifeGameOfTheYearEdition
Once you install this under Qemu Windows or Linux x86_64 under Wine you need to copy over the valve directory as it is and place it to the PinebookPro ~/HalfLife directory
cd ~/HalfLife Launch the game with the following command (save it as a launcher script) LD_LIBRARY_PATH=. ./xash3d -dev 5
The game runs fine and multiplayer works well too.
For MODs to play I have chosen Counter Strike 1.3 (1.3 is better supported) and 1.6
https://www.moddb.com/mods/counter-strike/downloads/counter-strike-13
The approach is the same, install the CounterStrike on Windows Qemu or under Wine and copy over the scstrike directory to ~/HalfLife on the Pinebookpro
cd ~/HalfLife Launch the game with the following command (save it as a launcher script) LD_LIBRARY_PATH=. ./xash3d -dev 5 -game cstrike
As of now the Counter Strike 1.6 does not work well, you can run around the maps as Gordon Freeman, With 1.3 its better, one can connect to the public servers but cannot choose the team (CS or T) .. need to investigate that ..
There is an older CS16 client source repo before it went close-sourced here
https://github.com/FWGS/cs16-client/tree/v1.32
git clone -b v1.32 https://github.com/FWGS/cs16-client
Perhaps this could be compiled natively on the Pinebookpro aarch64 Debian9 so that Counter Strike could be fully playable on this platform.
Reference material : https://www.reddit.com/r/RetroPie/comments/8zydae/guide_running_halflife_and_possibly_other_goldsrc/