mirror of
https://github.com/dborth/vbagx.git
synced 2025-01-12 10:39:07 +01:00
frameskipping changes, fix GB crash
This commit is contained in:
parent
eca6ed965a
commit
bca1afc555
@ -140,15 +140,32 @@ void system10Frames(int rate)
|
|||||||
// difference should be 1/6 second or (1/6)*1000 ms or 167 ms
|
// difference should be 1/6 second or (1/6)*1000 ms or 167 ms
|
||||||
int timeOff = (167 - diff);
|
int timeOff = (167 - diff);
|
||||||
|
|
||||||
if(timeOff > 3 && timeOff < 60) // we're running ahead!
|
if(timeOff > 0 && timeOff < 100) // we're running ahead!
|
||||||
usleep(timeOff*1000); // let's take a nap
|
usleep(timeOff*1000); // let's take a nap
|
||||||
else
|
else
|
||||||
timeOff = 0; // timeoff was not valid
|
timeOff = 0; // timeoff was not valid
|
||||||
|
|
||||||
if(diff > 170 && systemFrameSkip < 9)
|
// consider increasing skip
|
||||||
systemFrameSkip++;
|
if(diff >= 230)
|
||||||
else if(diff < 150 && systemFrameSkip > 0)
|
systemFrameSkip += 3;
|
||||||
systemFrameSkip--;
|
else if(diff >= 200)
|
||||||
|
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 <= 150)
|
||||||
|
systemFrameSkip -= 1;
|
||||||
|
|
||||||
|
// 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
|
autoFrameSkipLastTime = time + timeOff; // total time = processing time + sleep time
|
||||||
|
|
||||||
@ -623,7 +640,7 @@ bool LoadVBAROM(int method)
|
|||||||
//WaitPrompt("GameBoy Image");
|
//WaitPrompt("GameBoy Image");
|
||||||
cartridgeType = 1;
|
cartridgeType = 1;
|
||||||
emulator = GBSystem;
|
emulator = GBSystem;
|
||||||
|
|
||||||
gbBorderOn = 0;
|
gbBorderOn = 0;
|
||||||
|
|
||||||
if(gbBorderOn)
|
if(gbBorderOn)
|
||||||
@ -675,9 +692,10 @@ bool LoadVBAROM(int method)
|
|||||||
// used for the handling of the gb Boot Rom
|
// used for the handling of the gb Boot Rom
|
||||||
//if (gbHardware & 5)
|
//if (gbHardware & 5)
|
||||||
//gbCPUInit(gbBiosFileName, useBios);
|
//gbCPUInit(gbBiosFileName, useBios);
|
||||||
|
|
||||||
gbSoundReset();
|
gbSoundReset();
|
||||||
gbSoundSetQuality(soundQuality);
|
gbSoundSetQuality(soundQuality);
|
||||||
|
gbSoundSetDeclicking(true);
|
||||||
gbReset();
|
gbReset();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -4026,7 +4026,8 @@ void gbCleanUp()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(pix != NULL) {
|
if(pix != NULL) {
|
||||||
free(pix);
|
// this causes system to CRASH when switching from GB to GBA and then back to GB
|
||||||
|
//free(pix);
|
||||||
pix = NULL;
|
pix = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user