Retroarduinogamesopen-sourcehardware
Smashcat's Arduino Uno Now Plays Pac-Man Championship Edition on a TV, Drawing Each Line Just Before the Screen Does
Scott Porter's composite-video engine for the 8-bit Uno already ran Manic Miner, Scramble and Space Invaders with no framebuffer. Its newest port is a five-minute score-attack Pac-Man with scrolling mazes at a locked 50 fps.

The newest game in the repo is the hardest one yet. On his project page, posted October 12, Porter says the Pac-Man port “required a lot of memory management, especially for the scrolling mazes.” The maze is bigger than the screen: the code builds it from a left half-map, a fixed centre strip and a right half-map, 47 by 23 cells, and it “wraps around both horizontally and vertically.”
The rules follow the console game’s score-attack shape. A round lasts 300 seconds or three lives, whichever runs out first. Eat a fruit and half the maze is replaced, and the ghosts’ frightened time drops by half a second, from eight seconds down to a floor of four. The README promises “2 Channel PWM audio, with sound effects closely matching original Pacman game,” and a high score list you clear by holding SELECT and START at power-on.
The trick underneath all four games is the engine. The Uno’s ATmega328P has nowhere near enough RAM to hold a 256 by 256 picture, so it doesn’t try. “Everything is generated by ‘racing the beam,’” the README says: each line of the picture is computed just before the TV draws it. Up to nine 16 by 16 sprites can share the screen, seven on one scanline, and one of them gets pixel-perfect collision. Porter still finds “Lots of spare cycles, enough to run game logic.” The Pac-Man video loop alone is 44 KB of hand-written assembly.
Play the video on YouTubeThe hardware list is short. “You need a couple of resistors for the video output, some buttons for input, and audio using a few more resistors,” Porter writes; his parts list comes to six resistors and the Uno. For anyone who’d rather not wire it by hand, he posted the shield’s PCB production files, and the README puts a run of 20 assembled boards at around £4 each. An NES controller port is optional.
The catch is the clock. “Some of the cheaper ‘Arduino compatible’ boards use resonators instead of crystals for their clock. These are nowhere near accurate enough to generate the video signal,” the README warns. “I have tried several and it caused extreme jitter in the image.” It also won’t run on any other Arduino model.
If you don’t have a genuine Uno handy, there’s a WebAssembly build that runs in your browser; the page says “It’s the real game code.” The Manic Miner side has been in the repo since 2024, with all 20 levels of Matthew Smith’s Spectrum original. The Pac-Man work hasn’t stopped either: an October 18 commit “Saved over 800 bytes or flash, and 132 bytes of RAM.” What he spends them on next, he hasn’t said.
Hobby code like this tends to outlive the boards it was written for. There are a lot of Unos in a lot of drawers, and every genuine one with a crystal on it is now a games console waiting for six resistors. Expect more ports onto the same engine, and expect the clones to keep failing them for the same reason.
There’s also a quiet lesson for anyone who builds on cheap parts. A board that’s “compatible” in every spec a datasheet prints can still be wrong in the one spec your project leans on.