DoomUltra64 v0.5
Doom and Doom II on the Nintendo 64, rendered by the RDP.
What's new since v0.4
Vertical seams between wall segments are largely gone. Thin one-pixel slits, worst on distant walls, where a column of the frame was never painted by anything. Three causes, each measured before and after:
- The BSP claimed columns a wall provably cannot paint. With antialias off the RDP writes a pixel only if the sample at its integer coordinate is inside the span, so a span starting at 187.5 cannot write column 187 — but it claimed it, the solid list marked it covered, and nothing behind was allowed to fill it.
- A wall span's end edges went through a float round trip — parameter to texture coordinate and back — that is not an identity. At distance a few ULPs of parameter is a quarter-pixel of screen x, so two segments meeting at a shared map vertex projected it to slightly different places.
- Two segments need not share a vertex at all. Their outer edges are now grown to the enclosing pixel boundary, so neighbours overlap by under a pixel instead of leaving a void. Walls are opaque and depth-tested, so overlap costs nothing.
Measured over the same demo route: mid-view hole pixels 3747 → 1226, seam columns ten rows or taller 127 → 35.
Also: the polished-metal sheen now reports when it runs out of per-frame slots, so a densely plated corridor says so rather than quietly sheening only some of its walls.
Everything in v0.4 is included — sixteen dynamic lights, Doom's real light curve, polished metal, glowing powerup spheres, seated barrels, cartridge-resident music, self-naming saves, and the controller sensitivity slider.
Installing
Extract to the root of your SD card. It creates one Doom folder:
sd:/Doom/
DoomUltra64.z64 the Doom ROM
Doom2Ultra64.z64 the Doom II ROM
saves/ savegames, six slots per game
Add your own IWADs — they are not included and are not redistributable:
sd:/Doom/DOOM.WAD for DoomUltra64.z64
sd:/Doom/DOOM2.WAD for Doom2Ultra64.z64
Boot a ROM from the flashcart menu, then set Options → Graphic Detail to High — the metal sheen, the pool reflections and the 320x480 mode are all gated on it.
Music is optional and ships separately; see the README for tools/mkmuswad.py.
Requires the Expansion Pak. Developed and tested on a SummerCart64.