# 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
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 on a microSD card that is at least 8 GB.
* An Internet connection to the Raspberry Pi
* You need to get [Celeste from itch.io](https://mattmakesgames.itch.io/celeste). The Steam version requires SteamWorks and doesn't work on ARM. Download the regular Linux version.
## 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:
sudo nano /boot/config.txt
Scroll to the bottom and add the following:
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.
Extract the game to `~/Celeste`:
unzip ~/Downloads/celeste-linux.zip -d ~/Celeste
## Step 3. Install dependencies
Run the following command to install the Mono runtime and SDL2.
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.
*If you want to build it yourself, check out [the repository](https://github.com/daniel-j/fnalibs-celeste).*
Extract it to `~/Celeste`:
tar xvf ~/Downloads/celeste-libarmhf.tar.gz -C ~/Celeste
## Step 4. Run the game
In a terminal, navigate to the game directory:
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 at 720p or 1080p. 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:
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!
## Known issues
* The 3D mountain in the menu causes bad performance.
* The feather sequence has bad performance.
You can reach me at: