From 4b3f77c926f7d72e5a1583028cff248d11c030d2 Mon Sep 17 00:00:00 2001 From: TomW Date: Mon, 25 Aug 2014 15:22:51 +0100 Subject: [PATCH] Fixed Z range on ViRGE S3D, fixes Grim Fandango. --- src/vid_s3_virge.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vid_s3_virge.c b/src/vid_s3_virge.c index 69247ae..ebafeb2 100644 --- a/src/vid_s3_virge.c +++ b/src/vid_s3_virge.c @@ -2330,7 +2330,7 @@ static void tri(virge_t *virge, s3d_t *s3d_tri, s3d_state_t *state, int yc, int3 { int x = (state->x1 + ((1 << 20) - 1)) >> 20; int xe = (state->x2 + ((1 << 20) - 1)) >> 20; - uint32_t z = state->base_z; + uint32_t z = (state->base_z > 0) ? (state->base_z << 1) : 0; if (x_dir < 0) { x--; @@ -2419,7 +2419,7 @@ static void tri(virge_t *virge, s3d_t *s3d_tri, s3d_state_t *state, int yc, int3 for (; x != xe; x = (x + x_dir) & 0xfff) { int update = 1; - int16_t src_z; + uint16_t src_z; _x = x; _y = state->y; if (use_z)