Over the last weeks I got a little bit distracted by another little device – the Raspberry Pi. Sadly this put all my current projects on hold, which is especially bad for my progress on my robot. Since I struggled a little bit with the configuration of an awesome Raspberry Pi distribution called RetroPi I wrote down some how-to’s on how I solved some of the challenges I faced. This will be an ongoing post – so I will update this as soon as I learn something new.
So here is my story
After 15 years I could finally convince my beloved wife and head of our finance department to get a new TV. The old one was a Phillips cathode ray tube television (I hope the translation is right), which we bought with our first earned money after finishing university. And it stayed with us for the whole time including moving to a different town 8 times. So lots of emotions and it still worked pretty well. But after people we remotely new started making fun of us, when they saw the TV (our friend make fun about this for years ;-)), we finally decided to get a new flat TV.
As part of the investment I wanted to replace the media center I used to far. Which again still holds up, but the user interface could use an update and I stopped using the internal hard drive years ago, playing media content using Samba shares.
The Raspberry Pi seemed to be the perfect option – small/tiny, silent, highly configurable, and cheap to be the next media center. After going through some tutorials I choose Raspbmc as “my” solution and after some performance tweaking I’m really, really happy with the solution. I have to admit that Sam Nazarko did an incredible job providing this distribution – and I’m looking forward what to see from him in the future.
On my search I discovered another cool project called Retropi which wants to bring back all the classical games we played in our childhood to the big (flat) screen using a number of emulators. And there I had a challenge (that I was not aware I’m looking for ;-)). The installation as simple as i.e. Raspbmc and the basic system is up and running in no time. After this is, it is recommended to tweak the system to your needs.
The challenge is, to get the whole system running, using only a gamepad or joystick – which I was not able to yet. In addition I encountered a number of bugs, I was not able to fix (yet):
- Doom (pre-installed) does not start no matter how much configuring I try
- After updating the setup script and the binaries (using the setup script) Vice does not work anymore (the screen is just black)
But there minor setbacks are definitely no show stoppers. What I’m still struggling with is the configuration of emulatorstation and the emulators itself.
Changing the emulatorstation config files
I changed the ~/.emulationstation/es_systems.cfg a little bit, so only the emulators are really use are in the config file and I took out the menu item for doom (which I could not get to work). What to change in the es_input.cfg pretty much depends on the controller you use (this is something where google can help).
Using the emulators (this is something I will update, as I learn more)
All of the challenges with the emulators can probably be solved by RTFM, but finding the correct manual if the emulator is not known, is a challenge itself. I also want to make clear, that the issues/challenges described below are not criticism of Retropi or the awesome work of the person(s) working on this project.
To change the configuration of the emulators you can look if RetroPie has allready an additional config file created. Look in the folder ~/RetroPie/configs/ after logging in with you SSH client of your liking. Here you should find a couple folders where you can place firmware files or add something to the configuration by changing the retroarch.cfg in the emulators directory here.
In easy steps:
- Go to the config folder: cd RetroPie/configs/
- List all emulator folders with config files: dir
- Change to the folder you need: cd NAME_OF_THE_FOLDER
- Edit the config file: nano retroarch.cfg
Playing C64 games is the most important part of my Retropi for me – this is where I get nostalgic. As far as I know it is not possible to rely on a gamepad only, you need a keyboard to fully use the emulator. After uploading the game roms in the corresponding Folder (c64) on your Retropi and restarting emulatorstation the games will show up in the c64 section.
I usually create subfolders for each game to make the menu screen a little less crowded – especially if you have games that use multiple disc images.
To change emulator settings or switch the discs you need to access the settings of vice. So start the emulator and then press F12 to access the settings. Navigate to the section you want to change and hit enter. Especially when you have games that use multiple disc images this is not very comfortable.
Also I was not able to find the settings for key mapping to assign the RUNStop key to a button or key (this button is needed from time to time to start a game). I found a picture with the standard layout on http://www.commodoreserver.com/, but for some reason this does not work for me. I also found something in the vice documentation on using custom key maps – now I have to find or create my own mapping.
Update: I found a solution. The problem was in front of the screen. A assigned a key in emulatorstation to Esc and that seems to be a conflict with vice. I changed the key in emulatorstation again and it worked.
If you want to close vice (without restarting the Raspberry Pi) you can also use the settings menu.
I tried to run the emulator full screen, by changing the settings accordingly. But this setting is ignored by the emulator for some reason. A full description of the config file can be found here.
Nintendo64 (I have not tested this yet)
To get the Nintentdo 64 emulator up and running you need additional config files (Glide64mk2.ini and RiceVideoLinux.ini), which have to be created in ~/RetroPie/configs/.
Here are some examples as documented in the ubunitwiki:
Games that require their own bios or firmware
What I do is: I copy the image file via samba or the Windows Explorer in the emulator rom folder “gba” (how this is done you can learn here).
Then I copy the bios file in the emulator’s config file.
- I copy the bios file via Windows Explorer in the corresponding game directory (gba)
- Copying the image file :
cp /home/pi/RetroPie/roms/gba/gba_bios.bin /home/pi/RetroPie/emulators/gpsp/raspberrypi/
This took me a while, since here are multible tutorials availeble with different information – and most of them did not work for me (but for others it seems work just fine).
1. You need the right bios file (i.e. scph1001.bin for th US Version)
2. The filename has to be in lowercase.
3. You have copy it in the following folder: “/home/pi/RetroPie/emulatorcores/”
- I copy the bios file via Windows Explorer in the corresponding game directory (psx)
- Copying the image file:
cp /home/pi/RetroPie/roms/psx/scph1001.bin /home/pi/RetroPie/emulatorcores/
- Some tutorials mention the following paths (which did not work for me, but you can try if the solution above does not work): /home/pi/RetroPie/emulatorcores/pcsx_rearmed/ or /home/pi/RetroPie/configs/psx/
Gameboy Advance Color
Firmware files, usually .bin files, have to be saved in the folder: ~/RetroPie/configs/
Based on the information I found in the Ubuntu wiki here are some examples:
- Gameboy Advance Color (gbc_bios.bin),
What I do is: I copy the image file via samba or the Windows Explorer in the emulator rom folder (how this is done you can learn here)
Then I copy the bios file in the emulator’s config file.
- Copying the image file:
cp RetroPie/roms/gbc/gbc_bios.bin RetroPie/configs/gbc/
Scrubbing game data
There is a python script available that allows you to scrub. The script is called ES-scraper and can be found here.
To set it up I followed the instructions on the page:
- I installed PIL so pictures get resized (nevertheless, this pictures found had all different sizes): sudo apt-get install python-imaging
- I checked the emulatorstation config if it contains the platform ID (mine already had the IDs in place – depending on the image you use for RetroPi you may have to add them): nano $HOME/.emulationstation/es_systems.cfg
- I created the scraper script: nano Retropi-Setup/scraper.py
- I copied the script content from here in the newly created scraper.py
- I executed the script: python RetroPi-Setup/scraper.py
You should see the progress in the window of your ssh client.
Changing the game information
Even though the scraper is good – there will be wrong or missing data. It is possible to edit a file called gamelist.xml to enter information on the games. This file should be in every folder that contains game roms after you run the scraper script.
You can change the content as you like, such as game title, the link to cover art, the description of the game. The xml file is pretty self-explanatory.
How to open the script (i.e. for C64 games): nano RetroPi/roms/c64/ gamelist.xml