DOOM Ported To A Single LEGO Brick

By now you’ve all seen the tiny LEGO brick with a working screen in it. The work of one [James “Ancient” Brown], it was truly a masterpiece of miniaturization and creativity. Since then, [James] hasn’t stopped innovating. Now, he’s demoing a playable version of DOOM running on a single plastic brick.

We’ve covered the construction of these astounding screen bricks before. Long story short, [James] designed a tiny PCB that hosts an RP2040 microcontroller which is then hooked up to a tiny OLED screen. The components are placed in a silicone mold, which is then filled with transparent resin to form the brick. The screen is then powered via contacts in the bottom, much like older-style LEGO motors.

Early experiments involved running various graphics to emulate a spaceship dashboard, but [James] has now gone much further. He’s implemented RP2040-doom to run the game. It uses tilt controls thanks to an accelerometer, combined with capacitive touch controls for shooting. The monochrome OLED is driven very fast with a special library of [James’] own creation to create three levels of grayscale to make the game actually visible and (just barely) playable.

It’s a hack, of course, and the controls are far from perfect. Nobody’s speed-running E1M1 on [James’s] LEGO brick, to be sure. Perchance. With that said, it’s still a glorious piece of work nonetheless. Just imagine, sitting with friends, and announcing you’re going to play some DOOM — only to pluck a piece of LEGO out of your pocket and start blasting away at demons.

Just because [James] doesn’t know when to quit, we’re going to lay down the gauntlet. Let’s get network play happening on these things, yeah?

Thanks to [Måns Almered] for the tip!

18 thoughts on “DOOM Ported To A Single LEGO Brick

  1. Very nice, love the tilt & capacitive controls!

    As for the networking – it would be super cool to retain the original broadcast protocol (but maybe swap from IPX to IP – the choice of underlying protocol was external to the engine in the original game) as this avoids any significant changes to game engines, so hopefully more ports can play with each other: ring vs badge vs ATM anyone?

    1. ‘Good’ as in a fun playable entertaining game? Or ‘Good’ as in hackable?

      I certainly enjoyed it back in the day on a 286, but even in its time its single-player gameplay wasn’t exactly astounding. It was one of the first fast action FPS games and one of the first 3D games on the IBM PC. One could argue that its predecessor Wolfenstein 3D was more important in those respects. Doom’s network play and modability gave it legs though. and birth to the Doom franchise.

      In terms of hackability, the fact that it ran on hardware without dedicated 3D graphics acceleration on a 286 in very little RAM, and with no dependencies on Windows, meant that was easily portable. Getting Doom running on esoteric hardware soon became a challenge for hackers.

      1. Lmao, I know Doom was 100% a sensation and it was happening before I was even born.

        Is it cool to poo poo Doom now? The gameplay was revolutionary, multiplayer was the killer feature. Many man hours were consumed by Doom during that time.

        Masters of Doom, Game Engine Black Book, etc.

        1. back in the 1990s to setup original DOOM on the network you needed the Novel network protocol stack, and at work we only used NETBIOS, TCP/IP, and SNA. So on staturdays, the guys would come in and play networked DOOM on the computers. Didn’t coexist well with the rest of the stuff,it used to drive the network people crazy!! HAH

  2. This is awesome. It could be better if you make it large scale but keep the micro controlling movements for handicapped people so they could play games. That they can use any muscles of the human body to control the games. Or for use of real-world things like robotic hands/arms etc.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.