Ray Commend

Saturn Homebrew Engine in Development

Could this mean that the dawn of new Saturn games may be upon us?

Developer Maxime, AKA XL2, posted a new video that showcases his homebrew Sega Saturn engine and it’s impressive.

It boasts a nice steady framerate with far less clipping & artifacts than a lot of officially released Saturn titles.  Even more impressive is that he’s able to run this on real hardware.

For those who want more technical details, here’s a quote directly from his Youtube video.

Quick real hardware test (using a usb capture device). I am testing the shading effects and multiplayer (there is no player model yet, which is why you don’t see each other). I also only had 1 pad for this test… so only player 2 is moving around.

The textures are now 64×64 (vs 32×32 in other videos) and I don’t use SGL anymore for rendering, only my own code. This allows way better shading and much faster rendering (preclipping disable trick, that only few games used, such as Sonic R and Burning Rangers, even if it’s clearly stated in Sega’s documentation that it’s much faster to flip it on/off depending on if your sprite is partially offscreen or not).

I am using ONLY the slave CPU for vertices transformation and polygon creation, so the main CPU doesn’t do much (you can see the rendering cpu time, which is the main CPU’s part…it doesn’t do much compared to the slave cpu). It runs mostly at 20 fps, which is great considering I am almost only using 1 cpu.

I also only use C for the transformation, so I could get a big boost by using assembly. For the shading/lighting, I have static light precalculated using my BSP tree, depth shading calculated in realtime and I have “dynamic” light effects (red and green, which is just a color table getting updated to change the intensity). So in terms of graphics (if we forget the artistic choices), it’s more or less on par with the Slavedriver : Both engines use 64×64 textures with gouraud shading lighting on each quad. I have a higher resolution (352×224 vs 320×240), but still no “real” realtime lighting effects.

The slavedriver used portals, while I use precalculated visibility (PVS), so the slavedriver engine would cull out more geometry, but thanks to the preclipping trick I’m not that much at disadvantage as overdraw becomes more acceptable.

Right now my bottleneck is the CPU, so I’ll have to improve my code and (maybe) share the rendering burden between the main and slave cpus.

XL2 did release a playable Saturn Demo for Sonic Z-Treme which can be found here: Sonic Z-Treme

In my opinion, examples like this really show how much untapped potential the Saturn had left due to its early demise.  Similar to the PS2 & PS3, if developers would have had more time (and the system would have been more popular) then who knows what kind of amazing games would have surfaced. Unfortunately, we may never find out.

Like my work? Subscribe to my Channel: Ray Commend