Batocera Picade

In this post we’re going to explore setting up Batocera on a Picade console.

At the start of 2020 I purchased a Raspberry Pi 4 and a Picade console, my aim being to set up the Raspberry Pi as a retro gaming machine. I considered getting a smaller form factor case and game pad or external arcade controller but hey, I love a project and the vaporware aesthetic of the Picade had me sold. One cold Saturday I set about building the Picade with my son and an hour or so later the cabinet was built and Retropie could be installed. At the time, Retropie didn’t officially support the Raspberry Pi 4 however an awesome video by ETA Prime showed the easy setup steps that would get it working.

For about 18 months all worked well but a couple of slight niggles made me decide to upgrade the version of retro pie to 4.7.1, this turned out to be a bit of a mistake. When I turned the pie on the sound was 100% value and turning it down made no difference. In that state the Picade was unplayable. I tried installing various combinations of raspbian and Retropie but couldn’t quite get back to that original setup I had. The Pimoroni forums have a thread about the volume being too high, I tried a few of the suggestions but had no luck. There is also an open bug for the issue on the picade-hat GitHub site, the code hasn’t been touched since March 2020 though so I didn’t hold out much hope of a fix any time soon.

By chance, I had a look at the issue thread on support for Recalbox and saw there existed a driver for Lakka and one of the posts talked about an installation of Batocera too. A bit more research turned up another excellent video by ETA Prime about installing Batocera on a Pi 4 and an awesome post by Mike Jolley about installing Batocera on a Picade. Both of these resources gave me the confidence to take the plunge and attempt to set Batocera up on my Picade console.

One Saturday, with the kids at the in-laws I had one final bash with Retropie, each time the “SEGA” logo appeared on Sonic I’d jump out my skin, just too loud. It didn’t work anyway so what harm would there by in trying Batocera.

I mostly followed the Mike Jolley instructions but found a couple of places where updates aren’t needed or things aren’t fully explained. I’d suggest reading that post first before following these steps.

  1. Firstly I downloaded Batocera for my Pi 4. The download page has images for lots of different single board computers so choose one that suits your needs. The version I downloaded was v32, this was 4 months old at the time of install. Since installing this version, v33 has been released with many changes, Batocera Nation has produced an excellent video detailing the updates.
  2. Download Balena Etcher to flash the image to the micro SD card use by the Pi.
  3. Once the image is burnt, put the SD card in the Pi and boot. Batocera will set up and eventually boot into the menu system.
  4. Using a USB keyboard, update the storage from ext4 to ExFat, this was done in Batocera by going System Settings> Developer> Format a disk and change ext4 to ExFat.

Thats the initial part done, Batocera is set up, ready to use and accept ROMs. At this point, using a USB game pad or the keyboard would allow games to be played easily but I had the clicky bits of the Picade console to use. Next steps, getting the joystick and buttons to do things - this is where the article from Mike Jolley came in handy.

  1. Install device tree compiler (dtc) on your machine.
  2. Put the SD card into the machine with dtc installed.
  3. Clone the Picade hat github repo somewhere.
  4. Compile the overlay. From the picade-hat directory I ran the command dtc -I dts -O dtb -o picade.dtbo picade.dts, this created a the .dtbo file that needs to be copied to the Pi.
  5. Copy the picade.dtbo to /overlays folder on the SD card.
  6. Find and edit the config.txt file adding the following lines to the bottom of the file:
    dtoverlay=picade
    dtparam=audio=off
    
    # key mapping
    dtparam=button1=30 # A Key
    dtparam=button2=31 # S Key
    dtparam=button3=16 # Q Key
    dtparam=button4=44 # Z Key
    dtparam=button5=45 # X Key
    dtparam=button6=17 # W Key
    dtparam=enter=23 # I Key
    dtparam=escape=1 # Escape
    dtparam=coin=54 # Right Shift
    dtparam=start=28 # Enter
    
    I added the key mappings given in Mike’s post. One word on doing this, changing the controller setup in the Batocera menus will have no effect in game if these are set, not such a problem for me as the key mappings work well for most games.

For me that was it. While the SD card was in my machine I copied a couple of roms to it. After that I ejected the SD card, inserted it in the Pi, turned the volume down and spent the rest of the morning playing Final Fight CD from start to end.

4 weeks on

The decision to install Batocera was a good one, I’ve had 4 great weeks of retro gaming action and my two boys have also thoroughly enjoyed it too, they are 8 and 5 but have picked up Sonic very quickly. Things I’ve found out in this time:

  1. Emulationstation themes can be used with Batocera. Whilst Batocera includes some very nice themes built specifically for Batocera (like comicscrap), any ES theme can be used and I’ve had good success with the ones that are included as part of RetroPi
    1. The RetroPi GitHub pages contain a list of themes that can be used. The format of the URLs where the source is located is https://github.com/$repo/es-theme-$theme.git and each entry contains the repo and theme separated by a space. So, using one of the values, like 'lipebello retrorama', the URL of the theme would be https://github.com/lipebello/es-theme-retrorama.git.
    2. Download the theme using the Download zip option:
      Download zip link in Github
    3. Once the theme is downloaded, unzip it to the /userdata/themes directory on the Raspberry Pi.
    4. In Batocera, UI Settings> Theme Set> choose the theme.
  2. The splash video can be updated. I discovered via another Batocera Nation video that the splash video can be updated. It’s a simple process of:
    1. Download the video. First find a video, there is a selection of other videos available on Batocera Nation and also someone called Snakervill has created a ton of videos that are hosted on the Batocera site, these are generally pretty awesome and high quality. My favorite at the moment is BATOCERA Wave Retro 01 by Snakervill.mp4.
    2. Connect to the Pi across the network and copy the video to /splash. There is a YouTube video showing how to do this.
    3. Next time you turn on your Pi the new boot video will play.
  3. Obtaining game art and videos requires an account. This is definitely worth while if your SD card is big enough, the video preview and details about the games make navigating game lists very easy.
    1. Go to screenscraper.fr and sign up.
    2. From the console navigation view in Batocera bring up the system menu and go Scrape>. We do it from the root so that when I scrape I get all systems, I think that if you go into a system it will only scrape media for that system.
    3. Leave Scrape From as Screenscraper.
    4. At the bottom of the scrape menu, enter the login details for the account you just created.
    5. Press Scrape Now.
    6. Another menu will display summarising how many systems will be processed and the scraping strategy.
    7. Press Start. Media will be downloaded, this can take some time but will continue in the background. Again, there is another excellent YouTube video by Batocera Nation to guide you through this.
  4. Game pads work well. I got a bit frustrated with some of my Mega Drive games when trying to play with the Picade, a joystick just wasn’t as easy to use as I remembered my joypad being. After a bit of research I bought the 8BitDo Pro 2. RetroPie Guy has a good video on how to pair a game pad. Now I can use the joy pad for Mega Drive games and the Picade joystick for arcade game button bashing.

Credits

In getting my Raspberry Pi set up and looking awesome, there have been some resources I have leaned on heavily. These are: