diff --git a/CHANGELOG.md b/CHANGELOG.md index b89d9c276..dc5bba9ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ - Broken movement in systems assuming `char`s to be unsigned - `comp_lsamnesia` inversely affecting collision with entities (i.e. lost souls would remember their target) -- Weapon sprites being raised/lowered excessively when using switch interruption with certain bobbing styles +- Weapon sprites being raised/lowered excessively when using switch interruption + with certain bobbing styles and/or reduced weapon bobbing amplitude +- _Flip Levels_ setting not working for side screens in three-screen mode - Message grouping only checking as many characters as the last message had, causing incorrect grouping (e.g. new message "TEST" being grouped with last message "TES") diff --git a/src/r_main.c b/src/r_main.c index aa5e2198e..0625a8248 100644 --- a/src/r_main.c +++ b/src/r_main.c @@ -1280,6 +1280,10 @@ void R_SetupFrame (player_t *player) // [Nugget] /=============================================================== + // Flip levels + if (viewangleoffset && STRICTMODE(flip_levels)) + { viewangle += ANG180; } + // Alt. intermission background -------------------------------------------- if (WI_UsingAltInterpic() && gamestate == GS_INTERMISSION) diff --git a/src/r_things.c b/src/r_things.c index 8367678d7..8d5142bb4 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -1024,23 +1024,6 @@ void R_DrawPlayerSprites(void) mfloorclip = screenheightarray; mceilingclip = negonearray; - // [Nugget] Flip levels - if (STRICTMODE(flip_levels)) - { - for (int y = 0; y < viewheight; y++) - { - for (int x = 0; x < viewwidth/2; x++) - { - pixel_t *left = &I_VideoBuffer[(viewwindowy + y) * video.pitch + viewwindowx + x], - *right = left + viewwidth - 1 - x*2, - temp = *left; - - *left = *right; - *right = temp; - } - } - } - // display crosshair if (hud_crosshair_on) // [Nugget] Use crosshair toggle HU_DrawCrosshair(); @@ -1373,6 +1356,23 @@ void R_DrawMasked(void) if (ds->maskedtexturecol) R_RenderMaskedSegRange(ds, ds->x1, ds->x2); + // [Nugget] Flip levels + if (STRICTMODE(flip_levels)) + { + for (int y = 0; y < viewheight; y++) + { + for (int x = 0; x < viewwidth/2; x++) + { + pixel_t *left = &I_VideoBuffer[(viewwindowy + y) * video.pitch + viewwindowx + x], + *right = left + viewwidth - 1 - x*2, + temp = *left; + + *left = *right; + *right = temp; + } + } + } + // draw the psprites on top of everything // but does not draw on side views if (!viewangleoffset)