I've been occasionally, although not very frequently, working with this since March of 2017. I had a recent interest in continuing working with it and finally make a first release so that people can try it on the real console. The main goal of working with the codebase is to try and see if anything can be done to improve the framerate so that it provides a smoother experience. To be honest, I haven't managed to improve things enough (most of the speed improvement possible with this port, is really based on options reducing rendering quality) but I have some plans and ideas to look further into it on the next releases. Besides performance helpers, additional options have been added to enable cheats from the menu, change Doom skies, alter some gameplay options, etc.
There are a lot of interesting thing one can do with the Doom engine and I have way more in my mind for future releases. There are two main things I want to focus on the next release, one is certainly focused on speed improvements (there are two paths I want to take here and one is to maintain the current engine and try to optimize it (maybe rewrite the few CPU intensive functions in assembly) while the second is to massively alter the rendering process which will need more time and research, trial and error and it might not even work correctly) and my other big goal is modding (I am pretty excited about this and I think of a way for the user to throw their files in a specific folder inside the CD root without needing to hack the original REZ file).
Optimus6128 aka Bugo The Cat
optimus6128 at yahoo gr
Anyway, it's time to see what the present version (V0.1) contains:
Halfing the columns horizontal resolution gives little improvement (maybe 10-20%). Even more (40%) when you select the faster but buggier version (can't find a way to avoid the visplane spills at the moment, maybe next release)
Option for flat(untextured) floor/ceiling quality (just like SNES). Simply by refusing to run the software renderer on the visplanes, you end up with a minimalistic look that at least saves important speed if there are a lot of visplane pixels to cover. A test map with lowest ceiling possible and endless big room, where the majority of the screen is covered by floors/ceiling surfaces, from 10fps gave 20fps by enabling this option. That's the ideal case though.
Enable CEL clipping:
There is a super clipping in the hardware that be default is off, to speed up when rendering CELs are outside the screen. Since the original code doesn't seem to clip the wall columns against the screen in the CPU, that results in some severe slow downs when the player stuck his view towards some really tall walls. Just by adding these flags in the CELs (CCB_ACSC, CCB_ALSC) but also enabling it in the hardware, the speed when your look is very close to a wall increased (it's the same as sticking your view in a short wall now).
Added the option to display an FPS counter. This way you can check the performance at various stages of the player view and decide for yourself how much the above options improve performance.
Map lines thickness:
This is just a nice easy gimmick I added. It looks good sometimes. It enabled thicker (pseudo antialiased, kinda cartoonish) lines in the automap. Can drop performance in the automap especially in later levels when there are too many linedefs.
New sky rendering:
You can choose between a lighter set of sky gradients (Day, Night, Dusk and Dawn) or the might fire sky from PSX Doom!
Why having to tap the original 3DO sequence of buttons (not as easy to remember as IDDQD or IDKFA :) to enable a cheat? I have added a menu where the cheats are disabled but you can enable the weaker and stronger (cheatier) of them as you move the slider. The weaker cheats are automap options (show all items, full map lines, and everything) and a proper NoClip option (that didn't even exist in the original cheats). The stronger cheats are simply IDDQD and IDKFA. The original way to apply a cheat (button tapping) is still preserved (and enabling a cheat this way will also switch on the options in the menu). Oh, also the locked extra screen modes are enabled by default (no need to hide them under a cheat anymore).
You can chose normal speed (1X) and double speed (2X) where you move twice as fast (but hard to navigate) and your weapons also shoot twice as much!
That's a pretty fun switch to play with. Do you want double speed monsters (2X) for some challenge? Or set the enemy update to pause (0x) so that you move around without nuisance, or do your Matrix moves! It's funny to pause things, shoot the paused enemies and then unpause to have them all at once die. Or pause while fireballs are in midair and hover around closely a stopped Imp fireball or something. It's like time stop!
This is experimental but pretty much fun. I simply spawn way more blood puffs and give them random velocities around X,Y and Z. Could break Doom if there are many monsters maybe, basically in rare occasions sprites disappear and reappear when the particles are spawned, but there could be more issues in later levels I just haven't got the time to test. I will improve in these functions in the future and add different kinds of particles. Use it at your own risk!
That's a pretty cool function I wanted to add, maybe it can be an alternative to NoClip if you happen to fall into an inescapable pit of acid (there are few of them even in the original Doom maps). But it also allows you to fly up high in places you couldn't reach and have a unique view of how Doom levels look from above. It steals the controls from Left/Right Pad when enabled (replacing strafe with fly up/down).
Method 1: raw files, use 3DO extraction/encryption tools provided in archive.
As you might have noticed, I didn't provide a full ISO for this release. The zip provided has the compiled binary executable and additional files and tools necessary to create your own ISO as long as you own the original CD or have the ISO of the commercial release. I thought that's ok as in Doom ports, its legit to give the executable of a Doom port away for free, but not the resource data. In the case of 3DO, you'd have to extract the files from the original CD or ISO, copy the updated binary and two more files, compile the ISO and then encrypt it with a second tool. The process is quite simple and there is an instructions.txt inside the archive along with the tools necessary. If anyone wants to make an ISO and publish it at another place, I am totally fine with that. If anyone also wants to change my mind concerning this, it's ok. I am just not sure at this point if it would be legit for me to publish here a full ISO, even though I know nobody would bother for an old console game that is not commercially viable anymore. So, I decided to be consistent with how Doom ports are published.