Libretro: Added overclocking options

This commit is contained in:
Sour 2019-07-19 19:59:09 -04:00
parent c880c55d53
commit 49df8ab7d0
3 changed files with 39 additions and 2 deletions

View file

@ -2141,7 +2141,8 @@ void Ppu::Serialize(Serializer &s)
_mode7.CenterX, _mode7.CenterY, _mode7.ExtBgEnabled, _mode7.FillWithTile0, _mode7.HorizontalMirroring,
_mode7.HScroll, _mode7.LargeMap, _mode7.Matrix[0], _mode7.Matrix[1], _mode7.Matrix[2], _mode7.Matrix[3],
_mode7.ValueLatch, _mode7.VerticalMirroring, _mode7.VScroll, unused_oamRenderAddress, _oddFrame, _vblankStartScanline,
_cgramAddressLatch, _cgramWriteBuffer, _nmiScanline, _vblankEndScanline, _adjustedVblankEndScanline, _baseVblankEndScanline
_cgramAddressLatch, _cgramWriteBuffer, _nmiScanline, _vblankEndScanline, _adjustedVblankEndScanline, _baseVblankEndScanline,
_overclockEnabled
);
for(int i = 0; i < 4; i++) {

View file

@ -404,7 +404,7 @@ void Spc::Serialize(Serializer &s)
_dsp->set_output(_soundBuffer, Spc::SampleBufferSize >> 1);
}
s.Stream(_operandA, _operandB, _tmp1, _tmp2, _tmp3, _opCode, _opStep, _opSubStep);
s.Stream(_operandA, _operandB, _tmp1, _tmp2, _tmp3, _opCode, _opStep, _opSubStep, _enabled);
}
uint8_t Spc::GetOpCode()

View file

@ -39,6 +39,8 @@ static constexpr const char* MesenAspectRatio = "mesen-s_aspect_ratio";
static constexpr const char* MesenOverscanVertical = "mesen-s_overscan_vertical";
static constexpr const char* MesenOverscanHorizontal = "mesen-s_overscan_horizontal";
static constexpr const char* MesenRamState = "mesen-s_ramstate";
static constexpr const char* MesenOverclock = "mesen-s_overclock";
static constexpr const char* MesenOverclockType = "mesen-s_overclock_type";
extern "C" {
void logMessage(retro_log_level level, const char* message)
@ -101,6 +103,8 @@ extern "C" {
{ MesenOverscanVertical, "Vertical Overscan; None|8px|16px" },
{ MesenOverscanHorizontal, "Horizontal Overscan; None|8px|16px" },
{ MesenAspectRatio, "Aspect Ratio; Auto|No Stretching|NTSC|PAL|4:3|16:9" },
{ MesenOverclock, "Overclock; None|Low|Medium|High|Very High" },
{ MesenOverclockType, "Overclock Type; Before NMI|After NMI" },
{ MesenRamState, "Default power-on state for RAM; Random Values (Default)|All 0s|All 1s" },
{ NULL, NULL },
};
@ -224,6 +228,38 @@ extern "C" {
}
}
bool beforeNmi = true;
if(readVariable(MesenOverclockType, var)) {
string value = string(var.value);
if(value == "After NMI") {
beforeNmi = false;
}
}
if(readVariable(MesenOverclock, var)) {
string value = string(var.value);
int lineCount = 0;
if(value == "None") {
lineCount = 0;
} else if(value == "Low") {
lineCount = 100;
} else if(value == "Medium") {
lineCount = 250;
} else if(value == "High") {
lineCount = 500;
} else if(value == "Very High") {
lineCount = 1000;
}
if(beforeNmi) {
emulation.PpuExtraScanlinesBeforeNmi = lineCount;
emulation.PpuExtraScanlinesAfterNmi = 0;
} else {
emulation.PpuExtraScanlinesAfterNmi = lineCount;
emulation.PpuExtraScanlinesBeforeNmi = 0;
}
}
int overscanHorizontal = 0;
int overscanVertical = 0;
if(readVariable(MesenOverscanHorizontal, var)) {