Sign in to follow this  
Followers 0

Using DOOM1.WAD (Shareware Doom) as a resource PWAD ?

I want to spread some Doom love among my friends, as legally as possible (free WADs, not modifying Id Software stuff).

I'm OK with Freedoom, except I hate their troopers & sergeants.
One thing I want to do is using the Freedoom IWAD with the sprites & textures available in DOOM1.WAD, the shareware WAD.

It's easy to do it in the ZDoom family, and also in 3DGE, with the arguments : "-iwad doom2.wad -file DOOM1.WAD"

Chocolate Doom won't run the Freedoom IWAD, but a mix'n'match perfectly works when using another PWAD and the "-merge" argument, for example Alien Vendetta : "chocolate-doom.exe -iwad doom2.wad -merge DOOM1.WAD -file AV.WAD"

Is it possible to do something similar in PrBoom, Eternity and other source ports ?
ZDOOM is cool, but I'm just curious... (and I like Eternity and PrBoom)

Share this post


Link to post

Boom and its derivatives automatically do what the -merge switch does in Chocolate (it was one of the very first fixes introduced by Killough). Chocolate has that "behave exactly like doom.exe" clause in its contract, which would normally "forbid" it from doing the same, but the -merge switch was added anyway as a courtesy/convenience.

Share this post


Link to post

PrBoom-plus can not run the freedoom doom2.wad with DOOM1.WAD resources.
"glboom-plus -iwad doom2.wad -file DOOM1.WAD" just launches DOOM1.WAD, basically (and crashes).
The mix works with PWADs, though : "glboom-plus -iwad doom2.wad -file DOOM1.WAD AV.WAD" runs the Alien Vendetta PWAD, with DOOM1.WAD textures & sprites, and other textures from the Freedoom doom2.wad.

Eternity starts the Freedoom doom2.wad with DOOM1.WAD sprites & textures, as expected, but textures from doom2.wad are ignored...

Share this post


Link to post

ZDoom is the only port to ever implement cumulative texture lumps. That's why you will only get the doom1.wad textures.

You can be sneaky and edit the freedoom IWAD to rename TEXTURE1 into TEXTURE2, but PNAMES aren't cumulative either so the Freedoom textures will look very weird.

Share this post


Link to post
soner du said:

PrBoom-plus can not run the freedoom doom2.wad with DOOM1.WAD resources.
"glboom-plus -iwad doom2.wad -file DOOM1.WAD" just launches DOOM1.WAD, basically (and crashes).


That's because it "sees" two IWADs, and the IWAD priority mechanism selects DOOM1.WAD (I'm surprised that the -iwad switch doesn't get absolute priority, though, that's something that probably needs fixing). Try a "WAD gender changer" tool that switches the IWAD marker for PWAD.

@Gez: yeah, that's another sore point... so if you want to use DOOM1.WAD as a resource wad, you'll also need a "helper" PWAD with cumulative (precomputed) TEXTURE1/2 and PNAMES lumps. That is, if you want broad compatibility.

Share this post


Link to post
Gez said:

ZDoom is the only port to ever implement cumulative texture lumps. That's why you will only get the doom1.wad textures.


No. ReMooD also supports such things too, not only ZDoom. Therefor if one did `-iwad freedoom.wad -file doom1.wad av.wad` you would get the following precendence: AV, then DOOM1, then FREEDOOM.

So basically for sprites, textures, sounds, etc:
* The SSG, BFG, and Plasma are Freedoom, while the remaining guns are Doom (from DOOM1)
* Textures that do not exist in DOOM1 are using FREEDOOM textures instead.

A screenshot is easier:

Share this post


Link to post
Gez said:

ZDoom is the only port to ever implement cumulative texture lumps. That's why you will only get the doom1.wad textures.

No. Doomsday does this also.

Share this post


Link to post

There would be a problem using this with The Ultimate FreeDoom, but ReMooD can do per WAD level switching anyway.

Share this post


Link to post
Maes said:

That's because it "sees" two IWADs, and the IWAD priority mechanism selects DOOM1.WAD (I'm surprised that the -iwad switch doesn't get absolute priority, though, that's something that probably needs fixing). Try a "WAD gender changer" tool that switches the IWAD marker for PWAD.

Do you have a clue how/where to fix this in prboom-plus' code?

Share this post


Link to post
fabian said:

Do you have a clue how/where to fix this in prboom-plus' code?

To answer my own question, I have supplied the following patch to the corresponding bug [1] in prboom-plus' bug tracker on sourceforge:

--- a/src/w_wad.c
+++ b/src/w_wad.c
@@ -253,6 +253,12 @@ static void W_AddFile(wadfile_info_t *wa
         }
         strncpy (lump_p->name, fileinfo->name, 8);
 	lump_p->source = wadfile->src;                    // Ty 08/29/98
+
+        // IWAD file used as recource PWAD must not override TEXTURE1 or PNAMES
+        if (wadfile->src != source_iwad && !strncmp(header.identification,"IWAD",4) &&
+            (!strnicmp(fileinfo->name,"TEXTURE1",8) ||
+             !strnicmp(fileinfo->name,"PNAMES",6)))
+          strncpy (lump_p->name, "-IGNORE-", 8);
       }
 
     free(fileinfo2free);      // killough
It prevents IWADs that are not used as *the* current IWAD from overriding the current IWAD's TEXTURE1/2 and PNAMES lumps. I admit it is a bit hackish, but it works for the decribed use case: "prboom-plus -iwad freedoom.wad -file doom1.wad" works as expected. Furthermore, PWADs that supply their own TEXTURE1/2 lumps for a reason are still allowed to do so (but for additional IWADs this is usually wrong). It fails, however, for IWADs that declare themselves as PWADs like CHEX.WAD or DOOM.WAD and DOOM2.WAD from the Doom 3 BFG Edition.

A more clean solution would be to introduce the aforementioned cummulative TEXTURE and PNAMES lumps, but that is bexond the scope of my approach.

[1] http://sourceforge.net/tracker/?func=detail&aid=3603569&group_id=148658&atid=772946

Share this post


Link to post
soner du said:

The mix works with PWADs, though : "glboom-plus -iwad doom2.wad -file DOOM1.WAD AV.WAD" runs the Alien Vendetta PWAD, with DOOM1.WAD textures & sprites, and other textures from the Freedoom doom2.wad.

The reason why it worked with "-file doom1.wad av.wad" (in *that* order) should be that av.wad contains a TEXTURE1 lump based on doom2.wad's that re-overrides doom1.wad's one. However, in recent builds of prboom-plus it should work in any order.

Share this post


Link to post

Trying to mix Doom textures is a nightmare. And it's especially a problem if you try to use Doom 2 common texture packs with a Doom 1 pwad.

Share this post


Link to post
soner du said:

It's easy to do it in the ZDoom family, and also in 3DGE, with the arguments : "-iwad doom2.wad -file DOOM1.WAD"

It now works on the latest test version of prboom+.

2.5.1.4.test @ 2013-jul-06 15:36 :

  • Ability to use e.g. doom1.wad as a resource for a doom2 IWAD, e.g. freedoom (prboom-plus -iwad freedoom.wad -file doom1.wad), by Fabian Greffrath.

  • Good work, Fabian !

    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
    Sign in to follow this  
    Followers 0