Move overclock-related variables to ppu instead
Just makes more sense since overclocking is ppu-based.
This commit is contained in:
@@ -1223,33 +1223,33 @@ static void check_variables(bool startup)
|
|||||||
bool do_reinit = false;
|
bool do_reinit = false;
|
||||||
|
|
||||||
if (!strcmp(var.value, "disabled")
|
if (!strcmp(var.value, "disabled")
|
||||||
&& FSettings.overclock_enabled != 0)
|
&& ppu.overclock_enabled != 0)
|
||||||
{
|
{
|
||||||
FSettings.skip_7bit_overclocking = 1;
|
ppu.skip_7bit_overclocking = 1;
|
||||||
FSettings.extrascanlines = 0;
|
ppu.extrascanlines = 0;
|
||||||
FSettings.vblankscanlines = 0;
|
ppu.vblankscanlines = 0;
|
||||||
FSettings.overclock_enabled = 0;
|
ppu.overclock_enabled = 0;
|
||||||
do_reinit = true;
|
do_reinit = true;
|
||||||
}
|
}
|
||||||
else if (!strcmp(var.value, "2x-Postrender"))
|
else if (!strcmp(var.value, "2x-Postrender"))
|
||||||
{
|
{
|
||||||
FSettings.skip_7bit_overclocking = 1;
|
ppu.skip_7bit_overclocking = 1;
|
||||||
FSettings.extrascanlines = 266;
|
ppu.extrascanlines = 266;
|
||||||
FSettings.vblankscanlines = 0;
|
ppu.vblankscanlines = 0;
|
||||||
FSettings.overclock_enabled = 1;
|
ppu.overclock_enabled = 1;
|
||||||
do_reinit = true;
|
do_reinit = true;
|
||||||
}
|
}
|
||||||
else if (!strcmp(var.value, "2x-VBlank"))
|
else if (!strcmp(var.value, "2x-VBlank"))
|
||||||
{
|
{
|
||||||
FSettings.skip_7bit_overclocking = 1;
|
ppu.skip_7bit_overclocking = 1;
|
||||||
FSettings.extrascanlines = 0;
|
ppu.extrascanlines = 0;
|
||||||
FSettings.vblankscanlines = 266;
|
ppu.vblankscanlines = 266;
|
||||||
FSettings.overclock_enabled = 1;
|
ppu.overclock_enabled = 1;
|
||||||
do_reinit = true;
|
do_reinit = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
FSettings.normal_scanlines = FSettings.dendy ? SCANLINES_DENDY : SCANLINES_NORMAL;
|
ppu.normal_scanlines = FSettings.dendy ? SCANLINES_DENDY : SCANLINES_NORMAL;
|
||||||
FSettings.totalscanlines = FSettings.normal_scanlines + (FSettings.overclock_enabled ? FSettings.extrascanlines : 0);
|
ppu.totalscanlines = ppu.normal_scanlines + (ppu.overclock_enabled ? ppu.extrascanlines : 0);
|
||||||
|
|
||||||
if (do_reinit && startup)
|
if (do_reinit && startup)
|
||||||
{
|
{
|
||||||
|
|||||||
16
src/fceu.c
16
src/fceu.c
@@ -341,14 +341,14 @@ int FCEUI_Initialize(void) {
|
|||||||
FSettings.UsrLastSLine[0] = 231;
|
FSettings.UsrLastSLine[0] = 231;
|
||||||
FSettings.UsrLastSLine[1] = 239;
|
FSettings.UsrLastSLine[1] = 239;
|
||||||
FSettings.SoundVolume = 100;
|
FSettings.SoundVolume = 100;
|
||||||
FSettings.overclock_enabled = 0;
|
|
||||||
FSettings.skip_7bit_overclocking = 1;
|
|
||||||
FSettings.totalscanlines = 0;
|
|
||||||
FSettings.normal_scanlines = SCANLINES_NORMAL;
|
|
||||||
FSettings.extrascanlines = 0;
|
|
||||||
FSettings.vblankscanlines = 0;
|
|
||||||
FSettings.dendy = 0;
|
FSettings.dendy = 0;
|
||||||
FSettings.swapDuty = 0;
|
FSettings.swapDuty = 0;
|
||||||
|
ppu.overclock_enabled = 0;
|
||||||
|
ppu.skip_7bit_overclocking = 1;
|
||||||
|
ppu.totalscanlines = 0;
|
||||||
|
ppu.normal_scanlines = SCANLINES_NORMAL;
|
||||||
|
ppu.extrascanlines = 0;
|
||||||
|
ppu.vblankscanlines = 0;
|
||||||
FCEUPPU_Init();
|
FCEUPPU_Init();
|
||||||
X6502_Init();
|
X6502_Init();
|
||||||
return 1;
|
return 1;
|
||||||
@@ -482,8 +482,8 @@ void FCEU_ResetVidSys(void)
|
|||||||
if (PAL)
|
if (PAL)
|
||||||
FSettings.dendy = 0;
|
FSettings.dendy = 0;
|
||||||
|
|
||||||
FSettings.normal_scanlines = FSettings.dendy ? SCANLINES_DENDY : SCANLINES_NORMAL;
|
ppu.normal_scanlines = FSettings.dendy ? SCANLINES_DENDY : SCANLINES_NORMAL;
|
||||||
FSettings.totalscanlines = FSettings.normal_scanlines + (FSettings.overclock_enabled ? FSettings.extrascanlines : 0);
|
ppu.totalscanlines = ppu.normal_scanlines + (ppu.overclock_enabled ? ppu.extrascanlines : 0);
|
||||||
|
|
||||||
FCEUPPU_SetVideoSystem(w || FSettings.dendy);
|
FCEUPPU_SetVideoSystem(w || FSettings.dendy);
|
||||||
SetSoundVariables();
|
SetSoundVariables();
|
||||||
|
|||||||
@@ -88,14 +88,6 @@ typedef struct {
|
|||||||
int soundq;
|
int soundq;
|
||||||
int lowpass;
|
int lowpass;
|
||||||
|
|
||||||
/* PPU Overclocking */
|
|
||||||
int overclock_enabled; /* 1 : enable, 0 : disable duh! */
|
|
||||||
int skip_7bit_overclocking; /* 7-bit samples have priority over overclocking */
|
|
||||||
int extrascanlines;
|
|
||||||
int vblankscanlines;
|
|
||||||
int normal_scanlines; /* 240 : normal, 290 : dendy */
|
|
||||||
int totalscanlines;
|
|
||||||
|
|
||||||
int show_crosshair;
|
int show_crosshair;
|
||||||
int ramstate;
|
int ramstate;
|
||||||
int dendy;
|
int dendy;
|
||||||
|
|||||||
24
src/ppu.c
24
src/ppu.c
@@ -64,6 +64,8 @@ static uint32 ppulut1[256];
|
|||||||
static uint32 ppulut2[256];
|
static uint32 ppulut2[256];
|
||||||
static uint32 ppulut3[128];
|
static uint32 ppulut3[128];
|
||||||
|
|
||||||
|
FCEU_PPU ppu;
|
||||||
|
|
||||||
static void makeppulut(void) {
|
static void makeppulut(void) {
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
@@ -660,7 +662,7 @@ static void DoLine(void)
|
|||||||
uint8 *target = NULL;
|
uint8 *target = NULL;
|
||||||
uint8 *dtarget = NULL;
|
uint8 *dtarget = NULL;
|
||||||
|
|
||||||
if (scanline >= 240 && scanline != FSettings.totalscanlines)
|
if (scanline >= 240 && scanline != ppu.totalscanlines)
|
||||||
{
|
{
|
||||||
X6502_Run(256 + 69);
|
X6502_Run(256 + 69);
|
||||||
scanline++;
|
scanline++;
|
||||||
@@ -1166,10 +1168,10 @@ int FCEUPPU_Loop(int skip) {
|
|||||||
TriggerNMI();
|
TriggerNMI();
|
||||||
}
|
}
|
||||||
X6502_Run((scanlines_per_frame - 242) * (256 + 85) - 12);
|
X6502_Run((scanlines_per_frame - 242) * (256 + 85) - 12);
|
||||||
if (FSettings.overclock_enabled && FSettings.vblankscanlines) {
|
if (ppu.overclock_enabled && ppu.vblankscanlines) {
|
||||||
if (!DMC_7bit || !FSettings.skip_7bit_overclocking) {
|
if (!DMC_7bit || !ppu.skip_7bit_overclocking) {
|
||||||
overclocking = 1;
|
overclocking = 1;
|
||||||
X6502_Run(FSettings.vblankscanlines * (256 + 85) - 12);
|
X6502_Run(ppu.vblankscanlines * (256 + 85) - 12);
|
||||||
overclocking = 0;
|
overclocking = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1203,7 +1205,7 @@ int FCEUPPU_Loop(int skip) {
|
|||||||
kook ^= 1;
|
kook ^= 1;
|
||||||
}
|
}
|
||||||
if (GameInfo->type == GIT_NSF)
|
if (GameInfo->type == GIT_NSF)
|
||||||
X6502_Run((256 + 85) * FSettings.normal_scanlines);
|
X6502_Run((256 + 85) * ppu.normal_scanlines);
|
||||||
#ifdef FRAMESKIP
|
#ifdef FRAMESKIP
|
||||||
else if (skip) {
|
else if (skip) {
|
||||||
int y;
|
int y;
|
||||||
@@ -1234,19 +1236,19 @@ int FCEUPPU_Loop(int skip) {
|
|||||||
deemp = PPU[1] >> 5;
|
deemp = PPU[1] >> 5;
|
||||||
|
|
||||||
/* manual samples can't play correctly with overclocking */
|
/* manual samples can't play correctly with overclocking */
|
||||||
if (DMC_7bit && FSettings.skip_7bit_overclocking)
|
if (DMC_7bit && ppu.skip_7bit_overclocking)
|
||||||
FSettings.totalscanlines = FSettings.normal_scanlines;
|
ppu.totalscanlines = ppu.normal_scanlines;
|
||||||
else
|
else
|
||||||
FSettings.totalscanlines = FSettings.normal_scanlines + (FSettings.overclock_enabled ? FSettings.extrascanlines : 0);
|
ppu.totalscanlines = ppu.normal_scanlines + (ppu.overclock_enabled ? ppu.extrascanlines : 0);
|
||||||
|
|
||||||
for (scanline = 0; scanline < FSettings.totalscanlines; ) { /* scanline is incremented in DoLine. Evil. :/ */
|
for (scanline = 0; scanline < ppu.totalscanlines; ) { /* scanline is incremented in DoLine. Evil. :/ */
|
||||||
deempcnt[deemp]++;
|
deempcnt[deemp]++;
|
||||||
/* if ((PPUViewer) && (scanline == PPUViewScanline)) UpdatePPUView(1); */
|
/* if ((PPUViewer) && (scanline == PPUViewScanline)) UpdatePPUView(1); */
|
||||||
DoLine();
|
DoLine();
|
||||||
if (scanline < FSettings.normal_scanlines || scanline == FSettings.totalscanlines)
|
if (scanline < ppu.normal_scanlines || scanline == ppu.totalscanlines)
|
||||||
overclocking = 0;
|
overclocking = 0;
|
||||||
else {
|
else {
|
||||||
if (DMC_7bit && FSettings.skip_7bit_overclocking) /* 7bit sample started after 240th line */
|
if (DMC_7bit && ppu.skip_7bit_overclocking) /* 7bit sample started after 240th line */
|
||||||
break;
|
break;
|
||||||
overclocking = 1;
|
overclocking = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
12
src/ppu.h
12
src/ppu.h
@@ -1,6 +1,18 @@
|
|||||||
#ifndef _FCEU_PPU_H
|
#ifndef _FCEU_PPU_H
|
||||||
#define _FCEU_PPU_H
|
#define _FCEU_PPU_H
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
/* PPU Overclocking */
|
||||||
|
int overclock_enabled; /* 1 : enable, 0 : disable duh! */
|
||||||
|
int skip_7bit_overclocking; /* 7-bit samples have priority over overclocking */
|
||||||
|
int extrascanlines;
|
||||||
|
int vblankscanlines;
|
||||||
|
int normal_scanlines; /* 240 : normal, 290 : dendy */
|
||||||
|
int totalscanlines;
|
||||||
|
} FCEU_PPU;
|
||||||
|
|
||||||
|
extern FCEU_PPU ppu;
|
||||||
|
|
||||||
void FCEUPPU_Init(void);
|
void FCEUPPU_Init(void);
|
||||||
void FCEUPPU_Reset(void);
|
void FCEUPPU_Reset(void);
|
||||||
void FCEUPPU_Power(void);
|
void FCEUPPU_Power(void);
|
||||||
|
|||||||
@@ -52,15 +52,15 @@ int FCEU_InitVirtualVideo(void)
|
|||||||
{
|
{
|
||||||
/* 256 bytes per scanline, * 240 scanline maximum, +8 for alignment, */
|
/* 256 bytes per scanline, * 240 scanline maximum, +8 for alignment, */
|
||||||
if (!XBuf)
|
if (!XBuf)
|
||||||
XBuf = (uint8*)(FCEU_malloc(256 * (256 + FSettings.extrascanlines + 8)));
|
XBuf = (uint8*)(FCEU_malloc(256 * (256 + ppu.extrascanlines + 8)));
|
||||||
if (!XDBuf)
|
if (!XDBuf)
|
||||||
XDBuf = (uint8*)(FCEU_malloc(256 * (256 + FSettings.extrascanlines + 8)));
|
XDBuf = (uint8*)(FCEU_malloc(256 * (256 + ppu.extrascanlines + 8)));
|
||||||
|
|
||||||
if (!XBuf || !XDBuf)
|
if (!XBuf || !XDBuf)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
memset(XBuf, 128, 256 * (256 + FSettings.extrascanlines + 8));
|
memset(XBuf, 128, 256 * (256 + ppu.extrascanlines + 8));
|
||||||
memset(XDBuf, 128, 256 * (256 + FSettings.extrascanlines + 8));
|
memset(XDBuf, 128, 256 * (256 + ppu.extrascanlines + 8));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user