Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Cire

Port with Doom Alpha/Beta support?

Recommended Posts

Is there any source port yet that has made any progress towards supporting running any of the pre-1.0/0.99 Doom IWAD's? The only thing I know of is that @kb1 said that KBDoom planned to do this once, don't know if it's still planned?

The press beta would probably be the simplest to implement support for. Not really sure what would be the best approach to do such a port either. Maybe fork an existing port like GZDoom since it seems to have some support for it. I Think there are two tasks to do to make it work, first would be to get it recognize the IWAD as such, and secondly add support for the beta Graphics format. I've read that GZDoom has better support for custom IWAD's nowadays too, and I remember that @Gez said he had some code to load the old patch format in ZDoom too I belive?

Share this post


Link to post

I'd love to see something like Calico that supports them exactly as they were, and then a port like Eternity support them with improvements.

Share this post


Link to post
Posted (edited)
On 4/3/2018 at 11:09 PM, Cire said:

Is there any source port yet that has made any progress towards supporting running any of the pre-1.0/0.99 Doom IWAD's? The only thing I know of is that @kb1 said that KBDoom planned to do this once, don't know if it's still planned?

Yes, I did a lot of work in this area, but so far, I fake it. With KBDoom, you have to load a custom wad (in normal release format). This wad contains fixed textures, sprites, and maps. In the code, I emulate the slow lifts of the beta, the funky bobbing of the alphas, the texture bug of the alphas, etc. In the alphas, I think if you wanted a long wall, you had to make a patch as long as the wall was. And if the wall was longer than the texture, the last column would be repeated. You can see this in the opening room with the cards, the chairs, and the 4 players. The large column shows this repeating last column bug. Thank goodness Carmack added repeating textures!

 

I had special things, like imps that disappear when you shoot them, and the alpha monsters with the funky colors that you can walk through. There are a few other things I emulate, like how the player just drops instantly when falling off a ledge, and a few others.

 

Unfortunately, my approach leaves a lot to be desired:

  • I'd like it much better if I could load the alpha/beta IWADs themselves, read the data out of them, and convert everything to modern format at runtime.
  • To do it properly requires disassembly of the executables, to get all the proper timings, etc. I empirically tweaked my stuff to look as close as possible to the old programs, but I could be off a tic or two.
  • It's a hell of a lot of work to do it properly, just for some maps that half-ass work. Still, it's neat to see the alphas at 1920x1080 resolution :)
  • I just don't have the time anymore to get in there and do it right :( I will get to it eventually - it's on my master to-do list (which is very very long).

 

Edited by kb1

Share this post


Link to post

Speaking of Calico, maybe do 3DODoom next? It's the other open source console Doom. Would be very interesting to see such a port

Share this post


Link to post

I was talking about running the IWADs directly though. Should be possible since their selfcontained. I think ZDoom is closest to support them. It reads most of the data, at least the press beta. Except dosen't recognize it as an IWAD and the beta patch graphics format

Share this post


Link to post


Most of the beta IWAD formats and structures are very close to the final release. However, the alphas are radically different. You have to make a lot of new functions to be able to read textures and patches, the very different map formats, etc. The best bet is to build a bunch of converters that "upgrade" the lumps as they are read, into release format.

 

Finally, there are different (but simple) behaviors with monsters, and objects in general, and in how the player moves. It's something I've been wanting to build for a long time. Unfortunately, it's a lot of work, for not too much payoff. The alphas are neat to look at and explore, once or twice, but it's not like there's 50,000 alpha-style WADs to play.

Share this post


Link to post

To be honest, this does sound more like something within the scope of Chocolate Doom. Being able to read the older data formats and play the press beta and alphas on modern systems.

Share this post


Link to post

I don't really see much value in simply simulating them, given the not playable part of them. Loading the data and having a look around the maps seems simple enough (though that's gonna be painful in release based code unless you have an integrated nodebuilder I imagine) A reverse engineering project would be interesting to really figure out how the Doom engine progressed over the years, as well as maybe learn some other interesting things in the process (I'm curious how far along AI is in 0.5, there's references in the file to the A_Look and A_Chase function, but no related functions like P_NewChaseDir, so no clue if its just a stub or not. interestingly A_Scream is also in there). But there's just not really been enough interest, it seems, aside from a fair amount of work on the press release beta.

Share this post


Link to post
Posted (edited)

Oh, there's interest. Time, on the other hand... Yep, you'd need the nodebuilder, or you'd have to build a new mini-engine for wall and object clipping, rendering, etc. The wall texture stuff is very different from version to version. As far as the AI goes, I'm not sure how far it was implemented, but it can be emulated by making monsters that can either be totally passed through while they do the 2-step, or monsters that simply disappear when shot.

 

Actually, I think it's ok to fake it with a special WAD file, because the resources and engine are totally fixed - no one is going to make an Alpha 0.4 map, for example (someone probably would.) I think Alpha 0.5 even tries to play a demo, but it goes out of sync.

 

At one time I had such a WAD, and I had all the things and behaviors setup to emulate Alpha 0.2, 0.4, 0.5 (didn't know about 0.3 then), and Beta. I had to add very minor additions to the source, to support the slow lift seen in the Beta map that became E1M2, and I had to emulate a wall renderer bug from the Alpha 0.4/0.5. Also, some bobbing changes, and instant player climb/dropoff.

 

So, why not fake it, at least until a full disassembly of the Alphas+Beta can be done? It's not like there's any demos to sync, and, other than perhaps the Beta, there's not much gameplay in the Alphas, except plain exploring. Who cares if the player is a bit faster, or if he jumps exactly right?

 

It would be neat to have the real thing, but it'd be a massive chore, for a rarely used oddity.

Edited by kb1

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×