Friday, September 8, 2017

My Adventure with RetroPie

The recent NES classic craze/debacle has many people enticed and upset. The NES classic, being an hdmi plug 'n play console with 30 of the most fondly remembered games was an epiphany for Nintendo. Anyone who fondly remembers the NES would love to get one as a holiday or birthday gift, and at $60, the price was right. The problem was that no one could get their hands on one. They were sold out everywhere. Scalpers have the market cornered, and at minimum you can buy one online at three times the msrp. Nintendo really dropped the ball on this one......or did they? Some think that Nintendo cut short production as to not cannibalize their direct download sales. Others think that the company prides itself on the shortage of their product, as if it represents high demand for their desirable products. Whatever the reason, people were awakened to idea of emulating retro games in HD quality.

Typical eBay listings for the NES classic as of this writing

I had heard about RetroPie two years ago. I had just gotten my fourth and last Everdrive, the SD2SNES, and stumbled upon some discussion about emulation on the interwebs. Even though emulation has been around since the 90's, gaming on a computer never appealed to me. I prefer consoles for their ease of use and comfort. Gaming at a computer desk is not my cup of tea, so it was never really an option for me. Then I heard about the people loading roms on a Raspberry Pi, running a program called Emulation Station, through Retropie. I browsed some YouTube videos, and thought, for a $40 computer the size of a deck of cards, why not? So I bought a starter kit on Amazon, which included the motherboard, case, power supply, micro SD card, HDMI cord, and two iBuffalo snes-style controllers. The cost for all of it was $80, which is understandable considering the necessary hookups.

These starter kits are widely available

Almost immediately after ordering I realized that I would need a way to get my roms onto the Pi. After watching several videos on how to do this, I got a sense of it, but I wasn't that confident, since most tutorials were for PC users. I hopped on Etsy, and saw several preloaded micro SD cards for just a few bucks more than the retail cost of the cards themselves. They advertised that the cost was for the labor, not for the roms, which were free. I realize that the ethics of rom sharing are grey, but there was no way to get just the roms for games that I own on the card from these vendors. I took a chance, and ordered one. When received it, it was just as advertised. However, there were things I did not care for. The menu style was very straight forward and bland (Carbon - for those of you who are familiar). There were redundant versions of arcade games (Mame), many of which would not work. I found it annoying to have to remember which did and did not work. The entire romsets for each of the systems were present, which sounds awesome. After a while, you realize that it is laborious to sort through and find the games I wanted to play. Each time I turned it on, I would constantly scroll, through game listings, since almost half of each system's library was garbage. So, it sat for a while.

A while had passed, and I was discovered how to add new themes in RetroPie. This renewed my interest. Kind of like fine dining, where the food presentation is half of the appeal, clean and detailed themes help sell the overall appeal of RetroPie. There are a couple of themes that I really like, and switch back and forth between. Tronkyfran offers clean, high resolution pics of the consoles in the menu. Comic Book takes game images and presents them through a comic-paper style, and is colorful and fun. Retrorama offers beautiful artistic interpretations of consoles, with a pulp comic flair. Showcase is a versatile theme that allows you to add favorites into one collection, as well as custom themes (I made some for Mega Man, Street Fighter, Konami, Capcom, etc.), recently played, and other playlist options.

Being that the RetroPie founders are mainly based in the U.K., the console titles were presented they way they remember them. Specifically, the Genesis was presented as the Mega Drive. This is not that big of a deal, but I always wanted the Genesis logo instead. After much more searching, I learned how to change the logo to Genesis, and also the corresponding boxart. This little detail was big for me.

Now that I have improved the visual appeal of the RetroPie interface, I wanted to customize the game libraries for each system. I have the roms for the physical games that I own in a folder already, from when I was setting up my Everdrives. I learned how to transfer files over a network. Now I have a much shorter list of games, which is curated to only those that I enjoy. No more scrolling through pages of games that I don't care for. There are instances where I have roms of games that I'll probably never have, like Little Samson or Eliminate Down. I'm ok with that.

Next was connecting wirelessly to a bluetooth controller. Since I found myself moving the Raspberry Pi around the house to different tvs on occasion, I found sitting on the floor a not so comfortable option, given that I have now entered my forties. After doing some research, there are three Bluetooth options that I can choose from.

The first is a SNES-styled controller from a company called 8Bitdo. The controller and Pi require an update in order to work together. I had to update the setup script on the Pi, not a bad thing to, as it is good general maintenance. Updating the firmware on the controller was frustrating at best. Maybe it was because I was using a Mac computer, but the instructions on how to do so have a lot to be desired. Eventually I got it to work, but the order of steps on the support website for 8Bitdo do not work for Mac users. Once updated, the controller can be synced by following the prompts in the Bluetooth menu under RetroPi setup. Again, there are some non-intuitive steps needed here - YouTube the procedure. Now that it is setup, I think it is a great controller for RetroPie. There is a tiny bit of lag associated with the wireless connection, but it is only noticeable in games that necessitate twitch-like movements. In general, input lag can be reduced by setting the HDMI input to "game" mode on your tv.

My second option is to connect a PS4 controller. This was far easier to sync than the 8Bitdo. You can setup the analog stick to act as the d-pad input, if you like. I have always felt the Playstation d-pads are uncomfortable, and I generally try to avoid using it. Using the analog stick for a 2D game like Contra feels kinda wonky, as the movements and my muscle memory don't seem to work right.

My third option is using a WiiU Pro Controller. Like the PS4 controller, it was easy to sync as well. It has a better d-pad than the PS4 controller, but the d-pad is too centrally located, and I found it awkward to use. Also, the buttons on are a bit too close together, and I found myself hitting the wrong buttons several times.

I also have a wired usb Hori fight stick that I use for the arcade fighting games. It has a long cord (10 feet, I think). It's great for most arcade games in general. Overall, my preferred controllers are the iBuffalo wired SNES controller for conventional games, the 8Bitddo Bluetooth controller if I'm far from the tv, or the arcade stick.

The most recent project for me was integrating video snaps into the themes. A snap is a video preview that plays while a title is highlighted on the game select screen. Not all themes are compatible with video previews, but a lot of the newer themes are. This was the largest hurdle for me, and was very time intensive. I nearly gave up, but eventually I pieced together a method from several sources that I found. I needed to upgrade the size of my SD card to accommodate the video files for each game, but it is so worth it. To be able to see each game in action before selecting is just about my favorite feature of RetroPie.

This was a feature that was previously only seen in a specialized RetroPie interface called Attract Mode. Attract mode is too busy for me, and requires a lot more space on SD cards, and is a bit more cumbersome as far as setting up controls. In attract mode, not all of the systems work with the same controller setup, and you'll have to enter the Retroarch menu to customize controls for that emulator. I tried doing this, and messed something up frequently- not recommended. I prefer Emulation Station as the default Libretto cores (emulator programs) all follow the same controller setup, so it all works after bootup.

Learning how to set this up is no trivial matter, it was nearly a year for me at this point. I shared my images with friends, as the end result is that we get together and play through a few hours of classic games together, in the same room in front of the same tv. These are friends that would never have started to collect retro games (especially during these times of peak prices), but want to relive their childhood. I don't feel bad about this as I don't charge them.

So, if you missed the boat on the NES Classic Edition and want to try some retrogaming, HD-style, look into RetroPie on a Raspberry Pi. You won't need to delve as deep as I did, and it will function pretty flawlessly at the intro level. With each new update, improvements are made to make the user experience more manageable. Just be prepared to get lost in the possibilities.