WadSmoosh - merge all official id releases into one PK3 IWAD

Any utility that assists in the creation of mods, assets, etc, go here. For example: Ultimate Doom Builder, Slade, WadSmoosh, Oblige, etc.
Forum rules
The Projects forums are ONLY for YOUR PROJECTS! If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.

Got a cool project idea but nothing else? Put it in the project ideas thread instead!

Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.

Please read the full rules for more details.
User avatar
Gutawer
Posts: 469
Joined: Sat Apr 16, 2016 6:01 am
Preferred Pronouns: She/Her

Re: WadSmoosh - merge all official id releases into one PK3

Post by Gutawer »

You know you can load GZDoom in software mode, right? Just add +vid_renderer 0 at the command line, and you won't need OpenGL.
User avatar
MrRumbleRoses
Posts: 331
Joined: Thu Feb 25, 2016 2:01 pm

Re: WadSmoosh - merge all official id releases into one PK3

Post by MrRumbleRoses »

Gutawer wrote:You know you can load GZDoom in software mode, right? Just add +vid_renderer 0 at the command line, and you won't need OpenGL.
yes i know that. i also know that they have the ability to choose in the game menu thing. but what i said still stands
User avatar
JPL
 
 
Posts: 523
Joined: Mon Apr 09, 2012 12:27 pm
Contact:

Re: WadSmoosh - merge all official id releases into one PK3

Post by JPL »

Regarding the AddOptionMenu crash in Zandronum, I've filed a bug with that project to at least ignore the line in MENUDEF instead of crashing on it: https://zandronum.com/tracker/view.php?id=3205 In the meantime until that's fixed on their end, like I said earlier Zandronum users can delete the MENUDEF.txt from your doom_complete.pk3 IWAD and it will run with no trouble.
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3141
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain
Contact:

Re: WadSmoosh - merge all official id releases into one PK3

Post by drfrag »

Adding AddOptionMenu was pretty easy, i did it recently for ZDoom32. I haven't tried WadSmoosh tough. You could point them to my repo, that could speed things up.

https://github.com/drfrag666/gzdoom/commits/zdoom32
Purity666
Posts: 16
Joined: Sun Apr 02, 2017 8:39 am

Re: WadSmoosh - merge all official id releases into one PK3

Post by Purity666 »

Good morning,

i plan to add the "tech gone bad" level as a secret level which could be reached by using a secret exit in e1m7. Unfortunately I don't know which linedef_id I should use to add the switch. Could anyone give me a short advise/hint which id i should use for this? -> add_secret_exit('E1M7', ???)

Thanks a lot and regards,
Purity
Gez
 
 
Posts: 17833
Joined: Fri Jul 06, 2007 3:22 pm

Re: WadSmoosh - merge all official id releases into one PK3

Post by Gez »

You'll want to read about [wiki]MAPINFO[/wiki]. To add a secret exit to E1M7, you'll need to edit E1M7's definition. But that's just for the game logic part -- you'll also need to add a secret exit to the E1M7 map itself, and for that you'll need to use a map editor...
Purity666
Posts: 16
Joined: Sun Apr 02, 2017 8:39 am

Re: WadSmoosh - merge all official id releases into one PK3

Post by Purity666 »

hm, ok I see. I've already edited the doom1_levels.txt file in the res\mapinfo folder of wadsoosh. I thought it would be as easy as adding the xbox levels to the doom1 and doom2 episodes. How did it work there without editing the levels for them?
Gez
 
 
Posts: 17833
Joined: Fri Jul 06, 2007 3:22 pm

Re: WadSmoosh - merge all official id releases into one PK3

Post by Gez »

The levels with the added secret exits were actually edited by the Xbox developers.
Purity666
Posts: 16
Joined: Sun Apr 02, 2017 8:39 am

Re: WadSmoosh - merge all official id releases into one PK3

Post by Purity666 »

perhaps I got it completely wrong but as far as I understood it works slightly different. If I read the python code right, then wadsmoosh patchs the pc doom.wad file by adding a secret exit to e1m1 so that the xbox level sewers starts. So the e1m1 was not patched by the xbox team (so there should be no secret exit in the pc doom e1m1) as it is part of the pc doom - only the xbox level is added. I thought it might be possible to patch another pc doom level (in this case e1m7) to add also there a secret exit so that the alternate e1m8 (tech gone bad) will be started.
Gez
 
 
Posts: 17833
Joined: Fri Jul 06, 2007 3:22 pm

Re: WadSmoosh - merge all official id releases into one PK3

Post by Gez »

Well then, yes I suppose you could hardcode a patch similarly. You'd still need to open the map in a map editor to find a suitable place and note the linedef number.
Purity666
Posts: 16
Joined: Sun Apr 02, 2017 8:39 am

Re: WadSmoosh - merge all official id releases into one PK3

Post by Purity666 »

ok, great. So now we are back to my initial question: has anyone a suggestion, where to place this secret exit - perhaps in one of the secret areas of the map?
Spoiler:
User avatar
JPL
 
 
Posts: 523
Joined: Mon Apr 09, 2012 12:27 pm
Contact:

Re: WadSmoosh - merge all official id releases into one PK3

Post by JPL »

Purity666 wrote:ok, great. So now we are back to my initial question: has anyone a suggestion, where to place this secret exit - perhaps in one of the secret areas of the map?
Spoiler:
If you're going for the same level of obscurity of the XBox Doom secret exits, it hardly matters where you put it; switches without a switch texture are never going to be found by someone who doesn't already know they're there.

Line #510, right behind the secret automap powerup, is a decent switch-sized secret wall. The large outdoor area in the southeast is a secret and has plenty of space for a switch, but none of the lines (eg #921) are easy switch candidates.
Purity666
Posts: 16
Joined: Sun Apr 02, 2017 8:39 am

Re: WadSmoosh - merge all official id releases into one PK3

Post by Purity666 »

Success!

I've added a new funtion to the wadsmoosh.py script to add the exit and level to the wad. While compiling an executable using pyInstaller, I found out that omgifol wasn't compatible anymore to python 3.6 - the MD5 class is not supported anymore hence I had to update omgifol as well.
If you're going for the same level of obscurity of the XBox Doom secret exits, it hardly matters where you put it; switches without a switch texture are never going to be found by someone who doesn't already know they're there.
Right, that makes no sense. So I played around a bit with omgifol (as I was curious in it anyway) and extended your add_secret_exit function to also add a switch texture (which should fit to the base texture used before adding the switch):

Code: Select all

def add_secret_exit(map_name, line_id, side_id='', side_texture=''):
    # sets given line # in given map as a secret exit switch
    wad = omg.WAD()
    wad_filename = DEST_DIR + 'maps/%s.wad' % map_name
    wad.from_file(wad_filename)
    ed = omg.MapEditor(wad.maps[map_name])
    ed.linedefs[line_id].__dict__['action'] = 51
    if side_id != '':
    		ed.sidedefs[side_id].__dict__['tx_mid'] = side_texture
    wad.maps[map_name] = ed.to_lumps()
    wad.to_file(wad_filename)
So the procedure for adding the level and switch looks like this for now:

Code: Select all

def add_tech_level():
    logg('Adding tech gone bad bonus level...')
    logg('  Adding secret exit and switch SW1STARG to E1M7')
    add_secret_exit('E1M7', 721, 908, 'SW1STARG') #STARG3
    logg('  Adding e1m8b.wad as E1M11')
    add_secret_level('e1m8b', 'E1M8', 'E1M11')

Code: Select all

    # only supported version of thihs @ https://www.doomworld.com/idgames/levels/doom/Ports/d-f/e1m8b
    if get_wad_filename('e1m8b') and should_extract:
        add_tech_level()
...and while I was adding the texture for E1M7, I did the same for the Xbox maps:

Code: Select all

Adding Xbox bonus levels...
  Adding secret exit and switch SW1STARG to E1M1
  Adding SEWERS.WAD as E1M10
  Adding secret exit and switch SW1STONE to MAP02
  Adding BETRAY.WAD as MAP33
Adding tech gone bad bonus level...
  Adding secret exit and switch SW1STARG to E1M7
  Adding e1m8b.wad as E1M11
Creating doom_complete.pk3...
I'm quite happy with the result, especially because I used python, pyInstaller and omgifol for the first time...

Greetings
Purity
User avatar
JPL
 
 
Posts: 523
Joined: Mon Apr 09, 2012 12:27 pm
Contact:

Re: WadSmoosh - merge all official id releases into one PK3

Post by JPL »

Nice! Glad it was a good learning experience.
Purity666
Posts: 16
Joined: Sun Apr 02, 2017 8:39 am

Re: WadSmoosh - merge all official id releases into one PK3

Post by Purity666 »

Hey guys,

while updating Skymarshalls script to JPLs latest codebase, no texture replacement within the maps itself but replacing them during the loading of the map via ACS scripts, I've got some strange problems I don't really understand. Here is an example which occurs on different maps of different wads:

I've merged TNT:Revilution and this line is part of the patches_tntr file which is used by wadsmoosh to extract and rename the patch lumps:

Code: Select all

.
.
.
//Renamed from COMPRED2 to TRCPRED2 to avoid conflict with another WAD
COMPRED2 : TRCPRED2
.
.
.
In the corresponding texture.tntr file, which is placed in the root of the pk3, I've added the following texture configuration entry:

Code: Select all

.
.
.
//Renamed from COMPRED2 to TRCPRED2 to avoid conflict with another WAD
Texture "TRCPRED2", 128, 128
{
	Patch "TRCPRED2", 0, 0
}
.
.
.
I've also added an ACS file for this wad called ws_scripts_tntr.acs. It's linked in ws_fixes.acs via #include. This file contains the "replacement array" for the textures:

Code: Select all

#define TR_TEX_REPLACEMENTS 187
int TR_TEX[TR_TEX_REPLACEMENTS][2] = {
	.
	.
	.
	{ "COMPRED2", "TRCPRED2" },
	.
	.
	.
}
Replacement procedure in ws_fixes.acs:

Code: Select all

.
.
.
		else if ( StrIcmp(s, "tr") == 0 )
		{
			for (i = 0; i < TR_TEX_REPLACEMENTS; i++)
			{
				ReplaceTextures(TR_TEX[i][0], TR_TEX[i][1]);
				log(s:"replaced ", s:TR_TEX[i][0], s:" by ", s:TR_TEX[i][1]);
			}
		}
.
.
.
So if I got it all right, then the texture COMPRED2 should be renamed to TRCPRED2 when a map is loaded.

Unfortuntately this does not work for me. The array above contains 187 replacement entries but for some of them, the replace-process via ACS seems not to work, when a map is loaded.

This is the output when a map is loaded:
tr_map12 - Transduction

Unknown middle texture 'COMPRED2' on first side of linedef 1681
Unknown middle texture 'COMPRED2' on first side of linedef 1993
Unknown middle texture 'COMPRED2' on first side of linedef 2041
Unknown middle texture 'COMPRED2' on first side of linedef 2061
Unknown middle texture 'COMPRED2' on first side of linedef 2090
Unknown middle texture 'COMPRED2' on first side of linedef 2096
Unknown middle texture 'COMPRED2' on first side of linedef 2110
Unknown middle texture 'COMPRED2' on first side of linedef 2115
Unknown bottom texture 'COMPRED2' on second side of linedef 2128
Unknown middle texture 'COMPRED2' on first side of linedef 2241
Unknown top texture 'COMPRED2' on first side of linedef 2439
Unknown bottom texture 'COMPRED2' on first side of linedef 2439
Unknown middle texture 'COMPRED2' on first side of linedef 2451
Unknown middle texture 'COMPRED2' on first side of linedef 2452
Unknown bottom texture 'COMPRED2' on second side of linedef 2509
Unknown middle texture 'COMPRED2' on first side of linedef 3251
Unknown top texture 'COMPRED2' on first side of linedef 3251
Unknown bottom texture 'COMPRED2' on first side of linedef 3251
Unknown middle texture 'COMPRED2' on first side of linedef 3653
Unknown middle texture 'COMPRED2' on first side of linedef 3658
Missing texture 'COMPRED2' is used 170 more times
replaced AASHITTY by TRAASHTY
replaced BFALL1 by TRBFALL1
replaced BFALL2 by TRBFALL2
replaced BFALL3 by TRBFALL3
replaced BFALL4 by TRBFALL4
replaced BIGDOOR1 by TRBIGDR1
replaced BIGDOOR7 by TRBIGDR7
replaced BIGMURAL by TRBIGMRL
replaced BIGWALL by TRBIGWL
replaced BLODGR1 by TRBLDGR1
replaced BLODGR4 by TRBLDGR4
Unknown texture: "BLUEWALL"
Unknown texture: "BLUEWALL"
replaced BLUEWALL by TRBLUEWL
replaced BRNPOIS by TRBRNPOS
replaced BRNSMAL1 by TRBRSML1
replaced BRNSMAL2 by TRBRSML2
replaced BRNSMALL by TRBRSMLL
replaced BRNSMALR by TRBRSMLR
replaced BROWN96 by TRBRWN96
replaced BROWN96T by TRBRWN96
replaced CAVERN6 by TRCAVRN6
replaced CAVERN7 by TRCAVRN7
replaced COMPBLUE by TRCMPBLU
Unknown texture: "COMPGRN2"
Unknown texture: "COMPGRN2"
replaced COMPGRN2 by TRCPGRN2
Unknown texture: "COMPRED2" <---
Unknown texture: "COMPRED2" <---
replaced COMPRED2 by TRCPRED2 <--- replacement takes place after the errors occure?!
replaced COMPSTA1 by TRCMPST1
replaced COMPSTA2 by TRCMPST2
.
.
.
As you can see, most textures get renamed and replaced fine, but some replacements seem to take place too late. Does anyone know why this happens or how to avoid these problems?

The map itself looks fine ingame - the (replaced) texture is visible at the walls where it is used...

Thanks in advance and regards,
Purity
Post Reply

Return to “Creation, Conversion, and Editing”