overclocking cleanup
This commit is contained in:
parent
88a6999e49
commit
ddfdf735db
|
@ -182,7 +182,7 @@ static CFGSTRUCT fceuconfig[] =
|
||||||
AC(ntsccol_enable),AC(ntsctint),AC(ntschue),
|
AC(ntsccol_enable),AC(ntsctint),AC(ntschue),
|
||||||
AC(force_grayscale),
|
AC(force_grayscale),
|
||||||
AC(dendy),
|
AC(dendy),
|
||||||
AC(extrascanlines),
|
AC(postrenderscanlines),
|
||||||
AC(vblankscanlines),
|
AC(vblankscanlines),
|
||||||
AC(overclock_enabled),
|
AC(overclock_enabled),
|
||||||
AC(skip_7bit_overclocking),
|
AC(skip_7bit_overclocking),
|
||||||
|
|
|
@ -36,16 +36,16 @@ void CloseTimingDialog(HWND hwndDlg)
|
||||||
skip_7bit_overclocking = (IsDlgButtonChecked(hwndDlg, CB_SKIP_7BIT) == BST_CHECKED);
|
skip_7bit_overclocking = (IsDlgButtonChecked(hwndDlg, CB_SKIP_7BIT) == BST_CHECKED);
|
||||||
|
|
||||||
GetDlgItemText(hwndDlg, IDC_EXTRA_SCANLINES, str, 4);
|
GetDlgItemText(hwndDlg, IDC_EXTRA_SCANLINES, str, 4);
|
||||||
sscanf(str,"%d",&extrascanlines);
|
sscanf(str,"%d",&postrenderscanlines);
|
||||||
|
|
||||||
GetDlgItemText(hwndDlg, IDC_VBLANK_SCANLINES, str, 4);
|
GetDlgItemText(hwndDlg, IDC_VBLANK_SCANLINES, str, 4);
|
||||||
sscanf(str,"%d",&vblankscanlines);
|
sscanf(str,"%d",&vblankscanlines);
|
||||||
|
|
||||||
if (extrascanlines < 0)
|
if (postrenderscanlines < 0)
|
||||||
{
|
{
|
||||||
extrascanlines = 0;
|
postrenderscanlines = 0;
|
||||||
MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK);
|
MessageBox(hwndDlg, "Overclocking is when you speed up your CPU, not slow it down!", "Error", MB_OK);
|
||||||
sprintf(str,"%d",extrascanlines);
|
sprintf(str,"%d",postrenderscanlines);
|
||||||
SetDlgItemText(hwndDlg,IDC_EXTRA_SCANLINES,str);
|
SetDlgItemText(hwndDlg,IDC_EXTRA_SCANLINES,str);
|
||||||
}
|
}
|
||||||
else if (vblankscanlines < 0)
|
else if (vblankscanlines < 0)
|
||||||
|
@ -62,7 +62,7 @@ void CloseTimingDialog(HWND hwndDlg)
|
||||||
else
|
else
|
||||||
EndDialog(hwndDlg, 0);
|
EndDialog(hwndDlg, 0);
|
||||||
|
|
||||||
totalscanlines = normalscanlines + (overclock_enabled ? extrascanlines : 0);
|
totalscanlines = normalscanlines + (overclock_enabled ? postrenderscanlines : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -94,7 +94,7 @@ BOOL CALLBACK TimingConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
|
||||||
SendDlgItemMessage(hwndDlg,IDC_EXTRA_SCANLINES, EM_SETLIMITTEXT,3,0);
|
SendDlgItemMessage(hwndDlg,IDC_EXTRA_SCANLINES, EM_SETLIMITTEXT,3,0);
|
||||||
SendDlgItemMessage(hwndDlg,IDC_VBLANK_SCANLINES,EM_SETLIMITTEXT,3,0);
|
SendDlgItemMessage(hwndDlg,IDC_VBLANK_SCANLINES,EM_SETLIMITTEXT,3,0);
|
||||||
|
|
||||||
sprintf(str,"%d",extrascanlines);
|
sprintf(str,"%d",postrenderscanlines);
|
||||||
SetDlgItemText(hwndDlg,IDC_EXTRA_SCANLINES,str);
|
SetDlgItemText(hwndDlg,IDC_EXTRA_SCANLINES,str);
|
||||||
|
|
||||||
sprintf(str,"%d",vblankscanlines);
|
sprintf(str,"%d",vblankscanlines);
|
||||||
|
|
|
@ -92,17 +92,16 @@ using namespace std;
|
||||||
|
|
||||||
//-----------
|
//-----------
|
||||||
//overclocking-related
|
//overclocking-related
|
||||||
// overclock the console by adding dummy scanlines to PPU loop
|
// overclock the console by adding dummy scanlines to PPU loop or to vblank
|
||||||
// disables DMC DMA and WaveHi filling for these dummies
|
// disables DMC DMA, WaveHi filling and image rendering for these dummies
|
||||||
// doesn't work with new PPU
|
// doesn't work with new PPU
|
||||||
bool overclock_enabled = 0;
|
bool overclock_enabled = 0;
|
||||||
// 7-bit samples have priority over overclocking
|
|
||||||
bool skip_7bit_overclocking = 1;
|
|
||||||
int normalscanlines;
|
|
||||||
int extrascanlines = 0;
|
|
||||||
int totalscanlines;
|
|
||||||
int vblankscanlines = 0;
|
|
||||||
bool overclocking = 0;
|
bool overclocking = 0;
|
||||||
|
bool skip_7bit_overclocking = 1; // 7-bit samples have priority over overclocking
|
||||||
|
int normalscanlines;
|
||||||
|
int totalscanlines;
|
||||||
|
int postrenderscanlines = 0;
|
||||||
|
int vblankscanlines = 0;
|
||||||
//------------
|
//------------
|
||||||
|
|
||||||
int AFon = 1, AFoff = 1, AutoFireOffset = 0; //For keeping track of autofire settings
|
int AFon = 1, AFoff = 1, AutoFireOffset = 0; //For keeping track of autofire settings
|
||||||
|
@ -879,7 +878,7 @@ void FCEU_ResetVidSys(void) {
|
||||||
overclock_enabled = 0;
|
overclock_enabled = 0;
|
||||||
|
|
||||||
normalscanlines = (dendy ? 290 : 240)+newppu; // use flag as number!
|
normalscanlines = (dendy ? 290 : 240)+newppu; // use flag as number!
|
||||||
totalscanlines = normalscanlines + (overclock_enabled ? extrascanlines : 0);
|
totalscanlines = normalscanlines + (overclock_enabled ? postrenderscanlines : 0);
|
||||||
FCEUPPU_SetVideoSystem(w || dendy);
|
FCEUPPU_SetVideoSystem(w || dendy);
|
||||||
SetSoundVariables();
|
SetSoundVariables();
|
||||||
}
|
}
|
||||||
|
@ -968,7 +967,7 @@ void FCEUI_SetRegion(int region) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
normalscanlines += newppu;
|
normalscanlines += newppu;
|
||||||
totalscanlines = normalscanlines + (overclock_enabled ? extrascanlines : 0);
|
totalscanlines = normalscanlines + (overclock_enabled ? postrenderscanlines : 0);
|
||||||
FCEUI_SetVidSystem(pal_emulation);
|
FCEUI_SetVidSystem(pal_emulation);
|
||||||
RefreshThrottleFPS();
|
RefreshThrottleFPS();
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
|
|
@ -9,12 +9,12 @@ void ResetGameLoaded(void);
|
||||||
|
|
||||||
//overclocking-related
|
//overclocking-related
|
||||||
extern bool overclock_enabled;
|
extern bool overclock_enabled;
|
||||||
|
extern bool overclocking;
|
||||||
extern bool skip_7bit_overclocking;
|
extern bool skip_7bit_overclocking;
|
||||||
extern int normalscanlines;
|
extern int normalscanlines;
|
||||||
extern int extrascanlines;
|
|
||||||
extern int totalscanlines;
|
extern int totalscanlines;
|
||||||
|
extern int postrenderscanlines;
|
||||||
extern int vblankscanlines;
|
extern int vblankscanlines;
|
||||||
extern bool overclocking;
|
|
||||||
|
|
||||||
extern bool AutoResumePlay;
|
extern bool AutoResumePlay;
|
||||||
extern char romNameWhenClosingEmulator[];
|
extern char romNameWhenClosingEmulator[];
|
||||||
|
|
|
@ -1225,12 +1225,17 @@ static void Fixit1(void) {
|
||||||
|
|
||||||
void MMC5_hb(int); //Ugh ugh ugh.
|
void MMC5_hb(int); //Ugh ugh ugh.
|
||||||
static void DoLine(void) {
|
static void DoLine(void) {
|
||||||
|
if (overclocking)
|
||||||
|
{
|
||||||
|
X6502_Run(256 + 69);
|
||||||
|
scanline++;
|
||||||
|
X6502_Run(16);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int x;
|
int x;
|
||||||
// scanlines after 239 are dummy for dendy, and Xbuf is capped at 0xffff bytes, don't let it overflow
|
uint8 *target = XBuf + (scanline << 8);
|
||||||
// send all future writes to the invisible sanline. the easiest way to "skip" them altogether in old ppu
|
u8* dtarget = XDBuf + (scanline << 8);
|
||||||
// todo: figure out what exactly should be skipped. it's known that there's no activity on PPU bus
|
|
||||||
uint8 *target = XBuf + ((scanline < 240 ? scanline : 240) << 8);
|
|
||||||
u8* dtarget = XDBuf + ((scanline < 240 ? scanline : 240) << 8);
|
|
||||||
|
|
||||||
if (MMC5Hack) MMC5_hb(scanline);
|
if (MMC5Hack) MMC5_hb(scanline);
|
||||||
|
|
||||||
|
@ -1815,7 +1820,7 @@ int FCEUPPU_Loop(int skip) {
|
||||||
if (DMC_7bit && skip_7bit_overclocking)
|
if (DMC_7bit && skip_7bit_overclocking)
|
||||||
totalscanlines = normalscanlines;
|
totalscanlines = normalscanlines;
|
||||||
else
|
else
|
||||||
totalscanlines = normalscanlines + (overclock_enabled ? extrascanlines : 0);
|
totalscanlines = normalscanlines + (overclock_enabled ? postrenderscanlines : 0);
|
||||||
|
|
||||||
for (scanline = 0; scanline < totalscanlines; ) { //scanline is incremented in DoLine. Evil. :/
|
for (scanline = 0; scanline < totalscanlines; ) { //scanline is incremented in DoLine. Evil. :/
|
||||||
deempcnt[deemp]++;
|
deempcnt[deemp]++;
|
||||||
|
|
Loading…
Reference in New Issue