ProBackend
retro gaming hardware ports
2 hours ago5 min read

The Neo Geo Said No—and Doom Has Never Returned

How the Neo Geo's rigid sprite-only architecture made Doom technically unreachable without custom cartridge hardware—despite identical CPU specs to systems that did run it.

Doom on earbuds? Sure. Doom on Neo Geo? Not a chance.

We've all seen it: Doom running on a printer. On a toaster. On Windows Notepad. Inside Doom itself, even. Ars has chronicled every absurd port like a proud parent at a science fair—because we love the weird, the wildest, the technically obscene. But when someone says a system can't run Doom? That's when the real fun starts.

The Neo Geo was one of those systems.

It didn't look like it should be impossible. The Motorola 68000 chip? Same one as the Amiga. Same clock speed. Same memory bandwidth. You'd think if Doom could crawl out of a Commodore 64's speaker, it could at least stagger onto this $700 arcade cabinet-turned-home-console. But here's the truth: the Neo Geo wasn't built to render worlds. It was built to slide sprites around like a high-end flipbook.

And that's why Doom never happened.

Not because of power. Not because of memory. But because the Neo Geo's entire graphics pipeline was designed to say "no" to anything that looked like a 3D renderer.

The CPU doesn't draw pixels. It writes tile numbers.

Let's get specific. On the Amiga, the CPU writes to bitplanes. It tells the GPU: "Paint this pixel red here, this one green there." It has direct, unrestricted access to the framebuffer. Doom? Easy. You render a column of pixels, you slap it on screen, you move on.

On the Neo Geo? The CPU doesn't paint anything. It doesn't even see the pixels.

It writes tile IDs into VRAM. Like a librarian handing out book numbers: "Put sprite #247 at X=120, Y=90, scale it to 1.5x." Then it sits back and waits. The video processor—this silent, unblinking engine—goes to the character ROM, grabs the sprite data, and slaps it onto the screen. No reading. No sampling. No texture lookup. No post-processing. Just: here's the number. Here's the sprite. Go.

And the character ROM? It's not mapped into the 68000's address space. Not even close. The CPU can't peek inside. It can't read the pixels. It can't tell you what color the wall is at (x,y). It can't even check if a sprite is opaque or transparent. It just assumes the ROM has the right sprite, and the video chip will handle it.

That's fine for Pac-Man ghosts. It's catastrophic for Doom.

Doom on earbuds? Sure. Doom on Neo Geo? Not a chance

No frame buffer. No bitplanes. No way out.

The Neo Geo has no framebuffer. No bitmap mode. No way to write pixels anywhere you want. No equivalent to the Amiga's bitplanes, where you could mix and match colors and transparency on the fly. The screen is only sprites. Only tiles. Only pre-rendered graphics.

So imagine trying to render a Doom wall. Not a flat wall. A textured wall. A wall with a brick pattern that scrolls as you move. A wall with a window cut into it. A wall that's 30 feet high on the left, 5 feet on the right because you're standing on a ramp.

How do you do that with sprites?

You don't.

The only way to fake it is to pre-render every possible wall texture at every possible height and angle, and store them in the ROM. But Doom has hundreds of wall textures. And they're dynamic. They change based on lighting, player position, distance, slope. You'd need terabytes of sprite data.

And even then—you still couldn't render the floor. Or the ceiling. Or a staircase. Or an elevator. Or a raised platform.

Because those aren't sprites. They're depth. They're perspective. They're z-buffering. And the Neo Geo doesn't have any of that.

Wolfenstein 3D? Barely.

Modern Vintage Gamer built a demo. A raycaster. For Wolfenstein 3D.

And it's a miracle it works at all.

He didn't render walls as textures. He rendered them as 4-pixel-wide vertical sprites. The raycaster calculates the distance to the wall, then tells the Neo Geo: "Stretch this 4-pixel sprite to 200 pixels tall, and place it here." The hardware's scaling engine does the heavy lifting. It's crude. It's ugly. It's 8fps on emulation.

And it's still not Wolfenstein 3D. No enemies. No animations. No sound. Just walls.

Doom? It's not just walls. It's depth. It's height variation. It's ceilings. It's textures that change as you walk. It's dynamic lighting. It's monsters that move in 3D space.

The Neo Geo can't even fake it.

No frame buffer. No bitplanes. No way out

The only way forward? A chip in the cartridge.

MVG's conclusion is blunt: the only way to make Doom work on the Neo Geo is to pack in extra hardware. Like the Super FX2 chip that let the SNES run Doom.

The Super FX2? It was a co-processor. A tiny 3D engine on a cartridge. It handled the raycasting. It calculated textures. It rendered columns. The SNES just passed it data and said, "Here's the player's position. Render this." And it did.

The Neo Geo? No such chip. No such option. No way to slip a 3D renderer into the cartridge without redesigning the whole system.

So yes—technically, it's not impossible. MVG himself says that. "As soon as you say something's impossible, the gauntlet's thrown down."

But it's functionally impossible.

Because nobody's going to build a Neo Geo Doom cartridge with a custom 3D chip. Not now. Not ever. The cost, the effort, the sheer pointlessness—it's a monument to futility.

We'll never see Doom on Neo Geo.

And honestly? That's kind of beautiful.

It means the Neo Geo didn't just fail to run Doom.

It refused.

And sometimes, refusal is the purest form of identity.

For more on how legacy hardware defies modern expectations, see How the Sega Genesis Defied Doom’s Design. For context on other impossible ports, read Doom on a Printer: The Art of the Absurd. And for a deep dive into sprite-based rendering, check out The Sprite Revolution: 16-Bit Graphics Before 3D.

More blogs