← Emaad Majeed

Tetris Arcade Machine

2025
Render of the Tetris arcade cabinet with a game in play on the LED matrix

A working Tetris arcade machine in a bartop cabinet. The game runs on a NeoPixel LED matrix, with a joystick for movement and a single button for rotation. The cabinet is laser cut and engraved, assembled with tab and slot joints, and finished with spray paint and printed vinyl artwork. The project pulled together two halves that had to meet in the middle: writing the game logic and driving the hardware, and designing and building the physical machine it lives in.

Methods
CAD, laser cutting and engraving, 3D printing, spray finishing, electronics, embedded code
Tools
Fusion 360, laser cutter, 3D printer, NeoPixel matrix, joystick and button input

1. Process

I started from the classic upright arcade silhouette and worked it down to something that could sit on a table. The sketches explore the profile: how far the screen leans back, how deep the control shelf sticks out, and where the marquee sits above the display. The stepped side profile came out of those passes, because it keeps the screen angled toward the player while letting the whole machine stay small.

Sketch studies working through the cabinet profile, screen angle and control shelf
Icon sketch of the arcade cabinet

I took the chosen profile into Fusion 360 and built the cabinet as a set of flat panels that interlock. Modeling it as an assembly meant I could check that the screen opening lined up with the matrix, that the control shelf sat at a comfortable height, and that every joint met at the right place before anything was cut.

CAD render of the full Tetris arcade cabinet
Side view of the cabinet showing the screen rake and the projecting control shelf
Exploded view showing how the side panels, front face and control shelf tab together
The cabinet panels modelled as separate flat pieces

The assembly was flattened into a single cut file. Every panel carries tabs and matching slots so the cabinet locks together without brackets, and the screen and control openings are cut in the same pass. After cutting I engraved and painted the panels, then applied printed vinyl for the marquee and the tetromino artwork on the sides.

Flat pattern of every cabinet panel laid out for the laser cutter
Laser engraving the cabinet panels
Panels tabbed together into the finished cabinet
Vinyl artwork laid out on the computer before printing
Printed sticker sheet of the Tetris artwork

The playfield is a NeoPixel matrix sitting behind the screen opening. Raw, the individual LEDs read as bright points rather than clean blocks, so I put a diffuser film over the face. That spreads each pixel into an even square and makes the stack of tetrominoes read properly from a normal viewing distance. Behind the panel the matrix is wired back to the board along with the joystick and the rotate button.

Wiring behind the panel connecting the matrix and the controls
Diffuser film laid over the matrix
The same display with the film in place, showing how it evens out each pixel
Working through a NeoPixel programming exercise

The game had to be written from the ground up for a display that is only a few dozen pixels across. That meant mapping the LED strip into a grid, tracking the playfield state, and redrawing it cleanly every frame. Movement comes off the analog joystick and rotation off a debounced button. On top of the basic falling and clearing, I added a soft drop for faster placement, a level system that speeds the game up as it goes, line clears, and win and lose animations.

Writing and testing the game code Working between the code and the CAD model

2. Final Design

The finished machine is a white bartop cabinet with the marquee above the screen, tetromino artwork down the sides, and the joystick and rotate button set into the control shelf.

Building our Pixel Arcade Tetris game was challenging but also really rewarding. At first the idea seemed simple, but once we started coding the NeoPixel matrix, handling joystick movement, and writing the game logic, we realized how many small details had to work together. Learning how to map the LEDs, read analog inputs, debounce the rotate button, and update the screen correctly taught us a lot about combining hardware with programming.

One feature I am especially proud of is the soft drop, because it made the gameplay feel smoother and required careful timing. The hardest part was definitely the joystick. The analog values were unpredictable, and getting the movement to feel consistent took a lot of trial and error. Adding the level system made things even tougher because fixing one part of the code often messed up another part. It felt like trying to solve a Rubik’s cube where every twist created a new problem to fix, while you also had to retain the previously solved parts.

The finished Tetris arcade cabinet Gameplay running on the finished machine The lose scene on the display