Gamegirl: the retro console done right

The most portable way to play LÖVE, PICO-8, Scratch or your favorite emulated games. Powered by RetroArch!

Similar projects worth following
• Hardware accelerated display!
• Custom software (Lakka / RetroArch)
• High quality case and buttons
• Small form factor

A very affordable portable console will be made using a 120 FPS 320x240 display and a Raspberry Pi Zero. It will be thin and tiny: only 66 mm x 99 mm!

The Lakka distribution powered by RetroArch will be used because of its speed, its fast power-on and instant power-off and its potential to run many retro and hipster-retro games (LÖVE, PICO-8, Scratch and emulators).

[Jean-André] from France is the software guy of this project. He is the main Lakka developer and a top 5 RetroArch contributor. [David] from Switzerland is the hardware guy.

Support Libretro, RetroArch and Lakka through Patreon!

Hackaday Prize 2016: Build something that matters

"The question is: Will the child program the computer or will the computer program the child?

Will the child run the machine or will the machine run the child?"

Seymour Papert was not afraid of video games. In The Connected Family, he viewed them as a powerful tool for each child to expand his learning style and explore powerful ideas. In making games, he saw a way to develop their sense of control and their ownership of technology. In playing games, he saw a way of learning-about-learning as the act of mastering a game is in effect about finding the best and fastest strategy of learning.

In a world dominated by black boxes like tablets and phones, we hope that building an affordable open source retro console will help expand the playful education of children and their adult equivalent: the makers.

Gamegirl v0.2 Schematic.pdf

Second prototype

Adobe Portable Document Format - 176.24 kB - 01/02/2017 at 20:23


Gamegirl v0.1 Schematic.pdf

First prototype

Adobe Portable Document Format - 119.24 kB - 01/02/2017 at 20:23


  • 1 × Raspberry Pi Zero 1 GHz ought to be enough for anybody.
  • 1 × 2.4" TFT 320x240 (RGB 565 @ 120 FPS) None of this SPI protocol rubbish!
  • 10 × Soft rubber dome buttons Such soft, much comfy, wow
  • 1 × Speaker
  • 1 × Mono audio amplifier Left + right channels mixed together

View all 8 components

  • Follow the new project!

    David04/03/2017 at 07:29 0 comments

    We are continuing this project for the Hackaday Prize 2017. Follow us here:

  • Video update on the new prototype

    David01/11/2017 at 21:55 0 comments

    Here is a video from [Jean-André] showing the new prototype, along with some explanations on the software. Skip to 4:20 to see the Gamegirl starting up and 8:00 to see some gameplay:

    Support Libretro, RetroArch and Lakka through Patreon!


  • New prototype with battery and speaker

    David12/30/2016 at 22:30 1 comment

    We got the new assembled prototypes back from China and dispatched them to France, Switzerland and USA to the different developers, thanks to the hard work of [VRPC]. In the meantime, [techanic] also ordered a board from OSHPark and hand assembled it, which you can see in the photo above. This is really open-source hardware development at its best!

    The v0.2 prototype includes:

    • A battery with charger and 5V booster
    • A speaker with a mono amplifier
    • A power switch
    • Rubber and metal dome buttons from 8bitdo

    We are now trying to 3D print the case and figure out some kind of levers for the L/R buttons.

    Bonus video (look at the size of this console!):

    We do not take any money, but you can support the software that the Gamegirl uses.

    Support Libretro, RetroArch and Lakka through Patreon!


  • French interview on Open-Consoles

    David10/11/2016 at 07:26 2 comments

    We had an interview on Open Consoles, a French website dedicated to covering open source and Android portable game consoles, who had already covered us in June 2016.

    Thanks to the hard work and patience of Franck Thery, here is the interview in French:

    And here is an English version (Google Translate):


  • Call for contributors

    David07/17/2016 at 20:06 5 comments

    If this project has to be remembered, it should be as successful example of open hardware development. Indeed, it is not just the hardware which is open but the whole development process, with discussions and files being exchanged by more than a hundred users on our Discord chat.

    As an example of this openness the first working Gamegirl was in the hands of a contributor, [poulsen93] who took the picture above. And as the development advances we hope to provide more and more devices to contributors. You can contribute in a lot of ways, regardless of your experience.

    Beginner tasks

    • Art for future games
    • Advice for using the Gamegirl in classrooms
    • Review of existing software (Scratch, PICO-8, etc.)
    • Drawing of your dream game editor
    • Drawing of a game uploader
    • Improvements to the Lakka website
    • Writing on, Reddit, Twitter

    Advanced tasks

      • "Exclusive" games using LÖVE
      • 3D printing of a case and L/R buttons
      • USB-OTG on the Raspberry Pi Zero
      • Backlight dimming using PCM
      • Contributions to Lutro, Lakka and RetroArch

      And more! Ask on our Discord chat. ;)

      Bonus video:


    • Voice of the Theatre

      David05/22/2016 at 20:54 3 comments

      If you have ever in a film theatre constructed in the 1950s, chance is they probably still use the legendary Voice of the Theatre speakers, maybe with some tweeter replacement. These speakers were made by Altec Lansing engineers and delivered unsurpassed efficiency, voice articulation and time alignment and have a very characteristic sound signature. The fact that these systems were entirely equalised by ear didn't remove anything from the enjoyment of the listeners.

      The analog audio output of the Raspberry Pis has a bad reputation. Similar to the cinema professionals of the 1950s, we don't have expensive sound measurement equipment. As such, we will try everything possible to get the best sound quality with our ears. Our subjective benchmark will be: it must sound good. The speaker will probably be a CDM-20008 for his flat low-frequency response (good bass) but it would be better if someone could buy a couple of them and compare them next to each other.

      To further improve the low-end extension (bass), @poulsen93 is currently making tests with a Helmholtz resonator (a can of Pringles) that you can see on the photo on the left.

      We are testing the amplifier on the photo on the right but we need help for noise hiss reduction as we can currently hear when the Pi is making complicated calculations or not. Don't hesitate to drop on the Discord Chat if you have some useful advice.


    • It's a whole family of prototypes

      David05/20/2016 at 14:29 1 comment

      The package that was lost two weeks ago finally arrived in Vietnam... just after [Jean-André] had left the country. Talk about bad luck.

      Thankfully, other prototypes v0.1 are ready and will go to [@Travis Brown], [@poulsen93] and [@jonathan thornburg]. These are provided free of charge (display not included) thanks to the money provided by the Hackaday Prize.

      You can see on the left that we are currently experimenting with the audio amplifier. More on that in a future project log!


    • The prototype v0.1 works!

      David05/12/2016 at 09:35 2 comments

      All goes according to plan! The prototype v0.1 has been soldered together and tested with a Raspberry Pi 2. Games run great under RetroArch and the buttons are buttoning up, just as planned.

      Well... the only hitch is that this prototype is currently lost in a package between Switzerland and Vietnam. Indeed, we were hoping to post better pictures and videos once the package had arrived but this one will have to do for now.

      In the meantime, we are preparing 2-3 more copies of the v0.1 prototype and designing the v0.2 prototype, which will look somewhat like the 3D render on top of this page (thanks @roymustang16!)

      The Discord Chat is very active, with more than 100 users. We are welcoming all contributors, regardless of the experience: the beginners can help with mockups of the LÖVE game editor and menus of the console and the developers can help with electronics, CAD and programming.


    • 8Bitdo partnership

      Jean-André Santoni04/16/2016 at 15:02 1 comment

      [David] and I are happy to announce that 8Bitdo will be our partner in this project!

      If you are a retro gamer, chances are that you already heard about 8Bitdo. 8Bitdo is a company based in Hong Kong who produce very polished Bluetooth gamepads that mimic the look of our good old pads.

      We got their contact thanks to the libretro guys who are already collaborating with them.

      8Bitdo will help us about the buttons and the case. Finding good rubber dome buttons on the web is very difficult. Since they are experts about that, we are can be sure that the Gamegirl will have the best ergonomy we can afford.

      We don't know exactly yet how we are going to collaborate but they started sharing their CAD 3D files and agreed to provide us with some buttons so we can start prototyping. They adviced us to start experimenting with the 8Bitdo ZERO model that is described in details here:

      We are more and more excited to work on this small project because that's the kind of toys we would have dreamed to own as a child :)


    • Why RetroArch?

      David04/03/2016 at 16:33 0 comments

      In this project log I will try to explain why having a pure RetroArch/libretro approach is technically cleaner.

      The libretro API is there to separate the frontend (graphical interface) and the backend (the emulators). Adding an external frontend on top of it makes little sense, since it is an additional layer that can't take advantage of the low level API.

      For example, with a frontend like RetroArch, you can display the current game in a small window while navigating the menu. This is not a very usefull feature, but it could become useful in the future to preview shaders.

      Now, let think about effort duplication. Emulator hackers spend a lot of time trying to optimize emulators for the RPi. We end up with a ton of different versions, all with their graphical interface baked in.

      If instead of that people focus on improving the libretro version of those emulators, this would benefit not only the RPi, but also all the platforms where RetroArch runs: PSP, Wii, iOS, etc

      All the effort spent in including individual games on a distro like RetroPie and a frontend like EmulationStation could be instead spent in simply porting those games to libretro. This would make those games compatibles to every device supported by RetroArch. This would also make those games cleaner, by separating the content and the GUI.

      Same goes for controller support. With a pure libretro distro, you get a centralised gamepad management. What works for games works for the menu. While with EmulationStation, the joypad code is duplicated. This is bloated.

      Graphical contexts are another example. RetroArch already does the work of setting up the context like VideoCore or Mali or X11. External frontends have to duplicate that code.

      There is no doubt that libretro should become the target platform if we want cleaner software.

      Now I will try to explain why Lakka is better:

      • Cross compilation : compile the whole distro in 2 hours on your PC and get the image.
      • Compressed auto expandable image : the OS image is 150mb.
      • Robustness : a read only system allows monolithic updates like firmware updates of commercial game consoles
      • Centralisation : a single git repo to store all the package recipies, patches, configs
      • Pure libretro : no bloat, consistency, no effort duplication, better integration with the GUI, better integration with the emulator developer community
      • Portability : Lakka supports more than 10 ARM boards, plus PC, with a single code base


    View all 13 project logs

    Enjoy this project?



    DeanChu wrote 03/28/2018 at 01:30 point

    Totally agree about using a DPI LCD. However, I used a RGB666 480x320 screen to enable PSP emulator. BTW, I'm having trouble adjusting the GAMMA settings of ILI9486, hope to get some tips from you because your screen looks great.

      Are you sure? yes | no

    charles wrote 05/22/2017 at 11:34 point

    Do you have anyone working on a case yet? I could perhaps help out with that, I already have a full size gameboy case made in CAD and 3d printed for a pi zero system,  it could be modified for this.

      Are you sure? yes | no

    Robin Grönberg wrote 02/25/2017 at 20:38 point

    Great project, really looking forward for future updates. I have a question regarding the screen. What screen are you using? I'm trying to find a 2.8 screen to use with RGB565 but it's hard to understand what I should look for. Right now, I'm trying the 4.3" screen from adafruit similar to the screen used in the guide you linked in the first post. What specification should I look for when buying a screen? For example, what IC should the screen have? It seems like every other screen have different interfaces and the more I look, the more confused I become. I'm a usually a software guy with no experience with display technology, so sorry you if my question seems might be obvious

      Are you sure? yes | no

    Rodney wrote 03/21/2017 at 20:53 point

    The controller IC in the screen we use is the ILI9341. What you need to look for to use the RPi's DPI is a screen with Pixel Clock, Data Enable, VSYNC, HSYNC, and 16-24 RGB pins which are normally labeled as D0-D23 or R0-R7/G0-G7/B0-B7. Note that most LCD controllers need to be set to use the DPI through SPI. The dtoverlay we use does this on every boot. This is the display we use:

      Are you sure? yes | no

    Jasper parker wrote 10/17/2016 at 00:07 point

    Are you still looking for 3D printing contributions? 

      Are you sure? yes | no

    David wrote 12/30/2016 at 22:09 point

    Yes, we are always looking for contributions, especially if you can do some mechanical design. Sorry for not replying earlier.

      Are you sure? yes | no

    David wrote 07/10/2016 at 17:03 point

    Note that there is a bug in schematic v0.1: one should use 12 diodes instead of 4 diodes otherwise it doesn't work correctly when multiple buttons are pressed. Thanks to [Brian] and [Zybeon] for this finding and troubleshooting:

      Are you sure? yes | no

    Espen Breivik wrote 06/27/2016 at 14:17 point

    Looks very interesting! I think that the increasing popularity with Pico-8 is a sign that people are enjoying making retro-like  games inside general (limited) frameworks and not always re-playing the old classics. Currently doing an Adafruit GameGrrl with Pi1 - and TBH I'm most excited by the ability to run Pico-8 natively:

      Are you sure? yes | no

    David wrote 07/17/2016 at 20:41 point

    Hello [dj_pale]! Any update on running Lakka on the PiGRRL?

      Are you sure? yes | no

    Clément Nerma wrote 06/09/2016 at 19:17 point

    Does this project works with a Raspberry Pi 2/3 ?

    I think the emulation would be so much better with a newer model of RPi... That depends of what emulation you want to do. I'm dreaming about emulating PlayStation 1 / Nintendo 64 and DreamCast in a so tiny console !

      Are you sure? yes | no

    David wrote 06/17/2016 at 19:40 point

    Lakka is actually available for Pi 2/3 but we chose the Pi Zero because of its size: it's even thinner than the Compute Modules.

    As for the performance, I think the Pi Zero is plenty enough for custom games (which is my main interest) but the problem with emulators is that they are not very well optimised and the community improving them is very fragmented. Emulating a Nintendo 64 should be possible on a 1 GHz ARMv6 like the Pi Zero, so if you know talented people, tell them to contribute here (lot of activity going on currently):

      Are you sure? yes | no

    squid wrote 06/05/2016 at 21:05 point

    Super stoked about this project, I'll be checking this frequently for updates. Cannot wait for it to be completed!

      Are you sure? yes | no

    Domarius wrote 05/26/2016 at 02:36 point

    I really, really hope this takes off, I hope you can do or get some good marketing.  The unified API is extremely sensible, and the size and functionality of this device just makes sense.  It's even better for the Pico-8 than the C.H.I.P. they are bundling it in.

    I was just looking at the demo video of the screen you manually wired up, and this is a great achievement.  But I was wondering what your thoughts are on the response times of that LCD.  On the video it looked like there was a fair bit of motion blur.  Is this not the final screen, or is it worse on video than it looks IRL? What do you think?

      Are you sure? yes | no

    David wrote 05/26/2016 at 19:14 point

    Yes, the screen looks much better in real life. There are very faint vertical lines which may be due to the some clock divider setting (PCDIV) but they are not very visible and hopefully that will be resolved by our beta testers.

      Are you sure? yes | no

    prof955 wrote 05/17/2016 at 08:07 point

    This is really good project. There are many little "gameboy" project like this after zero came out. But this is a different approach...

    Can you explain how button system is working. i mean retroarch side. how did you manage to present this button configuration to retroarch?

    And sound, personally tried your sound circuit, i just got noisy sound(ish)...i tried with similar npn. is this any news about sound part? 

      Are you sure? yes | no

    David wrote 05/19/2016 at 07:17 point

    One the RetroArch side you just need a file like this one:

    On the button side, you can read the states using wiringPi and send these using udev and some EV_KEY/EV_SYN trickery. This part is not yet ready but you can drop on the chat and help us if you want.

    For the sound, the buzzer was just a temporary solution and it does indeed sound really bad. Yesterday, @poulsen93 started testing an audio amplifier and speaker and he's currently tweaking them to obtain a good sound (subjectively). You can also help us with that.

      Are you sure? yes | no

    prof955 wrote 05/31/2016 at 12:49 point

    My solution for sound is just an cheap(3$) usb sound card. i wasn't aware i could get really good sound of these... also it's hackable to use with 3.7v battery. try it, you'll notice difference.

      Are you sure? yes | no

    David wrote 05/31/2016 at 14:23 point

    A USB sound card would be a good solution to have quality stereo sound (with headphones for example) but then we cannot use USB OTG to load games or connect a USB gamepad.

      Are you sure? yes | no

    Matthew Heyman wrote 05/11/2016 at 23:07 point

    Hey have there been any updates to this recently? I try to check in every day hoping to see some progress!

      Are you sure? yes | no

    David wrote 05/12/2016 at 09:37 point

      Are you sure? yes | no

    Giles Burgess wrote 04/19/2016 at 11:16 point

    Hi I like this and I am looking at screens, you mention the HX8347-D controller, I have seen a LOT of TFTs that are 240x320 (rather than 320x240, so they are portrait).. this would obviously have to be configured as a portrait display in the config, but is it then possible to rotate the display so that it can be used as 320x240 (with pixels clocked in at 240x320)? Hope that makes sense..

    EDIT: looks like pin change isn't possible, if the Adafruit documents are correct

    EDIT2: I think I found you can use "dtoverlay=<type>,rotate=90" to do this, can you confirm?

      Are you sure? yes | no

    David wrote 04/19/2016 at 20:52 point

    Yes, we use display_rotate=1 and that works just fine with a landscape display. It's just that the viewing angles are optimised to be worse from the bottom (not a problem with IPS) and the bezel is too big on one side.

    UART doesn't seem possible with any configuration (ili9341 RGB 565 pins.png). Better to use and than Adafruit for reference.

      Are you sure? yes | no

    David wrote 04/20/2016 at 06:32 point

    Here are the two references that I use (the previous message was "Sent from my iPhone"):

    In the first link, instead of a dt-blob.bin you can use a dts-overlay. I have to make a writeup of this when I have the time. If you want to help you can come to @arnaud.durand also wanted to test IPS portrait displays.

      Are you sure? yes | no

    Giles Burgess wrote 04/20/2016 at 09:39 point

    Perfect thanks :) I'm still trying to find the most ideal LCD and driver to use first.. luckily I have a power controller that can do the SPI set up, as 5 out of 6 candidate displays require SPI to get into DPI mode.. Your links are a great help and I'd love to help out.. an IPS display would be great, I'll chat on irc.

      Are you sure? yes | no

    arnaud.durand wrote 04/20/2016 at 21:40 point

    In the end I found no RGB565 capable 2.2" IPS screen. I contacted some Chinese suppliers to get datasheet but either the necessary pins are not broken out or the description is wrong (descriptions reported HX8347-D but have in reality ILI9341 as the product was replaced/discontinued). I will try a 3.5" 480x800 IPS Sharp LS035Y8DX04A which looks nice but is not suited to your design. I'll try to slightly modify the design of @JohSchneider Pigrrl-Zero to include a bigger screen and share it with everyone if it's not too bad.

      Are you sure? yes | no

    Marton wrote 03/18/2018 at 21:27 point

    @arnaud.durand Hey, I'm trying to connect the same Sharp LS035Y8DX04A display but having trouble figuring out how to do the SPI init sequence. Did you manage to connect it to the pi?

      Are you sure? yes | no

    Matthew Heyman wrote 04/19/2016 at 01:20 point

    I'm very interested in learning from this project and hopefully making one of my own at some point. I've shared this link around. I can't wait to see more progress.

      Are you sure? yes | no

    Jimmy Z wrote 04/18/2016 at 08:20 point

    I'll definitely buy one if available!

      Are you sure? yes | no

    David wrote 04/11/2016 at 21:13 point

    @arnaud.durand To reply to your wish of testing a 3.5" display: could you try the 2.4" HX8347-D IPS panel? It seems very interesting and fairly common. The "-D" is important as it allows you to enable DPI in hardware (no SPI initialisation):

      Are you sure? yes | no

    arnaud.durand wrote 04/12/2016 at 00:14 point

    Wow, this specsheet is dense! I'll try, but it might take a few weeks until I get the components.

    Any guess if I should order this or this The non-touch version seems to have 44 pins while the touch version have 37 pins. Do you have any clue why?

    Does your screen use the standard 40-pin FPC 0.5mm cable? I wonder if hand soldering of the header is practical.

      Are you sure? yes | no

    David wrote 04/12/2016 at 07:15 point

    Our current display uses a 50-pin FPC 0.5 mm so the pinout wouldn't match and ILI9341 is not ideal because you need to initialise DPI first through SPI.

    I would go with the first HX8347-D that you linked because at least the pinout is described but it would be better to find a panel with a full PDF datasheet.

    We can discuss that on

      Are you sure? yes | no

    nick sakellariou wrote 04/09/2016 at 14:23 point

    Such a cool project. You guys should crowdfund this. Gonna follow this with great interest. Cheers!

      Are you sure? yes | no

    David wrote 04/09/2016 at 14:47 point

    Kickstarters are not very popular in the RetroArch community as some people have made money from the project by illegally redistributing it (RetroN 5 for example). That's why we prefer making an open source project and improving the software for the time being. But don't hesitate to share the link to this page and if enough people are interested we will try to get something together.

      Are you sure? yes | no

    Tom Phoghat Sobieski wrote 04/18/2016 at 21:14 point

    just go to direct sales, because TAKE MY MONEY

      Are you sure? yes | no

    Gabriel wrote 04/04/2016 at 14:07 point

    wouldnt it be nicer with an IPS display? TFT makes viewing angles hard to look at.

      Are you sure? yes | no

    David wrote 04/04/2016 at 15:25 point

    Yes, let us know if you have a good source for horizontal 320x240 IPS-panels with 2.4"-2.8" diagonal. We are currently using a vertical TN-panel only because that is easier to reliably source in low quantity.

    The viewing angles are actually not that bad and the black levels, color balance and ghosting are much better than what you find in an old mobile phone.

    I would say it's on par with a Nokia 225.

      Are you sure? yes | no

    Edgar Andres Chavez V. wrote 04/01/2016 at 20:06 point

    I like this project 

      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