fix garbage column in bunny scroll (#1952)

Convert `DivRoundClosest` to a macro (we can use it for `int64_t`, for
example), add `DIV_ROUND_CEIL` and `DIV_ROUND_FLOOR`.
This commit is contained in:
Roman Fomin 2024-10-09 17:41:30 +07:00 committed by GitHub
parent 55d6b31b32
commit 5af52a7202
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 9 additions and 7 deletions

View File

@ -79,10 +79,12 @@ typedef byte lighttable_t;
#define BETWEEN(l, u, x) ((l) > (x) ? (l) : (x) > (u) ? (u) : (x))
inline static int DivRoundClosest(const int n, const int d)
{
return ((n < 0) == (d < 0)) ? ((n + d / 2) / d) : ((n - d / 2) / d);
}
#define DIV_ROUND_FLOOR(n, d) (((n) - (d) / 2) / (d))
#define DIV_ROUND_CEIL(n, d) (((n) + (d) / 2) / (d))
#define DIV_ROUND_CLOSEST(n, d) \
(((n) < 0) == ((d) < 0)) ? DIV_ROUND_CEIL(n, d) : DIV_ROUND_FLOOR(n, d)
#if defined(_MSC_VER) && !defined(__cplusplus)
#define inline __inline

View File

@ -696,13 +696,13 @@ void F_BunnyScroll (void)
scrolled = 320 - (finalecount-230)/2;
int p1offset = DivRoundClosest(video.unscaledw - SHORT(p1->width), 2);
int p1offset = DIV_ROUND_CEIL(video.unscaledw - SHORT(p1->width), 2);
if (SHORT(p1->width) == 320)
{
p1offset += (SHORT(p2->width) - 320) / 2;
}
int p2offset = DivRoundClosest(video.unscaledw - SHORT(p2->width), 2);
int p2offset = DIV_ROUND_CEIL(video.unscaledw - SHORT(p2->width), 2);
if (scrolled <= 0)
{

View File

@ -514,7 +514,7 @@ void V_DrawPatchTRTR(int x, int y, patch_t *patch, byte *outr1, byte *outr2)
void V_DrawPatchFullScreen(patch_t *patch)
{
const int x = DivRoundClosest(video.unscaledw - SHORT(patch->width), 2);
const int x = DIV_ROUND_CLOSEST(video.unscaledw - SHORT(patch->width), 2);
patch->leftoffset = 0;
patch->topoffset = 0;