RetroBerry: a Raspberry Pi 2 Portable

Commissioned by a friend who loves retro systems.

Similar projects worth following
At the start of this month, I was commissioned by a friend to build a portable gaming system for N64/PS1 and older (or weaker, such as the GBA) systems. I thought to myself, "Self, this'll be a great way to turn a profit and have fun doing it. Why not?" So ensued the building of this project. It's also my first foray into the world 3D printing-I had ordered a Makibox, but the company fell through before they could ship mine. Oh well-if all goes well, I can use the profits from this and other projects to purchase a Prusa i3 kit.

UPDATE: Finally, I bothered to publish the presentation video! Enjoy!

The unit is based around the new Raspberry Pi 2, model B. This allows for faster (though still not lag-free) N64 emulation. The software is a snap with the RetroPie distribution (apt-get updated and upgraded, of course). The Pi's GPIO header, Ethernet jack, and USB ports are removed to save space; a single USB port is glued on to provide connectivity without sacrificing height.

The controls are handled by a Teensy LC, which has the benefit of USB pads on its backside. This allows me to solder it to the Pi without having to solder to the pads of the microUSB connector or actually insert a connector in the unit. I could just use the Pi's GPIO, but this allows me to add analog thumbsticks for N64 games.

The screen is a 3.5 inch car backup LCD off of Amazon/eBay/random Chinese sources. These are quite easy to take apart and modify (and you get free connectors!) However, I needed to add a wire to bypass the internal 5v regulator and a decoupling capacitor to smooth out the power supply and help it lock to the composite video signal. Insulate the driver board with electrical tape, hot-glue it to the back of the display, and Bob's your uncle! Just be careful not to rip the flat-flex connector.

Power is handled by a Adafruit PowerBoost 500c, which charges a 3.7v Li-ion/Li-Po battery and boosts its output to 5v. Quite useful. Power from there is routed to the Pi, which distributes it to the screen and controls.

Controls are mounted on 4 pieces of perfboard. Two pieces on the front of the case house tact switches to control the D-pad, face buttons, C buttons (for N64), start/select buttons, and volume controls. A third piece, mounted to the back of the unit, houses the analog stick. A tact switch is mounted to the back of this piece to provide trigger functionality. A fourth piece acts like the analog stick PCB minus the analog stick-it serves only to make the right-hand trigger function.

The case is a 3D-printed model made on a friend's MakerBot Replicator 2, printed in PLA. The front and back halves are each about 5x7 inches. The buttons were printed as a separate insert. All of the 3D files started as 2D sketches in Inkscape, which were then exported to OpenSCAD and extruded.

There are no speakers in the unit due to space concerns as well as the problem of switching between speaker and headphone output. Ports include USB (for uploading ROMs), HDMI, and 3.5mm headphone/composite.

This was inspired by Ben Heckendorn's unit in multiple ways. He actually tipped me off on the 3.5 inch car backup LCD-a cheaper and higher-performance alternative to the PiTFT. (Funnily enough, though, his second Pi portable used a PiTFT to avoid the problems of using the composite out.) I actually had the opportunity to visit him, and he noted that the screen I ordered actually had a different driver board than his. His actually wouldn't work with the 5v regulator bypassed, so he had to use a 7.4v 2 cell Li-ion pack. (Actually, that pack is the same as mine, barring that the cells in his were wired in series while mine were wired in parallel.)

That's about it! I'm probably forgetting something, so I'll update this once I remember it.

  • 1 × Raspberry Pi 2 model B The brains of the unit
  • 1 × Adafruit Powerboost 500c Li-ion batteries made easy
  • 1 × Teensy LC Analog input, here we come!
  • 1 × Wii Nunchuk To save costs and salvage an analog stick
  • 1 × 3.5" composite car backup LCD Cheaper and better than a PiTFT

View all 11 components

  • Wow, a mega update!

    CompuCat05/26/2015 at 04:14 0 comments

    OK-I've finally finished! Sorry about the lack of photos-I'll make up for it with a video that'll come out someday.

    I ran into some case issues. Mainly:

    Read more »

  • Low-fat Pi and 3D printing

    CompuCat05/02/2015 at 04:27 0 comments

    A quick update-I've sent out the 3D files to a friend of mine who owns a MakerBot for printing. I've also thinned down the Pi by removing the tall ports on it and finished up the mods on the LCD. I'd post pictures, but the only camera I have on hand is my Nikon D70, and I'm feeling too lazy to take nice pictures.

    Next up on the to-do list:

    • Drill holes in the perfboard
    • Solder tact switches to perfboard
    • Finish up code for the Teensy and configure LibRetro for volume control
    • Receive 3D parts and perform final assembly

View all 2 project logs

  • 1
    Step 1

    Source the parts. I used Amazon for perfboard and the LCD, and Adafruit for everything else.

  • 2
    Step 2

    Design the 2D drawings. Inkscape is your friend.

  • 3
    Step 3

    Extrude into 3D. OpenSCAD is your friend-as well as [dnewman]'s Inkscape->OpenSCAD script.

View all 40 instructions

Enjoy this project?



Lumor wrote 07/28/2015 at 20:05 point

Great build man, looks awesome. I'm sure your friend is gonna love it. The N64 emulator seems to be running pretty good, does every game work or does it depend on the ROM?

  Are you sure? yes | no

CompuCat wrote 07/29/2015 at 04:07 point

Hey, thanks! I delivered this build a while ago (you were right, my friend loved it). The emulator runs quite well, thanks to the Pi 2's upgraded CPU. My original Pi model B runs Zelda OOT and Mario 64 quite sluggishly. Even the Pi 2 struggles on complex ROMs, though, like Smash 64 when fighting a horde of Yoshis. (I'm also using a quick-and-dirty graphics plugin, as the Glide64 standard plugin is quite good yet slow on the Pi.)

I don't have a huge number of ROMs to do compatibility testing (I don't pirate ROMs), but it seems to work with most ROMs. Goldeneye could be a problem due to the custom microcode. You never know-it could work, though!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates