From 6d9624505dfd5f6caf7c4472907dc86480c1a128 Mon Sep 17 00:00:00 2001 From: SarahW Date: Mon, 23 Jan 2017 21:04:55 +0000 Subject: [PATCH] Voodoo fast fill command now affected by Y origin bit --- src/vid_voodoo.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/vid_voodoo.c b/src/vid_voodoo.c index 7262f32..162a6cc 100644 --- a/src/vid_voodoo.c +++ b/src/vid_voodoo.c @@ -3411,7 +3411,19 @@ static inline void queue_triangle(voodoo_t *voodoo, voodoo_params_t *params) static void voodoo_fastfill(voodoo_t *voodoo, voodoo_params_t *params) { int y; + int low_y, high_y; + if (params->fbzMode & (1 << 17)) + { + high_y = voodoo->v_disp - params->clipLowY; + low_y = voodoo->v_disp - params->clipHighY; + } + else + { + low_y = params->clipLowY; + high_y = params->clipHighY; + } + if (params->fbzMode & FBZ_RGB_WMASK) { int r, g, b; @@ -3422,7 +3434,7 @@ static void voodoo_fastfill(voodoo_t *voodoo, voodoo_params_t *params) b = (params->color1 >> 3) & 0x1f; col = b | (g << 5) | (r << 11); - for (y = params->clipLowY; y < params->clipHighY; y++) + for (y = low_y; y < high_y; y++) { uint16_t *cbuf = (uint16_t *)&voodoo->fb_mem[(params->draw_offset + y*voodoo->row_width) & voodoo->fb_mask]; int x; @@ -3433,7 +3445,7 @@ static void voodoo_fastfill(voodoo_t *voodoo, voodoo_params_t *params) } if (params->fbzMode & FBZ_DEPTH_WMASK) { - for (y = params->clipLowY; y < params->clipHighY; y++) + for (y = low_y; y < high_y; y++) { uint16_t *abuf = (uint16_t *)&voodoo->fb_mem[(params->aux_offset + y*voodoo->row_width) & voodoo->fb_mask]; int x;