Jump to content

[GZDoom] DOOM CE: PSX TC & D64 Retribution, overhauled


Recommended Posts

4 hours ago, Omega Tyrant said:

I tried this and unfortunately the Revenant will still only fire homing missiles.

 

This is the line that makes it only fire seeker missiles:

if (level.maptime & 4)    return;

By commenting out that whole method, it will use the original A_Tracer in gzdoom.pk3, which has the PC check that will make it alternate between seeker and non-seeker behavior:

if (level.maptime & 3)    return;

Commenting out the method works on my side. It doesn't make sense that it would only fire homing missiles. Perhaps you have incorrectly changed other things. Use what is inside gzdoom.pk3 as a reference for other changes.

Share this post


Link to post
4 hours ago, molecicco said:

 

This is the line that makes it only fire seeker missiles:


if (level.maptime & 4)    return;

By commenting out that whole method, it will use the original A_Tracer in gzdoom.pk3, which has the PC check that will make it alternate between seeker and non-seeker behavior:


if (level.maptime & 3)    return;

Commenting out the method works on my side. It doesn't make sense that it would only fire homing missiles. Perhaps you have incorrectly changed other things. Use what is inside gzdoom.pk3 as a reference for other changes.

I copied over the default Revenant PSXCE data and then tried this to make sure nothing else was changed, and after thorough testing I noticed a strange result, where it would either just shoot homing missiles, or it would alternate between fast missiles and slow missiles, with neither homing, and which "mode" it spawned in seems random, while making the Revenant enter its pain state can make it switch between the two behaviors. I haven't touched anything else in the PSXCE pk3 nor have I touched the GZDoom pk3, so I'm not sure what the problem is on my end. Thanks for the help though.

Share this post


Link to post

It’s because the seeker spawn login relies on the game timer. If you want it to be truly random you could change the “time & 3” validation to use a random function, but that’s not how the original worked. If you leave it commented out, you will also need to copy the frame timings from gzdoom.pk3. Here is a better explanation: https://zdoom.org/wiki/A_Tracer

Edited by molecicco

Share this post


Link to post

I got PSXDOOM.CE-3.1.2 today, and I haven't found a way to make the in game textures show any of the texture encancements, except for linear, bilinear and trilinear. I'm trying to get 6xBRZ to work in text and ingame textures and sprites, but only the text changes to 6xBRZ.

Doom CE No BRZ textures.png

Edited by ConvexCornet

Share this post


Link to post
2 hours ago, ConvexCornet said:

I got PSXDOOM.CE-3.1.2 today, and I haven't found a way to make the in game textures show any of the texture encancements, except for linear, bilinear and trilinear. I'm trying to get 6xBRZ to work in text and ingame textures and sprites, but only the text changes to 6xBRZ.

 

 

You're loading the upscaled textures addon, and as far as I know gzdoom doesn't apply those filters to high res texture replacements. If you really want to use xBRZ filtering, you will need to remove the upscales. It would use too much memory anyway.

 

Ref: https://forum.zdoom.org/viewtopic.php?f=50&t=63754

Edited by molecicco

Share this post


Link to post
23 hours ago, molecicco said:

 

You're loading the upscaled textures addon, and as far as I know gzdoom doesn't apply those filters to high res texture replacements. If you really want to use xBRZ filtering, you will need to remove the upscales. It would use too much memory anyway.

 

Ref: https://forum.zdoom.org/viewtopic.php?f=50&t=63754

 

Thanks. I removed the PSXDOOM.CE.Addon.GFX.Upscale file, and it's ok now.I hope in the near future 6xBRZ will be doable on the high res textures.

Share this post


Link to post

So I completed the Ultimate Doom episode and everything was running fine for me, but upon starting SIGIL, the FPS suddenly tanked to sub-20. I was confused on why the FPS was suddenly so bad and tinkering around with the graphic and display settings didn't seem to change much, but then I found just turning off world ambient sounds brought the FPS back up to 60. Guess SIGIL maps have too much lava for weak CPUs to handle world ambient sounds? Anyway just posting about this so if anyone else also encounters an FPS drop in SIGIL, they'll know how to fix it.

Edited by Omega Tyrant

Share this post


Link to post
5 hours ago, Omega Tyrant said:

So I completed the Ultimate Doom episode and everything was running fine for me, but upon starting SIGIL, the FPS suddenly tanked to sub-20. I was confused on why the FPS was suddenly so bad and tinkering around with the graphic and display settings didn't seem to change much, but then I found just turning off world ambient sounds brought the FPS back up to 60. Guess SIGIL maps have too much lava for weak CPUs to handle world ambient sounds? Anyway just posting about this so if anyone else also encounters an FPS drop in SIGIL, they'll know how to fix it.


I haven't played Sigil in CE but I did notice it in Beta 64 with large water maps. Apparently there are "thinkers" which get added to liquid surfaces to add liquid sounds. The larger the surface the more "thinkers" that get added and the bigger the chance for a frame drop. So ya your solution is the way to go for this issue I think!

Share this post


Link to post

I've released version 3.1.3 in ModDB. It addresses the last remaining bugs I had in my backlog, so there likely won't be another update until GZDoom 4.8.0 comes out (unless people report something critical). I might publish some additional level pack addons in between, though.

Share this post


Link to post
1 hour ago, ludicrous_peridot said:

Great news. Would you mind explaining which pk3 need to be re-downloaded?


If you’re upgrading from a previous 3.x release, just grab the Lite version and copy the ipk3s, those are the only files that have changed. If you’re upgrading from something earlier than that it’s better if you just overwrite everything with the latest.

 

The level pack addons are harder to track, but you can check the update date on ModDB and redownload it if it’s newer than what you have. (EDIT: Specifically for 3.1.3, the only updated mapset is the Rumble Pak).

Edited by molecicco

Share this post


Link to post

I've been using this more and more recently, it's a pretty cool way to play some of the PS or N64 themed wads like Beta64 or Fall of Triton. I've been wondering about the extended edition soundtracks and how they work, do they interact at all with those add-ons, or are the extra tracks only ever used if playing the base games in the full version?

Share this post


Link to post
2 hours ago, brick said:

I've been using this more and more recently, it's a pretty cool way to play some of the PS or N64 themed wads like Beta64 or Fall of Triton. I've been wondering about the extended edition soundtracks and how they work, do they interact at all with those add-ons, or are the extra tracks only ever used if playing the base games in the full version?

 

You will hear the extended version of the track that is assigned to the map, but the bonus tracks won't be used. I didn't want to take liberties that could go against the vision of the original authors of those mapsets.

Share this post


Link to post
8 minutes ago, molecicco said:

You will hear the extended version of the track that is assigned to the map, but the bonus tracks won't be used. I didn't want to take liberties that could go against the vision of the original authors of those mapsets.

Thank you for clarifying! That makes a lot of sense.

And thank you for all the work you've put into CE, and into making it so customizable.

Share this post


Link to post

Excellent work as usual.

 

I've been away a while, so I was wondering what happened to some of the "missing d64 monsters" threads around here?  Has anyone attempted to make a proper d64 revenant or archvile?  Would be a super cool addition to this mod.

Share this post


Link to post
42 minutes ago, Antnee said:

Excellent work as usual.

 

I've been away a while, so I was wondering what happened to some of the "missing d64 monsters" threads around here?  Has anyone attempted to make a proper d64 revenant or archvile?  Would be a super cool addition to this mod.


DrPyspy finished the Revenant and Archvile! (https://forum.zdoom.org/viewtopic.php?f=37&t=68009) And they are in CE now :D

Share this post


Link to post

whoaaaa super cool!!  Chaingunner too?  I suppose that would be easy enough to mod in if it's not already in.

 

I've been getting the hankering to start mapping again- I think I want to go full tilt using CE to make another beta64 style megawad, but this time taking advantage of the look and feel of the enhanced graphics.

 

Probably gonna need to pick your brain if that's alright!

Share this post


Link to post

First issue I ran into was just trying to load the resources into Ultimate Doom builder.  This is my configurations page.  It spits hundreds of errors right off the bat, so I must be doing something wrong!

 

image.png.3779f3072cb8d242d936b38d7dddaa0d.png

 

Share this post


Link to post
1 hour ago, Immorpher said:


DrPyspy finished the Revenant and Archvile! (https://forum.zdoom.org/viewtopic.php?f=37&t=68009) And they are in CE now :D

 

Whoa, the Arch-vile is out? I don't have that one in the mod yet.

 

EDIT: Seems like it's not finished yet, all I could find was the teaser

 

16 minutes ago, Antnee said:

First issue I ran into was just trying to load the resources into Ultimate Doom builder.  This is my configurations page.  It spits hundreds of errors right off the bat, so I must be doing something wrong!

 

 

Are you using version 3.1.3 of the mod? The pk3 named "DOOM64.CE.Base" was removed a while ago. If you've upgraded from a really old version, just delete that file and make sure to generate the doom64.iwad again because I made some changes to it (or just start over in a clean installation to save the trouble).

 

This is how I have my UDB set up:

 

image.png.4f683bdef0e0dc39f258b522740843f1.png

 

There's 8 warnings, but those can be safely ignored.

Edited by molecicco

Share this post


Link to post

I bet this is something really silly on my part.  I re-downloaded, reinstalled, and these are my resources

 

image.png.006419e9e7833a62afd63a2a7ab62b41.png

 

It still shoots almost two hundred errors.  For example:

 

image.png.4e676c4ddeeed1efcbbf47699e6cbe29.png

 

image.png.3e58cfb68bb9cdb8c02b55bd45c46342.png

Share this post


Link to post
1 minute ago, Antnee said:

It still shoots almost two hundred errors.  For example:

 

Try moving gzdoom.pk3 to the top of the load order (like in my screenshot).

Share this post


Link to post

ah HA!  THAT did the trick!  8 minor errors, just like you said.

 

image.png.5ddc7ead41a0cec8c0bccc2d573f8b2f.png

 

So how hard would it be to whip up a "blank" map project for D64CE?  There's lots of Pk3s in your map pack, and I'm unfamiliar with how that all fits together.  What should I do?

 

 

Thanks for the lightning fast replies BTW

Share this post


Link to post
1 hour ago, Antnee said:

So how hard would it be to whip up a "blank" map project for D64CE?  There's lots of Pk3s in your map pack, and I'm unfamiliar with how that all fits together.  What should I do?

 

The other pk3s are addons that contain optional stuff like the hi-res versions of the textures, PBR materials and brightmaps. You don't need to load them in Doom Builder. I usually create them at the end, when I've finished with the maps (I can help you with that later). They are only needed if you add new textures or if you use composite textures so that they don't clash with other textures that already have them.

 

For a mapping reference I suggest you look at maps 01 to 34 which are  based on Doom 64: Retribution and are UDMF-native. The other map packs use a very esoteric "framework" that I created to automate the conversion of maps in Doom 64 format to UDMF, and there's a lot of undocumented stuff in them that may confuse you.

 

If you #import ungec.acs, there are some ACS functions that could be useful if you are used to some of the unique Doom 64 actions:

//====helper scripts (invoke using ACS_NamedExecuteAlways("Script Name", arg0, arg1, ...);)

//copies the gradient lights from a sector with tag <TagSrc> to sectors with tag <TagDest>
script "Sector_CopyLights" (int TagDest, int TagSrc)

//copies the textures from a sector with tag <TagSrc> to sectors with tag <TagDest>
script "Sector_CopyTextures" (int TagDest, int TagSrc)

//copies the gradient lights from a sector with tag <TagSrc> to sectors with tag <TagDest>, interpolating the colors over time
script "Sector_CopyLightsAndInterpolate" (int TagDest, int TagSrc)

//copies the flags from a line with tag <TagSrc> to lines with tag <TagDest>
script "Sector_CopyFlags" (int TagDest, int TagSrc)

//copies the actions from a sector with tag <TagSrc> to sectors with tag <TagDest>
script "Sector_CopySpecials" (int TagDest, int TagSrc)

//execute the line action of a random line tagged <Tag>
script "LineRandom" (int tag)

//copies the action from a line with tag <TagSrc> to lines with tag <TagDest>
script "Line_CopySpecials" (int TagDest, int TagSrc)

//copies flags from a line with tag <TagSrc> to lines with tag <TagDest>
script "Line_CopyFlags" (int TagDest, int TagSrc)

//copies textures from a line with tag <TagSrc> to lines with tag <TagDest>
script "Line_CopyTextures" (int TagDest, int TagSrc)

//when all monsters with tag <Tag> are dead, executes the line with the same tag. <Flag> must always be the number 16384. Useful when assigned as a Thing Action.
script "A_OnDeathTrigger" (int tag, int flag)

//executes a line with tag <Tag>. Useful when assigned as Thing Action.
script "TouchTrigger" (int tag)

//====helper functions (directly invoked)

//spawns a thing with spawn num <SpawnID> at map spot with <SpotTID>, and assigns tid <NewTID> to it (uses an unique tid if 0).
function void Thing_FadeSpawn (int spotTID, int spawnID, int newTID)

//dissolves a thing with tid <ThingID>. If <KeepThing> is 1, it can be spawned again using Thing_FadeIn. If 0, it will be completely removed.
function void Thing_FadeOut (int thingID, int keepThing)

//materializes a thing with tid <Tid>, usually one previously dissolved by Thing_FadeOut
function void Thing_FadeIn (int tid)

I've quickly cobbled up a "starter" pk3 that should have the bare minimum you need to start: https://drive.google.com/file/d/1L1MSbhzlpI_SKQdue5jAko_i0MrNVRq3/view?usp=sharing

 

Edited by molecicco

Share this post


Link to post

Ah thanks, that PK3 you uploaded is a great start.  Been tinkering with it some this morning.  Managed to load a map in there, edit the mapinfo, etc.

 

Now, I remember when GEC first hit the scene, I started making some modifications, and clearly the structure of the mod has changed.  For example, one of the main things I wanted to do was to create an alternate Unmaker which uses it's own pool of ammo (instead of using plasma cells).

 

Ooh, ahh, custom unmaker ammo with fancy evil heartbeat

 

Looking through my old project files, I made an "unmakerammo.wad" that had a decorate file in it, which basically had the entire list of custom actors.  This is my entry:

 

Quote

ACTOR 64Unmaker2 : DoomWeapon 9903
{
    //$Color 14
    //$NotAngled
    //$Sprite LGUNA0
    //$Category Doom64Things
    Game Doom
    SpawnID 189
    Radius 20
    Height 20
    Weapon.SelectionOrder 2900
    Weapon.SlotNumber 8
    Weapon.AmmoUse 1
    Weapon.AmmoGive 40
    Weapon.AmmoType "UnmakerAmmo"
    Inventory.PickupMessage "$GOTLASER"
    Inventory.PickupSound "misc/w_pkup"
    AttackSound "Null"
    Inventory.Icon "LGUNA0"
    Tag "$TAG_LASER"
    -WEAPON.NOAUTOFIRE
    +DONTGIB

 

And the Ammo

 

Quote

/* --- UNMAKERAMMO */
ACTOR UnmakerAmmo : Ammo 9091
{
    //$NotAngled
    //$Sprite UNANA0
    //$Category Doom64Things
    Inventory.PickupMessage "Picked up Unmaker charges"
    Inventory.Amount 10
    Inventory.MaxAmount 150
    Ammo.BackpackAmount  10
    Ammo.BackpackMaxAmount 300
States
        {
        Spawn:
    UNAN A 3
    UNAN B 5
    UNAN C 10
    UNAN B 5
    Loop
        }
}

ACTOR BigUnmakerAmmo : UnmakerAmmo 9090
{
    //$NotAngled
    //$Sprite UNAMA0
    //$Category Doom64Things
    Inventory.PickupMessage "Picked up Unmaker charges"
    Inventory.Amount 30
    Inventory.MaxAmount 150
    Ammo.BackpackAmount  30
    Ammo.BackpackMaxAmount 300
States
        {
        Spawn:
    UNAM A 3
    UNAM B 5
    UNAM C 10
    UNAM B 5
    Loop
        }
}

 

I also wanted to add a SuperShotgunGuy and a few other misc things.  So I guess what I'm getting at is:  What would be the best way to do custom actors so that I'm not causing any conflicts, and that my custom pk3 megawad is future-proof (meaning, any changes I make will seamlessly integrate into your future updates)?

 

 

Share this post


Link to post
On dimanche 15 mai 2022 at 11:31 PM, molecicco said:

It’s because the seeker spawn login relies on the game timer. If you want it to be truly random you could change the “time & 3” validation to use a random function, but that’s not how the original worked. If you leave it commented out, you will also need to copy the frame timings from gzdoom.pk3. Here is a better explanation: https://zdoom.org/wiki/A_Tracer

 

To explain things in detail:

 

& is the bitwise operator. When you do

time & 3

what it does is that it takes the value from time, and the value 3 (which in binary is written 11) and the result is a value where every bit is 1 if it is 1 in both 3 and time, and 0 otherwise. Meaning there are only four possible values, namely: 00, 01, 10, 11; or 0, 1, 2, and 3 in decimal notation. Then there's an "if" evaluation on this result, and so any value except 0 will be true.

With

time & 4

it's the same principle, except the binary notation of 4 is 100. So there are only two possible values, 100 and 000. By definition, the two lower bits that are 0 in 4 cannot become 1 in the & operation, since they're 0 on at least one side of the operation.

Share this post


Link to post

Alright, after a day of tinkering I've figured out a bunch of stuff.  Got a custom SuperShotgun Guy and Unmaker with custom Unmaker Ammo, all with proper zscript files instead of DECORATE.  SuperShotgunGuy doesn't seem to use the updated D64shotgunguy sprites despite me pointing each frame to the SPOS/SSGY/SPO2 frames, which is odd.

 

Got the unGEC.ACS library imported so I can live in my comfortable D64ex-style scripting.  Good stuff.

 

One thing I have not been able to figure out:  How are you telling the engine which skies to use for each level?  I looked through my Beta64.pk3, and it seems when it was converted it migrated all the skies to F_SKY1.  But I can't for the life of me figure out where the definitions are?

Share this post


Link to post

Short question, just trying to figure out a little. I've seen there are Corruption Cards and Complex Doom mods supported. Things with first one is more/less clear, but what about Complex Doom? How it's affect on overall gameplay in case, well, monsters there is a quite different in compare? Or it's reather partly supported?

Edited by UnknDoomer

Share this post


Link to post
11 hours ago, Antnee said:

Alright, after a day of tinkering I've figured out a bunch of stuff.  Got a custom SuperShotgun Guy and Unmaker with custom Unmaker Ammo, all with proper zscript files instead of DECORATE.  SuperShotgunGuy doesn't seem to use the updated D64shotgunguy sprites despite me pointing each frame to the SPOS/SSGY/SPO2 frames, which is odd.

 

You can use the actor definitions inside the ipk3 as reference. To make the Unmaker use different ammo, I'd inherit from D64LaserRifle and change its AmmoType actor property. For the SuperShotgunguy, you could inherit from D64Actor and use one of the zombies in possessed.zsc as a template (my shotgunguy is a little messy because it uses three sets of sprites though).

 

11 hours ago, Antnee said:

One thing I have not been able to figure out:  How are you telling the engine which skies to use for each level?  I looked through my Beta64.pk3, and it seems when it was converted it migrated all the skies to F_SKY1.  But I can't for the life of me figure out where the definitions are?

 

 

The skies are using a SkyViewPoint thing placed inside a skybox sector (look for a large square sector outside the map bounds).

 

For clouds, the ipk3 includes cloud textures that are stretched and colored the same way as the ones in the iwad. They follow a similar naming scheme to the skies defined in SKYDEFS (for example, using texture CLOUD_SA is analogous to the clouds in F_SKYA, CLOUD_SB is to F_SKYB, etc). Check something like map10 to see how they're set up inside the skybox.

 

You can also create custom colored clouds in a clunkier but similar way to SKYDEFS. In GLDEFS, you can create a material texture definition like this:

 

This is what I have in the ipk3 for CLOUD_SA, but you could do something similar for new clouds, like CLOUD_SZ.

material texture "CLOUD_SA" //texture name
{
	shader "shaders/64.fp" //always required
	define CLOUD //always required
	define BASE_COLOR = "0xB0, 0x80, 0xFF" //same as skydefs, base cloud color
	define HIGH_COLOR = "0x00, 0x00, 0x00" //same as skydefs, top color
	define LOW_COLOR = "0x00, 0x00, 0x15" //same as skydefs, bottom color
	define SKIP_GRADIENT_LIGHT //always required
}

Defining it in GLDEFS is not enough. CLOUD_SA also has to be a real texture, whether it's included as an image or defined in the TEXTURES lump. For CLOUD_SA, I use the original 64x64 CLOUD texture of the iwad and stretch it horizontally to faithful proportions it using a composite texture:

 

Texture "CLOUD_SA", 64, 64
{
	XScale 0.250
	YScale 0.500
	Patch "CLOUD", 0, 0
	{
		FlipX
	}
}

Then, when you place the CLOUD_SA texture in the map skybox it will be displayed ingame stretched and using the colors that were defined in GLDEFS.

 

This is CLOUD_SC:

CLOUD.png.22f16cc7934608874f573f86d76cd0db.png

 

One more thing. CE has a toggle to enable higher quality skies through the Features menu. When it is enabled, it will replace all the underscores in the cloud texture names with an N. This means that CLOUDNSA would get loaded instead of CLOUD_SA. For that to work I actually provide two sets of definitions for each cloud texture (CLOUD_SA, CLOUDNSA, CLOUD_SB, CLOUDNSB, etc).

material texture "CLOUDNSA" //same as CLOUD_SA, because it should use the same colors
{
	shader "shaders/64.fp"
	define CLOUD
	define BASE_COLOR = "0xB0, 0x80, 0xFF"
	define HIGH_COLOR = "0x00, 0x00, 0x00"
	define LOW_COLOR = "0x00, 0x00, 0x15"
	define SKIP_GRADIENT_LIGHT
}
Graphic "CLOUDNSA", 512, 512 //I use a higher quality patch here instead of the 64x64 CLOUD.png
{
	Patch "NEWCLOUD", 0, 0
}

Then, if you have placed CLOUD_SA inside the skybox, it will automatically use CLOUDNSA if the option is enabled.

 

This is CLOUDNSC:

NEWCLOUD.jpg.c061d64dc6c51f6f911a0a03da19f291.jpg

 

That was a lot! There are a lot of other undocumented areas I've not explained yet. I realize some things are not very user friendly.

 

11 hours ago, UnknDoomer said:

Short question, just trying to figure out a little. I've seen there are Corruption Cards and Complex Doom mods supported. Things with first one is more/less clear, but what about Complex Doom? How it's affect on overall gameplay in case, well, monsters there is a quite different in compare? Or it's reather partly supported?

 

Mods that add new monsters don't mesh well with Doom 64 because actors (including the player) are much taller and the sprites are styled differently. Worst case scenario, you will be playing Doom 64 levels with tiny Doom 2-styled monsters and weapons, and the player height will be shrunken down too. The mod's gameplay will be there, though. Those kind of mods work better with PS Doom.

 

Corruption Cards is a special case because of how it is implemented. That one will only alter the behavior of what is already there, so it works pretty much seamlessly.

Edited by molecicco
Added images

Share this post


Link to post

Okey. So at the end point better not try to use it. I.e. it might work with PSX, but, it seems, as well it still might cause enough glitches, including in compare to Corruption Cards.

Edited by UnknDoomer

Share this post


Link to post

Excellent, I was able to get skies working properly.  And 3d floors, too!

 

image.png.78686414951a88c92bdb60647cdae254.png

 

One thing I'm noticing is that Peg Upper/Lower wall color isn't a flag in Ultimate Doom builder.  I recall some chatter on the GZdoom dev threads to allow this to be a thing... is it a thing?  Am I missing it somehow?

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...