From 9b2d36df0c9f71602e1ebc5f89cdbf4a7c3b2409 Mon Sep 17 00:00:00 2001 From: rogerman Date: Thu, 26 Mar 2015 09:49:56 +0000 Subject: [PATCH] GFX3D: - Do workaround for possible NaN comparisons being done when Y-sorting. (Addresses bug #1461.) --- desmume/src/gfx3d.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/desmume/src/gfx3d.cpp b/desmume/src/gfx3d.cpp index 16ddf20d8..276a3bce2 100644 --- a/desmume/src/gfx3d.cpp +++ b/desmume/src/gfx3d.cpp @@ -2185,16 +2185,20 @@ static void gfx3d_doFlush() //also the buttons in the knights in the nightmare frontend depend on this for(int i=0; ilist[i]; float verty = vertlist->list[poly.vertIndexes[0]].y; - float vertw = vertlist->list[poly.vertIndexes[0]].w; + float vertw = (vertlist->list[poly.vertIndexes[0]].w != 0.0f) ? vertlist->list[poly.vertIndexes[0]].w : 0.00000001f; verty = 1.0f-(verty+vertw)/(2*vertw); poly.miny = poly.maxy = verty; for(int j=1; jlist[poly.vertIndexes[j]].y; - vertw = vertlist->list[poly.vertIndexes[j]].w; + vertw = (vertlist->list[poly.vertIndexes[j]].w != 0.0f) ? vertlist->list[poly.vertIndexes[j]].w : 0.00000001f; verty = 1.0f-(verty+vertw)/(2*vertw); poly.miny = min(poly.miny, verty); poly.maxy = max(poly.maxy, verty);