# Playing Celeste on the Raspberry Pi 4 Many thanks to Sebastian for writing [this article](https://magazine.odroid.com/article/playing-modern-fna-games-on-the-odroid-platform/) which inspired me to do this project. And many thanks to [Ethan Lee](https://twitter.com/flibitijibibo) for creating [FNA](https://fna-xna.github.io/) and ported Celeste to it! Using the method described in this post also works on Raspberry Pi 2 and 3, but those have some hardware limitations and doesn't support texture sizes as big as the Pi 4, so I recommend you use a Pi 4 for this, and the performance is much better too! ## Before you start ![](https://i.imgur.com/cY2rFoi.jpg =500x) This guide assumes you have basic experience with Linux and the command line. Here is what you need for this guide: * A Raspberry Pi 4 with 4 GB RAM or higher (it might work on 2 GB, but I have only tested on the 4 GB model) * Raspberry Pi OS (Buster or Bullseye, not Lite version) on a microSD card that is at least 8 GB. * An Internet connection to the Raspberry Pi * You need to buy [Celeste on itch.io](https://mattmakesgames.itch.io/celeste). The Steam version won't work. ## Step 1. Overclocking This step can be skipped if you only want to test the game, and don't care about performance. The Raspberry Pi 4 can be overclocked quite a lot, which will make Celeste run a lot faster. This will generate more heat, so some kind of cooling solution is recommended. I use a small fan on top of the Pi, powered by the gpio pins. Edit the boot config file with this command: ```bash sudo nano /boot/config.txt ``` Scroll to the bottom and after `[pi4]` and make it so it looks like this: ```ìni [pi4] # Run as fast as firmware / board allows arm_boost=1 over_voltage=6 arm_freq=2100 gpu_freq=750 ``` You can try with a higher arm_freq if you want, but it may not boot. 2147 is the highest you can set at the moment. If the Pi doesn't boot, put the SD card in another computer and edit the config file and try again. 750 is the highest value for gpu_freq. Save, exit and reboot. ## Step 2. Download and extract the game If you haven't already, buy the game from [itch.io](https://mattmakesgames.itch.io/celeste). Go to [your library](https://itch.io/my-collections) and download the Linux version. At the time of writing, Celeste's version number is 1.4.0.0 (Mar 29, 2021). Extract the game to `~/Celeste`: ```bash unzip ~/Downloads/celeste-linux.zip -d ~/Celeste ``` ## Step 3. Install dependencies Run the following command to install the Mono runtime and SDL2. ```bash sudo apt install mono-runtime libsdl2-2.0-0 libsdl2-image-2.0-0 ``` Download the following file to your Downloads directory. This contains some native dependencies not available through the package manager, and a new launch script. https://github.com/daniel-j/fnalibs-celeste/releases/download/v211028.1/fnalibs-celeste-libarmhf.tar.gz *If you want to build it yourself, check out [the repository](https://github.com/daniel-j/fnalibs-celeste).* Extract it to `~/Celeste`: ```bash tar xvf ~/Downloads/fnalibs-celeste-libarmhf.tar.gz -C ~/Celeste ``` ## Step 4. Run the game In a terminal, navigate to the game directory: ```bash cd ~/Celeste ``` There is a file called `Celeste.sh` which is the new launch script included in the package you just extracted. You can edit this if you want to disable the fps overlay etc. The script sets the cpu to performance governor, for a higher fps. To start the game, run `./Celeste.sh` Play the game in fullscreen in 1080p, or 720p for graphical better performance. Grab a controller, some raspberries/strawberries and enjoy Celeste! 🍓 ## Step 5. (Optional) Add a shortcut in the menu/on the desktop If you are using the Raspberry Pi as a desktop computer, you might want to be able to launch the game without having to use the terminal. Here's how: Create a new file with the following content: ```ini [Desktop Entry] Version=1.0 Name=Celeste Categories=Game; Exec=/home/pi/Celeste/Celeste.sh Icon=/home/pi/Celeste/Celeste.png Terminal=false Type=Application ``` Save it as `~/.local/share/applications/celeste.desktop` and make it executable: `chmod +x ~/.local/share/applications/celeste.desktop` And if you want to have a desktop launcher: `cp ~/.local/share/applications/celeste.desktop ~/Desktop/celeste.desktop` You can now launch the game from the menu and/or from the desktop! BONUS: If you want even more performance, launch Celeste.sh from a TTY. Press Ctrl+Alt+F2 to switch to tty2, log in with you username and password, and then run `~/Celeste/Celeste.sh` ## Known issues * The 3D mountain in the menu causes bad performance. * The feather sequence has bad performance.   *-- djazz* --- You can reach me at: Discord: djazz#0147 Twitter: [@daniel_hede](https://twitter.com/daniel_hede) YouTube: [djazz](https://www.youtube.com/channel/UCoak0PlSYIv9PA-iMqqqa1Q)