DOOM Runs on Everything — Even the Neo Geo: A New Frontier in Portability

It’s a running joke among gamers and developers: DOOM can run on anything. From printers to ATMs, to a pregnancy test (yes, really), id Software’s 1993 classic has become the ultimate proof of concept for software engineering hubris. But a new port has pushed the boundary even further: DOOM now runs on the Neo Geo, SNK’s legendary arcade and home console system from the early ’90s. This isn’t just a novelty—it’s a technical marvel that highlights the enduring relevance of retro hardware and the sheer ingenuity of the modding community.

Why the Neo Geo? A Brief Technical Context

The Neo Geo was a beast in its day. Released in 1990, it boasted a Motorola 68000 CPU (the same chip found in the Sega Genesis and early Macs) clocked at 12 MHz, paired with a Zilog Z80 coprocessor for audio. It had 64 KB of main RAM and 74 KB of video RAM—a fraction of what even a modern smartwatch has. Yet it delivered arcade-perfect ports of games like King of Fighters and Samurai Shodown.

DOOM, on the other hand, was designed for PCs with at least a 33 MHz 386 processor, 4 MB of RAM, and a VGA graphics card. The gap is staggering. So how did the port’s creators—detailed in a recent Habr article—pull it off?

The Port: From PC to 16-Bit Legend

The port, described in depth by its developers on Habr, is not a simple recompile. It required a complete rewrite of the game’s engine, optimizing every aspect for the Neo Geo’s limited hardware. The team had to tackle several key challenges:

  • Memory Management: The Neo Geo’s 64 KB of main RAM is laughably small for DOOM, which uses 4 MB. The developers implemented a custom virtual memory system that swaps data from the cartridge ROM to RAM on the fly. This is a technique rarely seen on 16-bit consoles.
  • Graphics: The Neo Geo’s sprite-based architecture isn’t designed for texture-mapped 3D. The team converted DOOM’s ray-casting engine to use the Neo Geo’s custom graphics chip, the SNK 68, to render walls and floors without a traditional frame buffer. They also reduced color depth to 256 colors (from the original’s 256, but with careful palette management).
  • Audio: The Z80 coprocessor handles sound, but porting DOOM’s MIDI-based music required rewriting the synth code from scratch. The result is a faithful, if slightly tinny, rendition of Bobby Prince’s iconic soundtrack.
  • Controls: The Neo Geo controller has just four buttons (A, B, C, D) plus a joystick. The team mapped the standard DOOM controls: A for shoot, B for open, C for run, D for change weapon, with the joystick for movement. It’s surprisingly ergonomic.

The source article notes that the port runs at a consistent 15–20 frames per second on original hardware—playable, if not buttery smooth. On emulators, it can hit 30 FPS. For a system that never ran a first-person shooter before, that’s nothing short of wizardry.

Why This Matters: The Cultural and Technical Impact

This isn’t just a cool party trick. The Neo Geo DOOM port is a case study in software engineering constraints. It demonstrates how modern optimization techniques—like texture streaming, dynamic resolution scaling, and cache-efficient data structures—can be applied to retro hardware. Developers today can learn from these approaches when building for platforms with limited resources, such as IoT devices or embedded systems.

Moreover, the port underscores the longevity of DOOM’s engine. John Carmack’s original code, written in C and assembler, is so modular that it has been ported to nearly every platform imaginable. The Neo Geo port is a testament to that design philosophy: simple, elegant, and extensible.

The Broader Trend: Retro Gaming Renaissance

The Neo Geo port is part of a larger movement. In recent years, we’ve seen DOOM run on calculators, digital cameras, and even a fidget spinner (via a tiny display). But the Neo Geo is special because it’s a legitimate gaming platform with a passionate community. The port opens the door for other FPS games to be ported to retro consoles, potentially creating a new niche for homebrew development.

ASI Biont supports connecting to various platforms through API integrations—learn more at asibiont.com/courses. This kind of cross-platform thinking mirrors what the port developers did: bridging old and new systems.

How It Was Achieved: Key Technical Details

The Habr article breaks down the port’s architecture into three stages:

1. Engine Rewrite

The original DOOM engine relied on a floating-point unit (FPU) for calculations. The Neo Geo has no FPU, so all math was converted to fixed-point arithmetic, using 16-bit integers with careful scaling. This is a common technique in embedded programming.

2. Custom Memory Mapping

The team used the Neo Geo’s cartridge slot to its advantage. By mapping the game’s levels and assets into the cartridge ROM (which can be up to 32 MB), they created a pseudo-ROM drive that the console accesses like a hard disk. This allowed them to load levels on demand, rather than storing everything in RAM.

3. Collision Detection

DOOM’s BSP (Binary Space Partitioning) tree for collision detection was too memory-intensive. The team replaced it with a simpler grid-based system, dividing each level into 64x64 pixel cells. This reduced memory usage by 40% at the cost of slightly less precise collision detection—but it’s still accurate enough for gameplay.

Playability and Reception

According to early testers, the port is fully playable through the first episode (Knee-Deep in the Dead). The controls feel responsive, though the lower frame rate takes some adjustment. The biggest issue is the draw distance: due to the Neo Geo’s lack of a depth buffer, enemies and items pop in at a closer range than on PC. Still, for a system that cost $650 in 1990 (over $1,400 adjusted for inflation), it’s impressive to see it running a game from 1993.

What This Means for Modern Developers

The Neo Geo DOOM port offers several lessons for today’s developers:

  • Profile first, optimize second: The team spent weeks profiling the Neo Geo’s bottlenecks before writing a single line of code. They discovered the CPU was the main limitation, not the GPU, which guided their optimization strategy.
  • Embrace constraints: Limited hardware forces creative solutions. The grid-based collision system, while not as elegant as BSP trees, is faster and uses less memory—a trade-off that works.
  • Community matters: The port was made possible by the Neo Geo development community, which has created modern tools like the NeoSD flash cartridge and the MAME emulator. Without these, the port would be impossible to test or distribute.

The Future of Retro Ports

As hardware preservation becomes more important, ports like this ensure that classic games remain accessible on classic hardware. The developers have released the source code and build tools, so anyone with a Neo Geo flash cart can try it. This democratizes access to both the game and the engineering behind it.

For those interested in the full technical breakdown, the original article is a must-read: Source. It includes detailed code snippets, memory maps, and performance benchmarks.

Conclusion

DOOM running on the Neo Geo is more than a meme. It’s a demonstration of what happens when passionate engineers refuse to accept “impossible” as an answer. It bridges generations of hardware, showing that even a 30-year-old console can still surprise us. Whether you’re a retro enthusiast, a software engineer, or just someone who loves a good underdog story, this port is worth your attention.

The next time someone says a game can’t run on a particular system, remember the Neo Geo. And remember: DOOM runs everywhere.

← All posts

Comments