View Issue Details

IDProjectCategoryView StatusLast Update
0000241Gameplay + OpenGL[All Projects] Bugpublic2017-02-14 15:05
Assigned To 
Status resolvedResolutionfixed 
Summary0000241: Sprite clipping causes animation jitter in Minor Sprite Fixing Project
DescriptionGZDoom 2.3's sprite clipping causes jittery animation with the replacement Twitching Impaled Human (thingtype 26) sprite included in the Minor Sprite Fixing Project 1.8.

If sprite clipping is set to "never", "smart" or "smarter", the two-frame twitching animation jumps up and down by several pixels. The "always" setting stops the jittering. The jitter does not occur in GZDoom 1.x with any sprite clipping setting, nor does it occur in 2.3's software renderer.
Steps To Reproduce1. Load the attached twitchtest.wad alongside D2SPFX18.WAD from the Minor Sprite Fixing Project 1.8, using DOOM2.WAD as the IWAD.
2. Set gl_spriteclip to 0 ("never"), 1 ("smart") or 3 ("smarter"). Sprite animation will jitter vertically by several pixels between frames.
3. Set gl_spriteclip to 2 ("always"). Sprite animation will stop jittering.
Additional InformationThis appears to be triggered by the fact that only one of the animation frames is replaced in the sprite fixing PWAD: POL6A0, which in the fix PWAD is 38x66px with an offset of 19x, 62y. (In the original IWAD, POL6A0 is 35x66px with an offset of 17x, 62y.)

Its companion frame from the original IWAD, POL6B0, is 38x66px with an offset of 19x, 62y. Importing POL6B0 from the IWAD into the fix PWAD with the same size and offset causes the jitter to go away; even though nothing has changed in the graphic itself, something about having both sprites present in the PWAD fixes it.
TagsNo tags attached.





2017-02-11 09:40

reporter (428 bytes)


2017-02-11 09:45

reporter   ~0000513

Sorry, I should have been more precise with version numbers: the jitter is present in GZDoom 2.3.2, but not in GZDoom 1.9.1. I haven't tested any in-between versions.


2017-02-12 18:51

reporter   ~0000533

There's some further discussion of this issue on the Minor Sprite Fixing Project thread here:, including a link the commit that brought about the issue, and Revenant100 proposes a heuristic for avoiding these kinds of conflicts.

The sprite offset overrides added in are only applied to sprites from the original IWAD; if a PWAD replaces one of these sprites, the offset defined in the PWAD is used for that sprite. However, the Minor Sprite Fixing Project PWAD does not replace every frame of every sprite animation: so the unmodified frames receive GZDoom's overridden offsets, while the replaced frames are left alone, resulting in jitter as it animates between the two.

Revenant100's proposal is for GZDoom to recognise sprite animations as a group: if any one sprite from a group is overridden in a PWAD, then no offset overrides should be applied to the other sprites in that animation group.
Graf Zahl

Graf Zahl

2017-02-14 15:05

administrator   ~0000584

I hope this works out.

Issue History

Date Modified Username Field Change
2017-02-11 09:40 Viggles New Issue
2017-02-11 09:40 Viggles File Added:
2017-02-11 09:45 Viggles Note Added: 0000513
2017-02-12 18:51 Viggles Note Added: 0000533
2017-02-13 13:20 Graf Zahl Status new => resolved
2017-02-13 13:20 Graf Zahl Resolution open => not fixable
2017-02-13 13:22 Graf Zahl Status resolved => new
2017-02-13 13:22 Graf Zahl Resolution not fixable => reopened
2017-02-14 15:05 Graf Zahl Note Added: 0000584
2017-02-14 15:05 Graf Zahl Status new => resolved
2017-02-14 15:05 Graf Zahl Resolution reopened => fixed