This repo is a port of Till Harbaum's awesome Galaga emulator ported to platformio. This port is NOT by the original author, so please do not bother him with issues.
I used and modified the games Bombjack, Mr. Do!, Pengo, Donkey Kong Jr. and Starforce from Alby1970. I used and modified the games Gyruss, Lady Bug, Ms. Pacman, Time Pilot, Tutankham, Space Invaders and Galaxian from SurvivalHacking. I used and modified the games Moon Cresta and Scramble from galagino
This solution is an easy way to build a galagino arcade machine. No need of a 3D printer and PCB´s. Just buy the hardware listed below.
- Demonstration video 1: Galagino with 12 Games!
- Demonstration video 2: DIY ESP32 Project 2025: ESP32 Game - Multi Arcade Machine
-
Arcade machine Arcade-Galaga-Micro-Player-Pro
- IMPORTANT: Use an arcade machine with fire button and full joystick. PAC MAN machine does not have a fire button and SPACE INVADER do have a joystick with left/right only. The machine must have a 2.8" inch UPRIGHT display. There are cheaper models with a 2.4" inch display - that do not fit.
-
Cheap yellow display CYD
- IMPORTANT: The CYD should have a speaker output. The CYD should be delivered with connection cables.
-
1kOhm resistor and a plug from a USB-C cable.
These are the steps to build the new hardware for the machine:
-
Stickers can’t stop us: To open the cabinet, remove some of the artwork stickers from the outside. Screws are hidden under the side artwork, and the top sticker crosses a seam that will need to be separated. Using a heat gun or hair dryer. Soften the glue and peel back these stickers. They are fairly thick and easy to remove once you get a corner up. Keep them somewhere safe for reassembly. TIP: I left out the side screws.
-
Use a soldering iron to disconnect the main board from the external boards. The main board with display, we do not need that anymore.
-
Use a soldering iron to connect the wires from the CYD. Connect them like in the schematics.

-
Secure the CYD inside the housing using cable ties and two screws – it fits perfectly.

Like in the original from Till Harbaum's Galaga emulator, download these files:
- The Galagino specific code contained in this repository
- A Z80 software emulation by Marat Fayzullin
- The original ROM files. Please download the zip files with the exact names.
- Galaga (Namco Rev. B ROM)
- Pac-Man (Midway)
- Donkey Kong (US set 1)
- Frogger
- Digdug
- 1942
- Lizard Wizard
- Eyes
- Mr. TNT
- The Glob (Important: filename with "p")
- Crush Roller
- Anteater
- Bombjack
- Mr. Do!
- Bagman (Important: filename with "m2")
- Pengo (Important: filename with "2u")
- Gyruss
- Lady Bug
- Donkey Kong Jr. (Japan) (Important: filename with "jrj")
- Ms. Pacman
- Time Pilot
- Tutankham
- Space Invaders
- Galaxian
- Starforce
- Moon Cresta
- Scramble
Galagino uses code that is not freely available and thus not included in this repository. Preparing the firmware thus consists of a few additional steps:
- If you do not have Python installed, download it from here. Python 3.13.0
- Then install the Phyton Pillow Imaging Library. For that, run the command: pip install pillow
- Optional: If you want to run the logoconv.py to recreate the menu logos, you must install NumPy: pip install numpy
- The ROM ZIP files have to be placed in the romszip directory, together with the ZIP file containing the Z80 emulator.
- A set of python scripts is then being used to convert and patch the ROM data and emulator code and to include the resulting code into the galagino machines directory. For all games, just use conv__all.bat.
The ROM conversion create a whole bunch of additional files in the source directory. Please check the README in the romconv directory for further instructions. Please ensure that the stripts run without errors!
With all these files in place, the source folder can be loaded into visual studio code with the PlatformIO plugin. The needed platform packages and the arduino framework will be installed during compilation automatically. For best performance, compile and upload the release version. All games are running at nearly 100% speed.
Like in the original: If you want to use a LED stripe, you have to download FastLED library. If you want to use a nunchuck, you need the NintendoExtensionCtrl library - emulation will be slower.
The Galagino code can be configured through the config.h, machines.h and platformio.ini file.
With the current configuration, the buttons have the following additional functions:
- Volume up: Hold coin button and push the joystick up. Default setting is 3. 1 is the loudest.
- Volume down: Hold coin button and push the joystick down.
- Return back to menu: Hold the coin button for more than 3 seconds. Attract mode is then active again.
- Demo sounds off: To disable the demo sounds of Galaga, Digdug, The Glob, Anteater, Bombjack and Pengo hold down the fire button while turning it on.
- The Glob game: Push coin button to call the elevator.
- Tutankham: Push coin button for the flash bomb.
In Attract mode, the machine cycles through all games if you do not touch the joystick. The games end after 5 minutes.
Because of no free GPIO´s, the following buttons are not connected and do not work:
- Power board: Light button / headphone jack
- Switch board: Volume up / volume down
- Joystick board: Home / 1 Player / 2 Player
With this solution, it's not possible to operate the machine with the battery pack in the back of the case. An external power supply is required. However, I installed batteries inside the case to increase the weight.
Known game issues:
- Gyruss: The sound cpu I8039 is missing - so there is no drum sound. Sometimes sprites appear that are no longer in use.
- Tutankham: Some sounds are not playable in galagino. So I changed it to play other sounds.



























