What it does

We ported Doom directly to the official hacker badge, complete with real-time 2-player co-op!

How we built it

We went to the hacker badge help desk guy and got Archive 2.zip, which contained hardware descriptions of the Hack the North hacker badge. From there, we fed it into Claude to figure out how to flash the ESP with custom firmware before we ported Doom onto the badge.

For multiplayer, Doom already has some legacy multiplayer logic not enabled in the code that we were able to use as a starting point. Using ESP-NOW as a wireless communication protocol, we could broadcast player positions and inputs between two badges without needing a router or internet connection.

Challenges we ran into

Initially we tried doing things the "intended" way by building an app using the badge's provided Lua environment and widget framework. We quickly found that:

  1. The background OS and pre-installed apps ate up too much memory to allocate what Doom needs.
  2. Lua has no direct framebuffer access, and trying to render 30+ FPS gameplay through the provided widgets framework would prove impossible.

To make matters worse, even after wiping everything, none of the Doom maps (.wad files) were small enough to fit into the RAM of the hacker badge, so we had to create a smaller, custom map that could fit within our hardware limitations. To fix this, we built a custom, lightweight map that happened to be a better-suited demo environment that gets straight into the action: shooting monsters, picking up new weapons, and trying not to shoot explosive barrels and blowing up your friend. Multiplayer also placed strain on the already-tight hardware constraints that we had to optimize around.

Accomplishments that we're proud of

It works, what more can we ask for? And the framerate is surprisingly high??? (31.8 FPS)

What we learned

The arrow buttons hurt your thumb after "QAing" Doom for 2 hours straight. Unlike framebuffers vs high-level widgets, raw is NOT better.

What's next for iGRAAB

Some ideas we were throwing around:

  1. More maps
  2. Co-op with more than 2 players
  3. A PvP mode
  4. More optimizations that would allow for more features within the hardware constraints

Built With

Share this project:

Updates

Submission history