[WIP] Mimas Engine: my take on hardware-rendered Saturn Doom (make a WAD, get a Saturn FPS)

Hi all I'm Romain (N0rt0N85). I'm building Mimas Engine, a Doom port for the Saturn that actually leans on the hardware, running here on real hardware (Phoebe ODE).

▶️

The idea:
The infamous 1997 Saturn Doom was a pure software renderer that ignored the VDP1/VDP2 (Carmack vetoed Jim Bagley's hardware engine, and later called it a mistake). Mimas Engine is my shot at the hardware-accelerated Saturn Doom that never shipped, and because it's a real Doom engine, the content is just a WAD: drop in a vanilla / limit-removing WAD and you have your own FPS on real Saturn hardware, no Saturn code required.

Under the hood
  • doomgeneric / Chocolate-Doom core, rendered across both SH-2 CPUs (slave-CPU column/visplane renderer with work-stealing).
  • VDP1 hardware walls (distorted sprites) + VDP2 hardware sky and floor;
  • Big WADs stream from the CD with no RAM cart : Doom II / Ultimate / Plutonia / TNT and the community WADs hopefully !
  • Built on SRL, thanks @ReyeMe, it made this genuinely pleasant (basically a flagship SRL demo).
Status: WIP, playable on hardware at low FPS. Targets vanilla / limit-removing WADs (Chocolate-Doom compat, not GZDoom/ZScript).

Credits. Engine = doomgeneric/Chocolate-Doom; the texture cache is ported from d32xr; the VDP1 approach is inspired by Lobotomy's SlaveDriver/PowerSlave (my renderer diverges with hybride world (vdp1, vdp2, sh-2). Big respect to Fafling too, Mimas is a different, ground-up take (hardware rendering + big-WAD engine) rather than a patch of the retail binary.

I'll keep this thread as a dev-log and will publish videos on this youtube playlist;
Happy to dig into any technical questions.
Feedback very welcome!

Romain
 

Attachments

  • Screenshot 2026-07-01 20-15-12.png
    Screenshot 2026-07-01 20-15-12.png
    729.5 KB · Views: 0
  • Screenshot 2026-07-01 20-15-26.png
    Screenshot 2026-07-01 20-15-26.png
    806.9 KB · Views: 0
  • Screenshot 2026-07-01 20-15-35.png
    Screenshot 2026-07-01 20-15-35.png
    586.4 KB · Views: 0
  • Screenshot 2026-07-01 20-15-53.png
    Screenshot 2026-07-01 20-15-53.png
    778.5 KB · Views: 0
Last edited:
Not to discount the work on this engine, but it should be noted that Retail Saturn Doom doesn't use a software renderer. It uses VDP1 to render everything but the sky and HUD layers which are handled by VDP2. It's a straight port of PS1 Doom and has the 3D scenery drawn using 1px high strips on VDP1. So it is very much a hardware renderer using the Saturn hardware. The reason it runs poorly is because it's rushed and sloppy with little optimization.

Hexen on the other hand does use a software renderer for the 3D scenery.
 
Not to discount the work on this engine, but it should be noted that Retail Saturn Doom doesn't use a software renderer. It uses VDP1 to render everything but the sky and HUD layers which are handled by VDP2. It's a straight port of PS1 Doom and has the 3D scenery drawn using 1px high strips on VDP1. So it is very much a hardware renderer using the Saturn hardware. The reason it runs poorly is because it's rushed and sloppy with little optimization.

Hexen on the other hand does use a software renderer for the 3D scenery.
I see, my knowledge on the topic was far from complete, then! Thanks for the clarification 🙂 !
I guess I can review my hopes down for the final performances :/
 
Last edited:


2026-07-01 changelog:
  • Dynamic sky/floor horizon: the sky always meets the floor now (no gap); the hardware floor is clipped below a per-view horizon.
  • Dual-SH2 plane work-stealing via the SH-2 TAS instruction (Fafling-style meet-in-the-middle), default-on, smoother frame pacing.
  • 3-player mode: the empty 4th quadrant now shows a player-position minimap.
  • Perf: removed a per-frame 131 KB floor re-upload; memory tidy-ups.
  • Hardware sky/floor in split-screen views.
  • The debug overlay is toggled on/off in this one so you can see the clean view.
 
Last edited:
I see, my knowledge on the topic was far from complete, then! Thanks for the clarification 🙂 !
I guess I can review my hopes down for the final performances :/
I wouldn't get your hopes down too much. There's plenty of evidence that the Saturn can handle Doom both in its retail configuration and in a pure software rendering setup. Fafling has gotten retail Doom up to about PS1 levels of performance with code improvements, and Doom Resurrection on the 32X shows even a lower clocked dual SH2 setup can run software rendered Doom at a good framerate.
 
Not to discount the work on this engine, but it should be noted that Retail Saturn Doom doesn't use a software renderer. It uses VDP1 to render everything but the sky and HUD layers which are handled by VDP2. It's a straight port of PS1 Doom and has the 3D scenery drawn using 1px high strips on VDP1. So it is very much a hardware renderer using the Saturn hardware. The reason it runs poorly is because it's rushed and sloppy with little optimization.

Hexen on the other hand does use a software renderer for the 3D scenery.
Saturn Doom does software render the flats and uses VDP1 to accelerate the mixing of that rendering with the walls and sprites which are fully rendered by VDP1.
 


2026-07-01 changelog:
  • Dynamic sky/floor horizon: the sky always meets the floor now (no gap); the hardware floor is clipped below a per-view horizon.
  • Dual-SH2 plane work-stealing via the SH-2 TAS instruction (Fafling-style meet-in-the-middle), default-on, smoother frame pacing.
  • 3-player mode: the empty 4th quadrant now shows a player-position minimap.
  • Perf: removed a per-frame 131 KB floor re-upload; memory tidy-ups.
  • Hardware sky/floor in split-screen views.
  • The debug overlay is toggled on/off in this one so you can see the clean view.

Cool project from everything I am seeing so far. Have you considered taking a look at GitHub - dgrubb/DoomFS2: A WIP port of DOOM to the Sega Saturn.. I found it a while ago and wonder if any code in it, might help. Otherwise, i wish you the best of luck.
 
Cool project from everything I am seeing so far. Have you considered taking a look at GitHub - dgrubb/DoomFS2: A WIP port of DOOM to the Sega Saturn.. I found it a while ago and wonder if any code in it, might help. Otherwise, i wish you the best of luck.
Thanks for the support ! Yes, I have found the github, but didn't check it deeply yet.
There are many references, projects or trials around Doom to look into (DoomFS2, D32XR, FastDoom, Fafling saturn patch...). I keep them at hand, and check them on need (to compare, find solution to my issues, or optimize).
It's one of the reason I started this port: get inspiration from the numerous other projects on a well documented engine (and make myself suffer by adapting it on Saturn). I thought it would be a nice way to learn the hardware architecture and its limitations: I'm trying to document my findings on the way.

Seeing all the (INCREDIBLE !) work done by the saturn dev community (and segaxtreme in particular) in the past years got me motivated to commit to this POC for the last weeks. I'm not sure where this is going, but it's a childhood / teenage dream I'm fullfilling: building something for the Sega Saturn.
 
Back
Top