Thursday, April 18, 2019

Doom64 EX (DOOM64.EXE)

Doom64 EX was one of Samuel Villareal's passion projects, a source port developed for the express purpose of playing the original Doom 64 on the PC as accurately as possible. It also has its own level editor, allowing fans to make their own PWADs using the same features that the original designers used. As opposed to, you know, painstakingly recreating it all using a source port like GZDoom or Doomsday. The latter was the base of the Doom 64: Absolution TC, a project that Kaiser had a hand in and which is featured as one of Doomworld's Top 10 WADs of 2003.

It's a lot easier to look at the relative merits of Doom64 EX compared to other source ports because of its laser-focus in bringing the magic of the Nintendo 64 variety to your personal computer. No other port is capable of using the raw data of the cart's ROM to generate a WAD and then play it pretty much like you would on the console, just with a keyboard and mouse and some quality of life improvements. The effort was Herculean and it paid off. Folks are still trying to contort GZDoom's features to host the experience in a setting that is more convenient to them, e.g. mod-compatible or capable of online multiplayer. When it comes to representing the original's aesthetic, though, SV can't be beat.

Doom64 EX is available on its WordPress blog. The last stable release was v2.5 back in 2014. As of this writing Kaiser is no longer actively developing it but another coder (dotfloat) has been working on it in the interim, albeit not since August of 2018 and not as stable releases. SV isn't completely ignorant toward his lovechild, though, and has presented a fix on the blog - made by the other developer - for Windows 10 users. The SDL Patch is an update to the v2.5 package and fixes an issue with mouse movement. I definitely needed it for my playthrough and it absolutely resolved the issue.

The package includes three executables: DOOM64.EXE, LAUNCHER.EXE, and WADGEN.EXE. The last one takes the cart's ROM data and does the heavy lifting to create a .WAD file for the primary program. The ROM is not supplied in the package; you will need to acquire it for yourself. The version of WADGEN.EXE is specific to the port rev, too, so a .WAD created for v2.1 will not work with v2.5. One of the pipe dream goals of the current if sporadic development is to internalize WADGEN so that the end user does not have to jump through the hoop of using it before starting up the game.

DOOM64.EXE is the port itself. LAUNCHER.EXE is a nicety. It allows you to set up some typical command line options (-fast, -respawn, -nomo, etc.) with the tic of a box or even launch a network game. If you're going to load a PWAD then the "Other Parameters" field is one way to do it (e.g. -file XXXX.wad). The ol' drag and drop method still works, though. When its IWAD is built then DOOM64.EXE will launch you right into the core game - including the wicked-ass TITLEMAP-esque sequence.

EX has the usual settings that you'd expect to find in a modern source port. You can use the mouse to navigate the menus and even click and drag the sliders. Most of the key commands are bindable. If you can't then they are explicitly defined at the bottom of the "Bindings" menu (stuff like save, load, quick-, screenshot). The "Jump" function was not available in the actual game but was first introduced as part of the Absolution "port". It's available at the get-go in EX and must be turned on from "Setup". No crouch - but what would be the point? There's a chasecam toggle if you want that extra survival horror punch. The mouse settings let you do all the fun things including mouselook but if you absolutely must then you'll want to look at another option in the next menu.

"Setup" has all the miscellaneous stuff like the jump toggle but also autoaim and - !WOW! - a use-context sensitive option. The last one highlights any map feature that's activated by the "use" key when you're within range. Very snazzy! The Rendering options let you control some interesting fringe stuff; the Skybox option is essential if you're using mouselook because Doom 64's skies were not meant for any vertical view shifting. You can also turn off the blur-to-red melt effect for reloads and transitions. The automap options have a handful of quality-of-life stuff from showing you where the keys are up front, color-coding locked doors, and allowing you to overlay the map as part of your HUD so that you can augment your own mental map with the game's.

The compatibility settings aren't as exhaustive as other source ports. ZDoom's is so big because it is trying to emulate version- and port-specific behavior. This way, levels that more or less rely on the relative limitations of their conception are functional. The others like prBoom+ and Eternity are concerned with demo compatibility. I doubt whether Doom64 EX will ever shoot for the latter. "Collision" appears to refer to the well-documented blockmap bug. It makes hitscan weapons less reliable so you might want to turn it back OFF. You're better off leaving the lost soul limit ON, though. Trust me. "Tall Actors" isn't a bug, just an engine limitation. It's a tool of the misguided who cite it when arguing that Doom isn't a truly 3D game since you can't run under flying monsters. In EX you can by default.

The audio options are pretty barebones. You can change sound or music volume and gain output. "Display" is all about your HUD options. Nothing gamebreaking but you can change the way information is presented or disable some of it entirely. The big benefit for freelookers is a crosshair toggle. "Video" covers all your fancy graphical effects and screen resolutions. The Nintendo 64's characteristic blur can be turned off by setting Filter to "Nearest" but the traditional scrolling skies look like hot garbage without it. Not so much in Skybox mode, though. This is also where you'll find the Gamma Correction setting in case you aren't playing in a pitch black room like the level designers were when they built it. I managed to do okay with the default, though.

If you still have your Doom 64 passwords scribbled down then good news! EX continues to support them in addition to saving and loading games. I used one of the ones from the DoomWiki out and it worked exactly as advertised. I haven't tried out "Network" and thus can't vouch for it but I hear that local coop is fairly reliable. "Region" is unimplemented but appears to be intended for those individuals who are interested in playing with the Japanese version's green blood, for instance. The more daunting aspect aims to support languages other than English for - according to the selection tooltip - HUD messages.

I like the functionality of the "Restart Level" option. It effectively reloads whatever map you're currently on and kits you out with a pistol start but you keep any demon keys that you've accrued. I used this to play each of the levels from scratch and while it was generally easier - which I would expect given that they were intended to be played with the Nintendo 64's controller - this was not always the case. For some reason it was causing EX to crash on certain situations while the Automap was up but as I went through the source port review I couldn't get it to happen again. Weird!

The Features menu is the fun times option unlocked through beating "Hectic". It's a more crunchy way to activate cheats and is the normal way to access MAP25, MAP26, and MAP27. The rest of the stuff is mundanities like God mode or max gunsnammo but you can also use it to heal yourself to full and "Lock Monsters". The frozen creatures can't even die once you've killed them, or at least until you've unlocked them. "Wall Blocking" is just a fancy phrase for clipping but setting this option ON lets you wander OFF the reservation. The last thing, Wireframe Mode, is an interesting utility - probably for debugging - but not exactly feasible for a normal playthrough. A masochist challenge mode, perhaps.

It's unfortunate that Doom64 EX isn't seeing a lot of active development but its community never really exploded to take advantage of its simultaneously impressive and select array of editing features. Looking at the care put into the base game by its designers, I wonder whether anyone besides Kaiser really understands just what madness that it's capable of. The improvements to lighting build on the colored sector gimmick of the PSX edition and turn it into a visual powerhouse. Scrolling floors are unsung components of the featureset but I don't know how versatile they originally were and the engine's scripting capability eliminates much of their utility. Not to say that this is a bad thing! Voodoo doll chicanery isn't necessarily intuitive and Midway's engine seems to be way more flexible - and powerful - in what it can do to the player's experience.

Plenty of folks have professed their love for the original Doom 64 but if you look at the ongoing sideshows then you'll see a lot of individuals reinventing the wheel or taking said wheel and running even farther. 2018 saw the release of freakin' Doom 64 in Doom II, a community re-enactment of the original set for vanilla of all things. When you look at the motivations of all these works then it becomes clear that convenience is the major barrier to modding for EX. The GZDoom projects can't hope to get the feel just right but absolute accuracy will always and forever be Kaiser's domain. The tradeoff is measured against:
  • Issues with EX stability. As far as I can remember I didn't have this happen during normal gameplay - which is the main beef of the author behind Doom 64: Retribution - but I can get it to crash reliably when trying to load certain save games in specific situations or doing similar things with the Restart Level function. In my experience these issues appeared to revolve around the secret and bonus levels and having the automap out.
  • No online multiplayer. EX doesn't support it whereas you can play the dueling GZDoom-sourced projects in Zandronum. The drive to epic co-op campaigns is another big motivator for Retribution's overall scope.
  • No gameplay modding. There are hundreds if not thousands of mods that GZDoom / Zandronum players have become accustomed to. Few of these folks would be satisfied with the current target of basic DECORATE support, anyway, which is more to provide some flexibility for players who - by being part of 64's target audience - already like their Doom a little weird.

Given that convenience appears to be the major barrier to EX's popularity, the recent unveiling of Beta 64 and now the development of Community Chest 64 come as a bit of a shock. It almost looks like Antnee's megaWAD may have been a wake-up call for Doom 64's slumbering fanbase. Hopefully they mobilize on this glut of enthusiasm and give it some much-deserved love. It would be great to see more appreciable development to squish bugs and support the extras featured in The Absolution and The Outcast Levels. And, of course, allow people to add their own. I'm not holding my breath, though, and I'm not going to pretend that it isn't an already impressive toolkit.

I highly recommend EX alongside playing Doom 64. I can't vouch for its stability on your current operation system but its portable installation package makes it very easy to setup. Having to run WADGEN.EXE rather than being able to run right off the ROM is slightly cumbersome but only has to be done a single time (at least, once per port release). It also looks like whatever approximates its current dev team is working toward closing that gap. It's more fun to poke around inside the resulting PWAD in SLADE3, anyway.

NOTE: You will need the actual game data from the Doom 64 cart in order to use Doom64 EX. It is not provided by its author in any way, shape, or form. You can get the Doom64 EX source port here.