From 794ee52b8c119b426b60a0d9e1e0f663017999be Mon Sep 17 00:00:00 2001 From: Matt Zykan Date: Mon, 9 Sep 2024 13:59:34 -0500 Subject: [PATCH] fix tic_modulo (#2676) * use modulus to loop map * use tic_modulo in drawMap * fix tic_modulo for large negative values --- src/core/draw.c | 9 ++------- src/tools.h | 8 ++++---- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/core/draw.c b/src/core/draw.c index 79e5b2020..680691980 100644 --- a/src/core/draw.c +++ b/src/core/draw.c @@ -279,13 +279,8 @@ static void drawMap(tic_core* core, const tic_map* src, s32 x, s32 y, s32 width, for (s32 j = y, jj = sy; j < y + height; j++, jj += size) for (s32 i = x, ii = sx; i < x + width; i++, ii += size) { - s32 mi = i; - s32 mj = j; - - while (mi < 0) mi += TIC_MAP_WIDTH; - while (mj < 0) mj += TIC_MAP_HEIGHT; - while (mi >= TIC_MAP_WIDTH) mi -= TIC_MAP_WIDTH; - while (mj >= TIC_MAP_HEIGHT) mj -= TIC_MAP_HEIGHT; + s32 mi = tic_modulo(i, TIC_MAP_WIDTH); + s32 mj = tic_modulo(j, TIC_MAP_HEIGHT); s32 index = mi + mj * TIC_MAP_WIDTH; RemapResult retile = { *(src->data + index), tic_no_flip, tic_no_rotate }; diff --git a/src/tools.h b/src/tools.h index 60a503c49..5d53612ee 100644 --- a/src/tools.h +++ b/src/tools.h @@ -81,10 +81,10 @@ inline u32 tic_rgba(const tic_rgb* c) inline s32 tic_modulo(s32 x, s32 m) { - if(x >= m) return x % m; - if(x < 0) return x % m + m; - - return x; + s32 r = x % m; + if (r < 0) + r += m; + return r; } tic_blitpal tic_tool_palette_blit(const tic_palette* src, tic80_pixel_color_format fmt);