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

Doom Classic (BFG edition) guide

Recommended Posts

So you are a hardcore Doom player who refuses to play source ports because they aren't "official" or because they dare to fix id's bugs, which you consider happy accidents? But you cry yourself to sleep most nights because you can't make out what you're shooting at in Dosbox or Choco Doom?

Why not use Doom Classic, the Doom version that is included in the Doom 3 BFG edition on PC? It has TRRRRRIPLE the resolution, can you handle 960x600 ??

**************************************************

MAKING DOOM CLASSIC A STANDALONE PORTABLE PORT

**************************************************

From your Doom 3 BFG edition installation folder start copying stuff to another folder, from the root folder you need:

binkw32.dll
Doom3BFG.exe
libfreespace.dll
steam_api.dll

And then create a folder named "base" and from your BFG's "base" folder copy over:

classicmusic
strings
wads
_common.resources
default.cfg
joy_360_0.cfg
joy_360_1.cfg
joy_lefty.cfg
joy_righty.cfg

Good, now it should work and you can uninstall the BFG edition.

**************************************************

LOADING IWADS AND PWADS

**************************************************

Note that in the base/wads folder there is the BFG editions of Ultimate Doom and Doom 2, along with NERVE.WAD. Suppose you want to play Plutonia on Doom Classic. Easiest way is to use Crispy Doom's -mergedump cmdline option with the BFG's edition IWAD. Like this:
crispy-doom.exe -iwad "C:\path\to\Doom Classic\base\wads\DOOM2.WAD" -file "c:\path\to\PLUTONIA.WAD" -mergedump output.wad

Now in Doom Classic's folder create a Plutonia folder, inside it create a "wads" folder and move output.wad from Crispy Doom's folder in there, but renaming it to DOOM2.WAD !!

Now create a shortcut to Doom Classic's exe and add this parameter to it:
+set fs_game Plutonia

Now with this shortcut you can run Plutonia instead of Doom 2.

Another example, with Back to Saturn X. Do the mergedump as before, create a BTSXE1 folder and a "wads" folder inside it and drop the wad in there, renamed as doom2.wad
Now create a shortcut with the added parameter +set fs_game BTSXE1

Now this shortcut launches BTSX instead of Doom 2. So you merge the appropriate BFG wad with your IWAD/PWAD and have a separate folder and shortcut for each "mod".

BTSX's awesome music doesn't work? Then read the next section!

**************************************************

MUSIC NOT PLAYING

**************************************************

It seems Doom Classic has some half-assed music support through mus2midi and plays only MUS files, not midis directly. That's what happened to me with BTSX Episode 1's songs at least. The way I solved it was:

First use SLADE to extract BTSX E1's midis to a folder. Then extract midi3mus there.
http://www.mediafire.com/download/5lifrcfcgp339oz/midi3mus.7z

Then run this command to convert them all to MUS format:
for /f %f in ('dir /b .') do midi3mus.exe %f

Then delete all the .mid files with del *.mid

Now use SLADE to edit the final wad we had created with -mergedump (the one that is the BFG edition of doom2.wad + btsx_e1.wad), search for the midis starting from the bottom to the top, delete them and import our MUS files in their place.


**************************************************

IMPROVING THE MUSIC

**************************************************

Classic Doom uses GUS patches, they are in base\classicmusic
Check out this video for instructions to replace those instruments with more faithful ones to SC-55. Basically you backup that classicmusic folder, then grab the Roland Sound Canvas GUS patches from here and throw them in the now empty classicmusic folder:
http://1drv.ms/1jqcXdJ
https://youtu.be/Cfaqn8Q3c1I



Bonus screenshots:

Spoiler


Spoiler


Share this post


Link to post

The only slight chance for the split screen to be enabled would be through forking the source of Doom 3 BFG, it includes the Doom Classic port.

(They have integrated Doom Classic in id Tech 4, it's using it as a hardware abstraction layer, input and rendering.)

Share this post


Link to post

Thanks for this guide, I tried this out before. The only thing I consider a con about this is that, even with the source code available, you have to actually buy BFG Edition and install Steam for this, even if only to play classic Doom. I've tried to somehow get this to work by using RBDoom-3-BFG together with a dummy default.cfg and the renderprogs from the source and other minimal base assets needed to launch the engine. I've come as far as being able to launch it and having a working console, but without having the Doom and Doom II boxart icons to click on I haven't been able to launch into Doom/Doom II-mode. I've been unable to find any command-line parameters or console commands that can do this. Is this only possible by modifying the source code?

Share this post


Link to post
VGA said:

Now create a shortcut to Doom Classic's exe and add this parameter to it:
+set fs_game Plutonia

Now with this shortcut you can run Plutonia instead of Doom 2.


Hey, that's a great idea, but does this bypass the game selection menu?



I still consider 640x400 to be the sweet spot though.

Share this post


Link to post

No, that does not bypass the selection, it's a cleaner way to load stuff instead of the original files. Otherwise you'd have to rename the doom2.wad and replace it with another. But if you load a folder/mod this way, the game searches for files first in that folder.

I think it's good that this has higher resolution than Doom Retro and Crispy Doom, more variety.

Share this post


Link to post

Is there any way to play the Doom Classic port without owning the BFG edition? Is the Doom Classic code even GPL?

Share this post


Link to post
Linguica said:

Is there any way to play the Doom Classic port without owning the BFG edition? Is the Doom Classic code even GPL?


The code is GPL and it even has some changes that would make it a kind of "post-vanilla" official Doom. Some of them are already adopted by some source ports.

Edit: after re-reading that old (but still goodie) thread, in the end I think it was fraggle who noticed the code was not exactly GPL, but rather, an amended GPLv3 license. However, it caused no problems, it seems.

Share this post


Link to post

Basically. It's probably possible to load the vanilla IWADs, and to fork Doom Classic to a standalone port (using SDL or whatever instead of id Tech 4).

Probably also possible to just make a simple menu system to load vanilla IWADs without owning BFG Edition. The OpenTechEngine folks would probably know about creating such content.

Share this post


Link to post
Linguica said:

So it's GPL, but it's impossible to use without owning the BFG Edition?

It's GPL but nobody's done anything with the source AFAIK

Share this post


Link to post

It is indeed possible to load alternate IWADs using the same command line parameters for more general mods.

fraggle said:

It's GPL but nobody's done anything with the source AFAIK

There was a fork that reimplemented Oculus Rift support on the Doom 3 side of things.

Share this post


Link to post
Sodaholic said:

It is indeed possible to load alternate IWADs using the same command line parameters for more general mods.


You mean by painstakingly merging mods in the main IWAD? Because AFAIK there's no standalone executable to pass any command line args to (which also makes testing for things like e.g. demo recording and playback impossible, even though the support is sorta-kinda there).

It's also kinda bullshit that they "upgraded" the codebase to a sort of weird "classless" C++, IMO. Not that there's any well-known platform which has a C but not a C++ compiler, but it really adds nothing in this case, and makes it just a tad harder to use the code files as a direct drop-in replacement in a fork of another port.

Share this post


Link to post
Maes said:

You mean by painstakingly merging mods in the main IWAD? Because AFAIK there's no standalone executable to pass any command line args to (which also makes testing for things like e.g. demo recording and playback impossible, even though the support is sorta-kinda there).

It's also kinda bullshit that they "upgraded" the codebase to a sort of weird "classless" C++, IMO. Not that there's any well-known platform which has a C but not a C++ compiler, but it really adds nothing in this case, and makes it just a tad harder to use the code files as a direct drop-in replacement in a fork of another port.

Yup it definitely wasn't necessary to have split screen multiplayer on the 360...

Share this post


Link to post

It's as light a touch port to C++ as necessary to integrate into the doom 3 runtime, which was already C++. But yeah, it's an icky codebase to work on, relative to a C-based Doom, imho.

Share this post


Link to post
Quasar said:

Yup it definitely wasn't necessary to have split screen multiplayer on the 360...


I'm not sure I understood this, could you elaborate? Was it necessary to "upgrade" the codebase to C++ in order for it to work on the 360, for some reason?

Share this post


Link to post
Maes said:

I'm not sure I understood this, could you elaborate? Was it necessary to "upgrade" the codebase to C++ in order for it to work on the 360, for some reason?

I guess it was a way to compartmentalize the code to be able to implement split screen functionality.

Share this post


Link to post
VGA said:

I guess it was a way to compartmentalize the code to be able to implement split screen functionality.


Kinda like the "screen renderer objects" I use in Mocha Doom, then? Though I don't remember the renderer in the BFG edition being encapsulated in its own object/class. I will go take a look.

Share this post


Link to post
Maes said:

Kinda like the "screen renderer objects" I use in Mocha Doom, then? Though I don't remember the renderer in the BFG edition being encapsulated in its own object/class. I will go take a look.

When running split-screen multiplayer, the Doom Classic game engine maintains four full copies of the Doom engine's internal state within a single process. The simplest way to do that was to move all the globals and state variables into a C++ class for RAII management of initialization and cleanup and encapsulation. You could do it with a C struct as well, though there'd be a tiny bit less automation.

There's almost no reason to NOT upgrade C programs to C++ though to be serious. Not doing so would complicate the interface to id Tech 4, as everything would have to be surrounded with extern "C" blocks wherever the id Tech 4 interface includes portions of the Classic code, and C++ objects from id Tech 4 would require extensive wrapping with proxy functions in order to be accessed from inside Doom Classic.

Share this post


Link to post
VGA said:

That is already known to people here and has been mentioned by Cire.

I think it was still worth a mention. Just because it's known to you and some other people doesn't mean to say it's known by everyone here.

Anyway, cheers for the guide I may get around to trying this out at sometime. I am unsure of what the advantages are in comparison to other ports, though.

Share this post


Link to post

I think it's the only way to have the vanilla engine with triple the resolution. And it switches between the games.

Also, it has some weird pitch changes, it sounds friggin' weird, dude.

It has achievements, too.

Share this post


Link to post

I'd love to see a splitscreen vanilla port.. Has anyone made any headway getting it to work on Windows?

Share this post


Link to post

Well, that's interesting and all...but why would anyone want to use this? The sound is wonky, the function keys don't work, and it's not really "vanilla with triple-resolution" because vanilla could never run No Rest for the Living. I guess it's cool that you got it working outside of BFG Edition, but aside from novelty value, I don't really see the point.

Share this post


Link to post

You think it's not vanilla because some limits were raised? Anyway, by all means, go ahead, don't use it. I'm not using it either and wouldn't recommend it to anyone.

Protip: The novelty value IS the point.

Share this post


Link to post
VGA said:

You think it's not vanilla because some limits were raised?

Yes. I wouldn't consider Doom+ vanilla, so this isn't vanilla either.

Share this post


Link to post
Megamur said:

I wouldn't consider Doom+ vanilla




Well at least you got to admit it's the newest official iD Doom engine. And let's not forget about the TTTRRRRRRIIIPPLLLEEE resolution!

Share this post


Link to post

It amazes me that a company can release an official port that actually downgrades a game from 1993 rather than enhancing it.

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
×