2-player bartop arcade cabinet, designed for laser cutting, powered by a Raspberry Pi 3B+ running Recalbox.
Who is this for? This project is aimed at experienced makers. This README documents the key points, the pitfalls and the design choices, but it assumes common sense and basic DIY skills from the person following it: it is not a step-by-step tutorial for every screw. For the exact position of each part, refer to the STEP assembly in
CAD/STEP/.
- Overview
- Gallery
- Specifications
- Bill of Materials (BOM)
- Tools
- Manufacturing
- Assembly
- Electronics and Wiring
- Controls
- Software: Recalbox
- Adding Games
- Coming Soon
- License
This project is a bartop arcade cabinet (designed to sit on a table) for 2 players, with a 24" screen.
- Structure: laser-cut MDF panels, assembled with mortise and tenon joints.
- 3D-printed parts: a few small parts (back panel latches and lockers, volume knob).
- Core: a Raspberry Pi 3B+ running Recalbox, a ready-to-use emulation OS.
- Controls: a "Zero Delay" USB arcade kit, natively recognized by Recalbox, with no drivers to install.
The design is meant to be reproducible by any maker with access to a laser cutter and a 3D printer. All source files are provided.
| Powered on, front | Powered on, 3/4 | Powered off, 3/4 | Back |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Front | Left 3/4 | Right 3/4 |
|---|---|---|
![]() |
![]() |
![]() |
| Back with panel | Back without panel (screen position visible) | Side cut view |
|---|---|---|
![]() |
![]() |
![]() |
| Item | Detail |
|---|---|
| Dimensions (W × D × H) | 620 × ~500 × ~700 mm |
| Screen | 24" 16:9, VESA 100 × 100 mount |
| Players | 2 (+ 1 extra player possible via USB gamepad; not tested) |
| Controls per player | 1 eight-way joystick + 8 LED buttons |
| Front panel | 1P Start, 2P Start, 2 Coin buttons, USB pass-through port |
| Audio | 5 V stereo amplifier + 2 × 2" 4 Ω speakers, volume adjustable from the front |
| Power | 230 V IEC inlet with switch and fuse |
| Material | MDF 6 / 9 / 10 mm |
| Software | Recalbox (no customization required) |
The complete, detailed list is in BOM.md. It covers:
- Electronics: Raspberry Pi, monitor, arcade kit, power supply, audio, etc.
- Hardware: screws, battens, dowel, bracket.
- 3D-printed parts: 3
.3mffiles. - Laser-cut parts: 14
.dxffiles, with the MDF thickness for each.
Heads-up on arcade buttons: buttons sold as "30 mm" actually have a 28 mm threaded body. The DXF holes are cut at Ø 28 mm for a snug fit. Do not enlarge them without measuring your buttons with calipers first. See the BOM for details.
| Machine | Used for |
|---|---|
| CO2 laser cutter, 80 W, 500 × 700 mm work area | All the MDF panels |
| Bambu Lab P1S 3D printer | Latches, lockers and volume knob |
The MDF panels were cut on an 80 W CO₂ laser cutter with a 500 × 700 mm work area. Check the dimensions of the DXF files against your machine's work area before starting.
The 3D-printed parts were made on a Bambu Lab P1S. Other FDM printers may also be suitable, but were not tested for this project.
- Wood saw (to cut the battens and the dowel to length)
- Screwdrivers (Phillips, plus a flat one)
- Pencil and tape measure
- Sandpaper (to clean up laser-cut edges if needed)
- Drill and bits (for pilot holes if you want to avoid splitting the MDF)
- Wire strippers and a soldering iron, or crimping tools, for the electronics
- Hot glue gun
- Optional: a blowtorch, to blacken the ends of the battens and the dowel. This gives them a uniform dark finish that matches the rest of the cabinet. The difference is visible in the photos.
The CAD/ folder is split in three:
DXF/: 2D plans for laser cutting.3MF/: 3D-printable parts.STEP/: the complete 3D assembly (cabinet_top_asm.stp). Open it in any CAD software to see where each part goes during assembly.
The plans are in CAD/DXF/. Use the MDF thickness specified for each file in the BOM (6, 9 or 10 mm), otherwise the joints will not fit properly.
Cutting parameters (power, speed, kerf compensation) depend too much on each machine to be listed here. Do a fit test on an offcut before cutting the large parts.
Customize the marquee!
marquee.dxfis meant to be adapted with your own logo or artwork.
The files are in CAD/3MF/. The original parts were printed in TPU 64D. PLA or another rigid filament may also be suitable, but has not been tested. Use your printer's usual settings.
| File | Qty |
|---|---|
back_panel_latch.3mf |
3 |
back_panel_locker.3mf |
4 |
volume_button.3mf |
1 |
The cabinet is assembled with mortise and tenon joints, held together with 3 × 10 mm wood screws.
Glue or no glue? The original cabinet is assembled without glue, which keeps it removable. You can add glue for extra rigidity, but the cabinet will then be impossible to disassemble.
- Lay the left panel (
left_panel) flat on a table, inner face up. - Insert all the other panels into their slots: bottom, front panels, control panel, screen panel, top, marquee, etc. Use the STEP file to check where each one goes.
- Place the Ø 8 mm dowel (back panel support) and the two 33 × 33 mm battens (screen support bars) inside the cabinet. The battens are cut to length, so they simply sit in the cabinet, aligned with the edge.
- Close with the right panel (
right_panel). - Screw everything together with the 3 × 10 mm screws.
The back panel is removable to access the electronics:
- Snap the panel onto the latches (
back_panel_latch). - Slide the M5 × 35 mm screws into the lockers (
back_panel_locker) to lock it.
The round hole in the center of the panel is for a finger, to put the panel on or take it off. It also provides a bit of ventilation.
Important: install the latches and lockers BEFORE mounting the screen. Once the screen is in place, it is much harder to line up and fit these parts.
- Attach the monitor to the screen support (
screen_support) using the 4 × M4 × 15 mm screws (VESA 100 × 100 mount). - Rest the screen support on the two battens (screen support bars) inside the cabinet.
- Center the screen relative to the opening of the screen panel (
screen_panel). Check from the front and make sure the margins are even on all sides. This is the moment to get it right. - Secure the screen support onto the battens with the 8 × 4 × 15 mm wood screws.
The Back_view_without_panel.png render shows how the screen sits inside the cabinet.
- Buttons and joysticks: mount them on the control panel, then wire them to the kit's USB boards following its manual.
- Raspberry Pi (in its ventilated case): fix it inside with double-sided tape.
- Audio amplifier: fix it on a small metal bracket, with double-sided tape or hot glue.
- Cable management: use nylon zip ties and hot glue.
- Mains: the IEC inlet (switch + fuse) feeds an internal power strip, which powers the monitor and the 5 V power supply.
- 5 V: the 5 V power supply feeds the Raspberry Pi and the audio amplifier. The 6 A rating avoids undervoltage warnings caused by the LED buttons.
- Signals:
- HDMI to the monitor;
- 3.5 mm jack to the amplifier, then to the speakers;
- USB to the 2 encoder boards and to the front panel pass-through.
Safety: part of the wiring is 230 V mains. If you are not comfortable working with mains voltage, get help. Insulate all connections carefully and always unplug the cabinet before working inside.
| Control | Function |
|---|---|
| 1P / 2P | Start a game for player 1 or 2. |
| Coin (×2) | Insert a coin (credit). |
| 1P + 2P pressed together | Hotkey (access to Recalbox menus and shortcuts). This is the original cabinet's setting and can be changed. |
| Center USB port | USB pass-through, see below. |
| Button under the marquee | Volume (amplifier potentiometer). |
The exact role of each button depends on your Recalbox configuration.
This port lets you plug in:
- a keyboard, handy for navigating menus or debugging Recalbox;
- a USB gamepad, for games that need other types of controls. Playing with 3 players (2 on the cabinet + 1 on the gamepad) is possible in principle, but this setup has not been tested;
- a USB drive or external disk.
The cabinet runs Recalbox with no customization. Everything is already very well documented by the Recalbox team, so please refer to their official tutorials.
In short:
- Installation: flash Recalbox onto the microSD card with Raspberry Pi Imager. Recalbox is listed directly among the available operating systems.
- Controls: the kit's USB encoders are recognized automatically. Just assign the buttons using the standard Recalbox controller configuration procedure.
- Hotkey: set it during controller configuration, for example 1P + 2P as on the original cabinet.
The cleanest method is to transfer games over the network: with the cabinet connected via Wi-Fi or Ethernet, it shows up as a shared folder on your computer (\\RECALBOX\share on Windows). Just copy the ROMs into the folder of the matching system.
The procedure is explained, with screenshots, in the official Recalbox tutorials.
The ROMs used on the original cabinet come from archive.org.
Arcade games (MAME / FBNeo): each emulator expects a specific romset version. A game that won't launch almost always comes from an incompatible version. Check the Recalbox tutorials to find out which version is expected.
The original cabinet is mainly used with MAME, but the other systems (consoles) that were tested also work.
Disclaimer: no ROMs are provided in this repository. It is your responsibility to make sure you have the right to use the games you download, according to the laws of your country. The author of this project accepts no responsibility for how they are used.
- Stand: a stand will let you place the cabinet on the floor. The bartop part will remain removable and will attach to the stand with toggle latches. The current bartop is already compatible.
This project is released under the Creative Commons BY-NC 4.0 license.
You can:
- build the cabinet for yourself or as a gift;
- modify the files for your own use;
- share your remixes with attribution to the author.
You cannot, without written agreement:
- sell the files;
- sell kits, cut or printed parts, or assembled cabinets based on this design;
- make any other commercial use of it.
Commercial licensing, kit manufacturing or partnerships: Antoine Navarro EI (CeleauTech), celeautech.contact@gmail.com
Designed and built by CeleauTech
If you like this project, feel free to leave a star on the repository and share your build!










