Quasar
Moderator

Posts: 4615
Registered: 08-00 |
myk said:
Does this bug work in vanilla or does it just happen on modern systems? I blasted myself against the walls in MAP32 for a few minutes to produce the wipe screen tons of times in succession yet when I ended the game the title screen seemed to last about normal.
Just a misunderstanding, as the amount of lag-behind does not accumulate between multiple wipes. The only way that would happen is if the wipes ran back-to-back without interruption of even a single main loop iteration, which never happens due to how the engine is programmed (it must see wipegamestate change values before it'll wipe again).
The amount of lag is always small, and is slightly variable, since the asynchronous timer will increment by a slighly different amount every time, depending on such uncontrollable factors as precision drift, process switching, cache misses, disk IO, etc.
Maes said:
The solution would be resetting I_GetTime() to whatever value it was before the wiper, or using a separate timer for the wiper altogether, or monitor the "just wiped" condition and hack TryRunTics itself.
Right and I think that is what ZDoom might be doing with its I_FreezeTimer function, but, as with a lot of stuff in ZDoom, the comments only mention the what and not the why, and it's not exactly self-explanatory code.
|