Quasar
Moderator

Posts: 4615
Registered: 08-00 |
While trying to find out why a certain demo desyncs in EE I have noticed a couple of problems in PrBoom+:
In P_FindShortestTextureAround, a September change to ignore texture #0 should only apply in boom_202_compatibility, *not* in any level as it does currently. MBF did not contain this fix, and EE did not contain it until v3.31 where I had to add it myself.
In P_XYMovement, this code exists:
code:
// killough 10/98:
// Don't affect main player when voodoo dolls stop, except in old demos:
if (player && (unsigned)(player->mo->state - states - S_PLAY_RUN1) < 4
&& (player->mo == mo || compatibility_level >= lxdoom_1_compatibility))
P_SetMobjState(player->mo, S_PLAY);
However, the "compatibility_level >= lxdoom_1_compatibility" check is incorrect and has been inverted from the original code in MBF, which clearly states "demo_version < 203", which as the comment explains, is correct, because voodoo dolls stop the player's walking sequence in *old* demos, not in *new* ones.
I will be posting any thing else I find in this thread.
Edit:
New problem found. PrBoom+ P_Move matches neither BOOM 2.02 nor MBF when applying ice friction to monsters (202 didn't have this feature; MBF added it, but MBF's code is different). The code being used there in PrBoom+ could cause dangling blockmap links because it changes a thing's x/y coordinates without using P_[Un]SetThingPosition.
Last edited by Quasar on 04-13-10 at 07:02
|