Building PPSSPP for Ubuntu on the ODROID-XU3/XU4

PPSSPP is a Playstation emulator that runs on many platforms, including Linux and Android. This article describes how to build PPSSPP from source, so that you can run PlayStation games in Ubuntu:

$ cd ~
$ git clone --recursive https://github.com/hrydgard/ppsspp.git
FFmpeg needs to build before the ppsspp binary is build, since the pre-build binaries are all for soft floating points, and we need hardfp:
$ cd ppsspp/ffmpeg
$ ./linux_armhf.sh
$ cd ..
Before we can start to compile, we have to turn our /usr/include/GLES2/gl2ext.h into an vendor specific one by disable the use of GL_EXT_buffer_storage. Our Mali library does not include/export that function so we can't define it:
$ sudo sed -i.bak '/^\#ifndef GL_EXT_buffer_storage$/,/^$/d' /usr/include/GLES2/gl2ext.h
You may want to set the use of only 4 cores in FFmpeg for tinkering and experimenting, I have observed that FFmpeg with threading doesn't work out very well when all cores are chosen with HMP (switching higher demanding tasks from LITTLE to the BIG CPU's). To do this, you can edit the file Core/HW/MediaEngine.cpp at line number 475 to use only 4 cores, which is better for switching from 4 LITTLE to 4 BIG instead using all 8 cores.
av_dict_set(&opt, "threads", "4", 0);
However, this was observed in Moonlight with using GameStream with 1080p video files. PPSSPP video files are not that big, and maybe therefore not so CPU intensive, so that may only impact very little to nothing.

Next, generate the Makefile, and start compiling the binary:

$ cmake -DUSING_EGL=OFF -DUSING_GLES2=ON -DUSE_FFMPEG=YES -DUSE_SYSTEM_FFMPEG=NO .
$ make -j7
If you are on VU5A, you have now touchscreen capabilities in the menu, and you can also enable 'On-Screen touch controls' if you want. For a demonstration using GoW - Chains of Olympus on ODROID XU4 / VU5A, with Mali GBM enabled userspace driver, please watch the video at https://youtu.be/QegJlwflkZk?t=374.

You can now brand your emulated PPSSPP to an unique region by generate a locale for it, using de_AT as an example (some games may use it for in-game language):

$ sudo locale-gen de_AT.UTF-8
$ sudo update-locale LANG=de_AT.UTF-8
My settings for GoW along with some texture replacements for Star Wars - The Clone Wars and Star Wars - The Force Unleashed so the Games are playable at https://forum.odroid.com/download/file.php?id=7789. Here is my ppsspp configuration folder structure:
odroid@odroid:~$ tree -d .config/ppsspp/
.config/ppsspp/
└── PSP
│├── PPSSPP_STATE
│├── SAVEDATA
││ ├── ULES01284SAVE00
││ └── ULES01376SYSDATA
│├── SYSTEM
││ └── CACHE
│└── TEXTURES
││├── ULES00981
││└── ULES01284
For comments, questions and suggestions, please visit the original thread at https://forum.odroid.com/viewtopic.php?f=98&t=32173.

Be the first to comment

Leave a Reply