Last updated: 31MAY2022
Finally! A port of Celeste is now available on retro handhelds, so you can natively play this little platforming gem.
The installation process is a little trickier than other (PortMaster) solutions, due to the fact that the game requires closed-source libs that cannot be redistributed. Thankfully, it’s pretty easy to add them yourself, which we’ll do in this guide. Note that you will also need to be running PortMaster on your device in order to install certain mono files which will allow sound to work properly.
Update (29MAY2022): This guide now works on RK3326 devices as well as the RG503, when running on a compatible firmware like ArkOS, JELOS, and AmberELEC! Below is a list of devices that should be able to run the game. Big thanks to developer JohnnyOnFlame for getting this port up and running; please consider buying him a coffee for his hard work.
Anbernic RG552 (AmberELEC, JELOS)
Anbernic RG503 (JELOS, ArkOS, TheRA) *when available
Anbernic RG351P (AmberELEC, JELOS, ArkOS wuMMLe fork)
Anbernic RG351M (AmberELEC, JELOS, ArkOS wuMMLe fork)
Anbernic RG351V (ArkOS, TheRA, AmberELEC, JELOS)
Anbernic RG351MP (ArkOS, TheRA, AmberELEC, JELOS)
PowKiddy RGB10 (ArkOS)
GameForce Chi (ArkOS)
ODROID Go Advance (ArkOS)
ODROID Go Super (The RetroArena, RetroOZ)
PowKiddy RGB10 Max (The Retro Arena, RetroOZ)
For best results, make sure you are running the most recent version of ArkOS, AmberELEC, or JELOS, and the latest version of PortMaster. The Anbernic RG552 will provide the best gaming experience (see notes below).
Note that the “Final” version of ArkOS for the RG351P and RG351M will not support the game due to an outdated SDL2 library. However, wuMMLe’s fork of ArkOS may be updated in the future to support it. In the meantime, I recommend using JELOS or AmberELEC for those two devices instead, since they are in active development.
Purchase the itch.io version of Celeste
Due to DRM issues, the Steam version of Celeste will not work with this setup. Additionally, the game is not available on GOG, and the Humble version literally just gives you a Steam code (I found this out the hard way, after buying this game for the fourth time across all of my various gaming platforms!). Instead, you will need to get the itch.io version. If you have purchased either of these bundles previously, you will already have the game in your library.
Once you have purchased the game, you will want to download the Linux version. The file will be named “celeste-linux.zip” and will be 867MB.
Compile the data files
Next, we will need to gather our Celeste Package and some necessary lib files. Note that you will need to have 7zip installed on your computer for this next step, and file extensions will need to be visible. You also need to install Portmaster onto your device if you haven’t already.
- You can grab the Celeste Package here, then save this somewhere on your computer.
- Extract the Celeste Package using 7zip, it should have a folder named “celeste” and another file named “Celeste.sh”. Place those somewhere handy, like your Desktop.
- Go to fmod.com and create a free account. Next, go to this page and download the Linux version of the fmod engine. The file will be named “fmodstudioapi20206linux.tar.gz” and will be 72MB.
- Right-click on the fmodstudioapi20206linux.tar.gz file and go to 7Zip > Extract Here. This will create a file named “fmodstudioapi20206linux.tar”; now, right-click on THAT file and select 7zip > Extract Here. In the pop-up window you will get an error about creating symlinks, you can ignore it and select “Close”. You will be left with a folder named fmodstudioapi20206linux.
- Inside that fmod folder, you need to grab these two files:
- fmodstudioapi20206linux > api > core > lib > arm64 > libfmod.so.13.6 (1219KB in size)
- fmodstudioapi20206linux > api > studio > lib > arm64 > libfmodstudio.so.13.6 (1201KB in size)
- Back in your “celeste” folder (the one you extracted from the Celeste Package), you should find a folder named “libs”. Inside that folder, place the two libfmod files. Next, change their file extensions from “.13.6” to just “.13”, so that they should look like the following:
Add the Celeste game files
Finally, let’s add the Celeste game files to the appropriate folder.
- Open your “celeste” folder, then open the “gamedata” folder.
- Extract the celeste-linux.zip folder that you downloaded from Itch.io, and place the contents (including Celeste.exe) in the gamedata folder
- Insert the SD2 card from your RG552 (AmberELEC or JELOS), then open the ports folder. Inside, place the “celeste” folder and the Celeste.sh file.
- Eject the SD card and place it into your RG552. Boot the device up.
- On your device, open PortMaster and install the shell files for Timespinner or Owlboy; this will add a special mono file needed for Celeste. PortMaster is included in JELOS, but you will need to manually install it if using AmberELEC. Here is their page on it.
- Open the Celeste file and have fun. Note that the first time you boot the game it will parse through all of the data files one time, which will take a minute or two. After that it won’t happen again.
Here are some notes from the developer regarding RK3326 devices:
- Some effects were lowered in complexity or removed to get perf. to an acceptable level, those can be tweakdd via the new options menu.
- Performance on RK3326 dips into low 50s in boss fights, and has a few hard drops into the 25s in areas that aren’t mechanically complex, I’m nearly 60% done with Farewell and up until then performance seems more than great when it actually matters.
- If you are on ArkOS or RetroOZ and getting an error that prevents you from saving your game progress, download this updated mono package and place it somewhere on your SD2 card (like in your Ports folder). Then boot up the device, and go to Options > File Manager (or 351FILES for RetroOz), and move the mono file from your Ports folder to
/opt/system/Tools/PortMaster/libs(and delete any mono file that’s already inside). This should fix the saving issue.
How it was achieved
Developer JohnnyOnFlame left a really fascinating list of work he did to get the game working on low-end (RK3326) devices, here is a summary if you are interested:
- A series of patches to create lower graphical setting profiles. https://github.com/JohnnyonFlame/FNAPatches/blob/master/CelestePatches.cs
- An utility to compress Celeste textures using ASTC4x4. https://github.com/JohnnyonFlame/celeste-repacker
- Patches to allow the game to load these textures . https://github.com/JohnnyonFlame/FNA3DHacks/commit/90e3b4c223af4f0d553856ae103d24d3b1b0986b and https://github.com/JohnnyonFlame/FNAPatches/blob/master/CelestePatches.cs#L396
- An FMOD 1.x wrapper was to allow compatability with FMOD 2.x (since FMOD 1.x isn’t available for ARM64) https://github.com/JohnnyonFlame/FNAPatches/blob/master/fmodstudio_fix.c