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.
The game templates for Bombjack, Mr. Do!, Pengo, Donkey Kong Jr. and Starforce I got from Alby1970. The game templates for Gyruss, Lady Bug, Ms. Pacman, Time Pilot, Tutankham, Space Invaders and Galaxian I got from SurvivalHacking. The game template for Moon Cresta I got 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.

-
Use cable ties and two srews to fix the CYD on the front of the cabinet - 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
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.
- Starforce: Drawing of the universe background is disabled (BG3) – emulation would be too slow when drawing this background.


























