The Raspberry Pi makes a great gaming choice for those who are interested in classic gaming such as Emulation or even some older FPS action such as Quake 1,2 or 3.

However, there are a few tweaks and caveats one should be aware of with the Pi before diving in.

SDL 1.2 vs SDL2

SDL 1.2:

SDL 1.2 is tried and true and has 1000’s of applications for it. It also has a specially modified release for the Pi to work on console allowing you to save resources by staying out of that cumbersome X windows environment but there are some limits.

Every SDL 1.2 application I’ve used on the Pi seems to scale to 640×480 max on the console, regardless of your video connection. It can go lower (if you’re using sdtv) but not higher it seems. If this is incorrect I have yet to see a way around it. It does scale to the size of your display though so impact is minimal and the low resolution is actually better for your Pi’s performance.

SDL2.0

SDL 2 had Linux console usage built in so in SDL 2’s natural state from source you can achieve X-less running. That being said however SDL2.0 unlike 1.2 will use your displays natural resolution for output, anything smaller (forced by the application) becomes a smaller screen inside that natural resolution and does not scale (yet, I hope this gets fixed). The problem with that is if you try and run a game at 1920x1080p there’s a good chance it could perform poorly. SDL2 also only feeds its resolution calls that one resolution you are set at so you can not change it from within the game (once again, hope they fix that).

However, you can force the issue with your /boot/config.txt

If you set an HDMI or DVI mode of a lower resolution (that your display supports) SDL2 will use that instead for your game. I don’t mean change the framebuffer size, that ** will not help in this case ** you have to actually set your hdmi mode itself.

For example 720p instead of 1080p:

hdmi_drive=2 hdmi_mode=85 #720p

If you just wanted a smaller X and linux console for example you could just do:

framebuffer_width=720 framebuffer_hieght=480

You will get an apparent resolution change but in reality your Pi is still operating at the displays full resolution and only the framebuffer is displayed in that resolution. Since SDL2 actually utilizes the Pi’s video driver it will ignore this and initialize the program you start at the full resolution so if you want to control SDL2 resolution use the hdmi_ config options in config.txt.

GPIO uinput gaming devices:

SDL2 breaks them at first. The issue was explained here. If you make a udev rule or alter the file I talk about there you can re enable those devices for SDL2 applications without affecting SDL1.2 usage either.

Raspberry Pi CPU

The default clock is 700mhz. If you plan to play games you have to overclock. I personally use the high setting in raspi-config which sets it to 950mhz. I have tried 1ghz but I found I would get a hard system lock from time to time. Results may vary.

Go have fun

It’s easy to turn the Pi into a retro gaming powerhouse and there are endless community resources at your disposal. Just keep in mind the limitations above and you will be up and running in no time.