sudo apt install libasound2-dev libudev-dev
Okay, time out - what are we installing and why?
-
libasound2-dev
is ALSA. This library ensures that RetroArch will have sound - kind of important. -
libudev-dev
is udev. This library is necessary to ensure compatibility with a wider range of input devices. Without this, my DualShock 3 could be detected, but didn't actually work.
Now to configure it:
CFLAGS='-mfpu=neon' ./configure --enable-alsa --enable-udev --enable-floathard --enable-neon --enable-dispmanx --disable-opengl1
Okay, time out again - why are we passing these parameters to configure
?
CFLAGS='-mfpu=neon'
ensures that the--enable-neon
option works, specified later.--enable-alsa
ensures that we're compiling with ALSA support. If the library isn't installed, the configure script will die screaming instead of disabling the feature.--enable-udev
ensures that we're compiling with udev support.--enable-floathard
ensures that RetroArch uses the Pi's built-in hardware Floating Point Unit. Without this, there is the possibility that floating point calculations might be emulated in software, which is much slower.--enable-neon
ensures that RetroArch can use the Pi's SIMD CPU instructions (called NEON) for extra speed. Some cores take advantage of this.--enable-dispmanx
ensures RetroArch can use the Pi's Dispmanx support for rendering graphics. Dispmanx is a low-level 2D graphics API unique to the Raspberry Pi's video core which you can use as an efficient alternative to OpenGL. Some emulators run faster with Dispmanx, but the downside is that it is not as featureful as OpenGL (for one, the OSD text at the bottom of the screen won't render), and comes with ugly bilnear filtering enabled by default, though this can be turned off. So we compile with support for both GL and Dispmanx, and you can decide for yourself which one you prefer.--disable-opengl1
ensures RetroArch does not attempt to compile support for the legacy OpenGL 1.x standard, which the Pi does not support.
And that's it. Disabling 20 different options is pointless - all you're really saving is binary size. If the configure script completes without errors, you can then:
make
sudo make install
Now that RetroArch is installed, run it:
retroarch
You will be presented with the GUI front-end. You can use the arrow keys to navigate the UI, x to select an option, z to back out, and esc to quit RetroArch completely. We still have a little ways to go, however, until we're completely up and running.
Quit out of RetroArch and edit the ~/.config/retroarch/retroarch.cfg
file with your editor of choice - nano
is good if you don't have a preference. Look for the line that mentions core_updater_buildbot_url
and set it to http://buildbot.libretro.com/nightly/linux/armhf/latest/
.
Next, unless you are incredibly lucky your controller probably is not working. Navigate to Online Updater, then Update Autoconfig Profiles and wait for the OSD text to stop flashing. Quit and restart RetroArch to see if your controller was found. If your controller still isn't configured, you might need to go to Settings, then Input, then Input User 1 Binds. It should be self-explanatory from here.
Now, let's test our updated settings. From the main menu, navigate to Online Updater, then Core Updater, and select 2048. Once it's installed, from the main menu, select Load Core then 2048. Finally, select Start Core. If everything went smoothly, you should be able to play a simple game of 2048 to prove that everything is set up correctly. To exit the game, press escape or use the button on your controller that you bound to said functionality.
At this point, you are now ready to follow other RetroArch tutorials that concern importing and playing your games.
Does it bug you that sometimes your Pi will show a blank screen after a period of inactivity, which can only be undone by touching the keyboard? Use your editor of choice to modify /etc/rc.local
and put the line setterm -blank 0
before the last line that says exit 0
.
If you remember from earlier, we compiled RetroArch with Dispmanx support. To give it a spin and see if you prefer it to the default GL implementation, first ensure that you are using the default rgui menu driver - if you haven't changed your menu driver, you're fine. Next, at the Main Menu select Settings, Driver, then Video Driver and select dispmanx. You must then quit and relaunch RetroArch. If you ever want to go back, go to the same place and select gl instead.
RetroArch gives you many different choices for cores. Sometimes it's a little confusing trying to figure out which core is the best. Here is my suggestions based both on personal experience and other people giving me advice:
- NES: FCEUmm.
- Genesis: Genesis Plus GX. If you get slowdown, try PicoDrive.
- 32X: PicoDrive.
- SNES: Snes9x Next. If you get slowdown, try CATSFC.