Saturn Dark Forces ?

I just stumbled on a review of DOS Dark Forces from Computer Player June 1995 (page 45) mentionning that the game would get ported to PSX and Saturn. While it did get a PSX port eventually I had never heard of a Saturn port, has anyone ever heard of such a thing ? It could be a real thing or it could just be extrapolation from the reviewer.
 
The Sega Saturn port is possible but will be very hard to do. Currently I have got a very buggy Doom level renderer running between 30-60FPS. I had to pull out all the stops, use AI and everything. The Sega Saturn VDP1 is extremely fast but VERY CPU limited.
 
The Sega Saturn port is possible but will be very hard to do. Currently I have got a very buggy Doom level renderer running between 30-60FPS. I had to pull out all the stops, use AI and everything. The Sega Saturn VDP1 is extremely fast but VERY CPU limited.
Well after seening what @N0rt0N85 can do using thr slave engine. I'm sure it possible if you know what your doing

 
Doom at 60fps on the Sega Saturn.

Screenshot 2026-10-09 115848.png
 
Doom at 60fps on the Sega Saturn.

View attachment 13475
Quick questions:
Which Doom ? Chocolate Doom ?
Why Doom (just out of curiosity) ?

Does it run on the hardware ? Emulators are way "too kind", especially on the RAM limitations of the hardware. My first prototypes of Doom were running fine on emulators but were a mess on the real hardware.
Doom's software renderer is clearly not ideal for the Saturn that is always MSH-2 CPU limited.
I learned that the hard way after four failed original Doom projects.

SlaveDriver Engine would be a more suitable base than Doom, and would allow multiple floors than Doom can't handle.
I made a PR on Lobotomy's official repo with the modifications needed for it to compile with modern gcc and the LEV maps format description.
It's a very good base, that's what I started from for my project.

My plan is to make an open platform so people can design their FPS for the Sega Saturn (create new or port whatever they want). It's already converting WADs from Doom shareware, and I'm pushing to other Doom games. But that'll take time.
 
The renderer had to be completely rewritten with the Saturn hardware in mind. It's a completely custom engine from the ground up. The SlaveDriver Engine could be used as a starting point. Some of what it's does is in my engine. The AI just added it as a source of what I was doing because it knows that this engine first used it on the Sega Saturn. For Doom there is much more that can be done to off load processing from the two CPU's and use the SCU-DSP. At the moment I'm fighting bugs and trying to lock in 60fps. For e1m1 anyway. This is pure alpha build atm. AI is helping a lot to find a way to increase performance. It's not all about Doom. I'm hoping the engine can be used in other Sega Saturn games to fix performance. So I have got an AI fast prototyping. I have worked out what needs to be done to get maximum performance.

The way PC Doom or Saturn Doom runs on the Saturn will never give good performance. It's basically designed for PC's. I could post the rendering plan but its a work in progress and is the size of a book. There are currently 30+ chapters.

The issue for dark forces. The more complex the levels and the larger they are. This affects what you can do to speed up the rendering of the level. Also, you can look up and down which you can't in Doom. This destroys tricks that can speed up perspective correction. Basically height in Doom doesn't matter for perspective correction. Thus, you can have quads 16 times height in pixels and have no issues. So, walls can be rendered in strips. The more complex the level, the more quads that are required. The CPU's are a massive limit as quads increase. It's hard to process everything you need to with BSP/PVS. Then share the load for rendering on both CPU's and the DSP. The VDP1 seems up for the task so far and is far faster than the CPU's. This is were I get the CPU bottleneck from. VDP1 is very fast but the CPU can't push too many quads. So limiting quads is required to get 1 or 2 vblank rendering.

As for my Doom engine, it runs on emulator or hardware but this changes with each time I create a new ISO to test. I totally respect the programmers having issues on the Sega Saturn but there is a way to program 2.5D engines like Doom and get better performance compared to the PS1.
 
Last edited:
The renderer had to be completely rewritten with the Saturn hardware in mind. It's a completely custom engine from the ground up. The SlaveDriver Engine could be used as a starting point. Some of what it's does is in my engine. The AI just added it as a source of what I was doing because it knows that this engine first used it on the Sega Saturn. For Doom there is much more that can be done to off load processing from the two CPU's and use the SCU-DSP. At the moment I'm fighting bugs and trying to lock in 60fps. For e1m1 anyway. This is pure alpha build atm. AI is helping a lot to find a way to increase performance. It's not all about Doom. I'm hoping the engine can be used in other Sega Saturn games to fix performance. So I have got an AI fast prototyping. I have worked out what needs to be done to get maximum performance.

The way PC Doom or Saturn Doom runs on the Saturn will never give good performance. It's basically designed for PC's. I could post the rendering plan but its a work in progress and is the size of a book. There are currently 30+ chapters.

The issue for dark forces. The more complex the levels and the larger they are. This affects what you can do to speed up the rendering of the level. Also, you can look up and down which you can't in Doom. This destroys tricks that can speed up perspective correction. Basically height in Doom doesn't matter for perspective correction. Thus, you can have quads 16 times height in pixels and have no issues. So, walls can be rendered in strips. The more complex the level, the more quads that are required. The CPU's are a massive limit as quads increase. It's hard to process everything you need to with BSP/PVS. Then share the load for rendering on both CPU's and the DSP. The VDP1 seems up for the task so far and is far faster than the CPU's. This is were I get the CPU bottleneck from. VDP1 is very fast but the CPU can't push too many quads. So limiting quads is required to get 1 or 2 vblank rendering.

As for my Doom engine, it runs on emulator or hardware but this changes with each time I create a new ISO to test. I totally respect the programmers having issues on the Sega Saturn but there is a way to program 2.5D engines like Doom and get better performance compared to the PS1.
Feel free to try. I wish you better luck than I had.

On this topic (and in general), AI is over confident.
FYI: I have been there, my four failed attempts to build an engine from Doom Generic were with Claude Opus (and sometimes Fable), and my 20 years of engineering experience.
Edit: If you want, I can give the source of these failed attempts (but I left them in a buggy state), if that can avoid you some of my mistakes.
I couldn't find a real working usecase for the SCU DSP on these (everything I tried failed in real situation, or gave me worst performance)
Even on my current engine, were I managed to use it (to add more dynamic lights), the gain is small because of the constraints.
 
Last edited:
I got it to work and it took me over a month. I burned a lot of tokens with failed attempts. The attempts were working. The software renderer was a full game that could be released. If you don't mind 12-15fps average on the smaller maps. The second attempt was a PS1 type port, I tried to make a VDP1 version of the PC Doom renderer. It had bugs but again failed on performance. The main issue was CPU performance. By that point I had learned what the Doom renderer was real doing and how I could change that to the Sega Saturn hardware. Now I could use the SCU-DSP for the processing because I designed the engine from the ground up to use it and off load that part (matrix maths) from the sh2 CPU's.

The current attempt works completely but is still alpha and has lots of bugs. E1M1 at 60fps (mostly) looks possible and E1M8 30-60fps looks possible.

Dark Forces will be much harder to pull off and the performance will be much lower. The view of Doom is locked, there is no looking up or down. This allows lots of performance tricks that wouldn't be available in Dark Forces. There is a small quad budget and FPS is linked to how low the engine can keep this.

In the original 1995 DOS/Steam/GOG version: You must use the keyboard. Pressing Page Up aims upward and Page Down aims downward. The mouse only aims left and right.
 
Last edited:
Back
Top