doomretro
doomretro copied to clipboard
[Bug Report] Latest Build of Doom Retro is very incompatible with DehackEd heavy WADs
Ok, sorry for the vague title. This is going to require quite a bit of an explanation.
So I'm currently working on a new project called "200 Line Massacre". As opposed to the previous project (100 Line Massacre), the new project includes some very heavy DehackEd tweaks. As a result, I have simplified lots of frames from certain Doom actors so that I can use them for new monsters, etc.
Doom Retro really doesn't like the changes I've made, and seems to have it's own changes built in that seem to override or mess up some of my DehackEd actors.
Let me give some examples of how Doom Retro is currently breaking my DehackEd:
- I was experimenting with changing the lost soul actor to a rain drop, and using the PainDie DehackEd codepointer to forever spawn rain (originally the lost soul actor). Doom Retro is the only port that would drop lost souls continuously instead of my new rain drop that replaced the lost soul actor.
- A very simple example would be my health and armour bonuses (which are actually done the same in 100 Line Masacre). I have added one full bright frame to both the health and armour bonuses. Doom Retro seems to replace the offsets for the health and armour bonuses, and I can tell cuz while my full bright frames do show up, it's offset is different from the Doom Retro tweaked offsets making the bonuses actually move in game (not supposed to).
- Due to the lack of frames (Vanilla compat, but honestly Boom and MBF are also limited in frames), I reused a romero head icon of sin frame for a new gib animation sequence for the Pinky. This actually works correctly most of the time, unless you try to gib the pinky's already dead corpse... then the pinky corpse turns into a romero head.
- I wouldn't exactly say this is a DehackEd frame issue, but it seems the sound effect DSFLAMST is hardcoded in Doom Retro to always play with the Archvile. This is a huge issue for WADs, especially vanilla WADs, since you can't just add new sounds, and you would want to replace ones that are typically unused. I thought removing the codepointer StartFire would stop the Archvile from using the sound, but it seems Doom Retro is keen to always play it.
If I had a suggestion on how to fix this issue (because at the moment any dehacked heavy WAD will not work very well with Doom Retro), I would suggest instead of checking individual frames/states from the dehacked, to instead check do more of an actor check. If an actor has different states than vanilla to disable your Doom Retro tweaks for that specific actor so that the dehacked for that actor would be mixed with your added tweaks and would work as the modder intended.
As for the DSFLAMST sound effect, I would honestly just do a check to see if the WAD includes it, and if it does, to disable the added Archvile sound effect code that Doom Retro adds to actually play the sound.
Hi @andrikpowell. Thanks for the report. This will take me some time to work through.
I think I should reclarify what this issue is more about. (I mean besides the minor fixes you did for the pinky gib animation and the DSFLAMST).
What I really think the core focus should be on how Doom Retro applies it's custom offsets to sprites. Basically it would need some way to checking to see if a certain thing has some of it's states changed... and if so, to basically disable any Doom Retro exclusive sprite offsets for that thing.
In my 200 Line Massacre wad, you can see this easily with my armour and health bonuses... Basically I have only changed 1 on frame on each being a "light" frame. But since Doom Retro has a custom offset that it tries to apply to the sprites, it does use the right offsets for the "light" frame... but the other frames of the bonuses that are untouched still have the Doom Retro offsets applied to them. This means you get a weird jitter in the sprite animation since the offsets change anytime it gets the "light" frame.
I still do not really understand why this happens tho (seems like it might be a separate issue):
- I was experimenting with changing the lost soul actor to a rain drop, and using the PainDie DehackEd codepointer to forever spawn rain (originally the lost soul actor). Doom Retro is the only port that would drop lost souls continuously instead of my new rain drop that replaced the lost soul actor.