bradharding / doomretro

The classic, refined DOOM source port. For Windows PC.
https://www.doomretro.com
GNU General Public License v3.0
698 stars 88 forks source link

[Bug] Donut Linedef Action 9 doesn't work correctly in Doom Retro #749

Open andrikpowell opened 2 years ago

andrikpowell commented 2 years ago

Hey Brad,

Sorry but I found another bug or something in MAP35. Quite honestly it could the Vanilla action for donut that is kinda bugged, but it's bugged nature works in Woof, DSDA Doom, Eternity... But not in Doom Retro or ZDoom ports.

Since there's so many legacy ZDoom ports (like ZDoom, Zandronum, and ZDaemon), for those ports I decided to make a special version of the map that doesn't use the donut action at all.

But I'd prefer for GZDoom and Doom Retro to maybe make a compatibility setting for future maps that use this action to enact the buggy nature of Vanilla.

Here is a video, first showing GZDoom (that's also how Doom Retro treats it), and then some ports of it working correctly: https://www.youtube.com/watch?v=SETH3Gpyi7g

I've also updated the link of my WIP wad: 200 Line Massacre WIP

[minor fyi, I'm using the exact same link for the WIP wad as I did in the previous ticket. From now on, I'll always use the same link for the wad for issues, and update it on my end. So just redownload it when I post an issue to keep it up to date]

PS: Actually specific to Doom Retro, when the middle blood raises up, some of the health bonuses around it are unattainable in the liquid for some reason.

bradharding commented 2 years ago

Does 7a49b84fc72399c29cbcb816a783b253e5cfc324 fix this for you?

andrikpowell commented 2 years ago

I tried the new build with compat_floormove under MAP35, and the same issue persists.

It instantly raises the middle blood sector, but doesn't lower the outside sector nor the teleport with the switch on it.

andrikpowell commented 2 years ago

Edit: I learned something! The donut action works differently in Boom than in Vanilla Doom. Right now ZDoom ports and Doom Retro are using the Boom way of dealing with donuts which makes work differently than Vanilla.

Basically playing the map in DSDA Doom with complevel 9 will result in what you are seeing in Doom Retro. Only complevel 2 in DSDA Doom works correctly.

andrikpowell commented 2 years ago

Hey Brad, it seems that Graf may have fixed this in GZDoom by adding it to the compat_floormove compatibility option (however I haven't tested the new GZDoom build to confirm it works): https://github.com/ZDoom/gzdoom/commit/54e02012046983608df863ddb2e63222bb536ed6

bradharding commented 2 years ago

Thanks. I'll apply the change to DR as well, and could you please kindly test?

andrikpowell commented 2 years ago

Thanks. I'll apply the change to DR as well, and could you please kindly test?

So currently in Doom Retro it doesn't work.

I did also test in GZDoom and it kinda works. Let me explain. It only works in GZDoom, if the compatibility settings are set to Doom (Strict) enabling compat_floormove. But in GZDoom, at the moment the donut does not work correctly if it reads the compat_floormove in the ZMAPINFO. So essentially it doesn't seem to fix the donut in the MAPINFO yet in GZDoom, but if you manually set the comp settings in the menu, it does work right.

Perhaps some of the code isn't activating or something. Not sure if this would be useful for Doom Retro at all.