From 4e0ff85b3f41b65c9b929e137a38ae3bd19f822c Mon Sep 17 00:00:00 2001 From: dborth Date: Sat, 25 Oct 2008 18:41:40 +0000 Subject: [PATCH] add timing correction for GB games --- source/ngc/vbasupport.cpp | 48 +++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/source/ngc/vbasupport.cpp b/source/ngc/vbasupport.cpp index 6a06ee9..27ddf9c 100644 --- a/source/ngc/vbasupport.cpp +++ b/source/ngc/vbasupport.cpp @@ -132,9 +132,6 @@ static u32 autoFrameSkipLastTime = 0; void system10Frames(int rate) { - if (cartridgeType == 1) - return; - u32 time = systemGetClock(); u32 diff = time - autoFrameSkipLastTime; @@ -146,29 +143,32 @@ void system10Frames(int rate) else timeOff = 0; // timeoff was not valid - // consider increasing skip - if(diff >= 270) - systemFrameSkip += 4; - else if(diff >= 240) - systemFrameSkip += 3; - else if(diff >= 210) - systemFrameSkip += 2; - else if(diff >= 170) - systemFrameSkip += 1; + if (cartridgeType == 2) // GBA games require frameskipping + { + // consider increasing skip + if(diff >= 270) + systemFrameSkip += 4; + else if(diff >= 240) + systemFrameSkip += 3; + else if(diff >= 210) + systemFrameSkip += 2; + else if(diff >= 170) + systemFrameSkip += 1; - // consider decreasing skip - else if(diff <= 90) - systemFrameSkip -= 3; - else if(diff <= 120) - systemFrameSkip -= 2; - else if(diff <= 135) - systemFrameSkip -= 1; + // consider decreasing skip + else if(diff <= 90) + systemFrameSkip -= 3; + else if(diff <= 120) + systemFrameSkip -= 2; + else if(diff <= 135) + systemFrameSkip -= 1; - // correct invalid frame skip values - if(systemFrameSkip > 20) - systemFrameSkip = 20; - else if(systemFrameSkip < 0) - systemFrameSkip = 0; + // correct invalid frame skip values + if(systemFrameSkip > 20) + systemFrameSkip = 20; + else if(systemFrameSkip < 0) + systemFrameSkip = 0; + } autoFrameSkipLastTime = time + timeOff; // total time = processing time + sleep time