From e5c452530a683f9c5d3a436b5f2fc74fbe49236a Mon Sep 17 00:00:00 2001 From: Sergey Lipskiy Date: Thu, 19 Mar 2015 19:35:30 +0600 Subject: [PATCH] Correct VI.width calculation for interlaced mode. Fixed crash in Topgear hyper bike #256 --- VI.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VI.cpp b/VI.cpp index 474fbe96..bea1faee 100644 --- a/VI.cpp +++ b/VI.cpp @@ -38,9 +38,9 @@ void VI_UpdateSize() VI.width = *REG.VI_WIDTH; VI.interlaced = (*REG.VI_STATUS & 0x40) != 0; if (VI.interlaced) { - u32 fullWidth = (u32)(640.0f*xScale); + f32 fullWidth = 640.0f*xScale; if (*REG.VI_WIDTH > fullWidth) { - const u32 scale = *REG.VI_WIDTH / fullWidth; + const u32 scale = (u32)floorf(*REG.VI_WIDTH / fullWidth + 0.5f); VI.width /= scale; VI.real_height *= scale; }