bsnes-hd/bsnes/target-bsnes/settings/emulator.cpp
2020-01-12 22:12:37 +01:00

128 lines
6.7 KiB
C++

auto EmulatorSettings::create() -> void {
setCollapsible();
setVisible(false);
optionsLabel.setText("Options").setFont(Font().setBold());
warnOnUnverifiedGames.setText("Warn when loading games that have not been verified").setChecked(settings.emulator.warnOnUnverifiedGames).onToggle([&] {
settings.emulator.warnOnUnverifiedGames = warnOnUnverifiedGames.checked();
});
autoSaveMemory.setText("Auto-save memory periodically").setChecked(settings.emulator.autoSaveMemory.enable).onToggle([&] {
settings.emulator.autoSaveMemory.enable = autoSaveMemory.checked();
});
autoSaveStateOnUnload.setText("Auto-save undo state when unloading games").setChecked(settings.emulator.autoSaveStateOnUnload).onToggle([&] {
settings.emulator.autoSaveStateOnUnload = autoSaveStateOnUnload.checked();
if(!autoSaveStateOnUnload.checked()) {
autoLoadStateOnLoad.setEnabled(false).setChecked(false).doToggle();
} else {
autoLoadStateOnLoad.setEnabled(true);
}
}).doToggle();
autoLoadStateOnLoad.setText("Auto-resume on load").setChecked(settings.emulator.autoLoadStateOnLoad).onToggle([&] {
settings.emulator.autoLoadStateOnLoad = autoLoadStateOnLoad.checked();
});
optionsSpacer.setColor({192, 192, 192});
fastForwardLabel.setText("Fast Forward").setFont(Font().setBold());
frameSkipLabel.setText("Frame skip:").setToolTip({
"Set how many frames to skip while fast forwarding.\n"
"Frame skipping allows a higher maximum fast forwarding frame rate."
});
frameSkipAmount.append(ComboButtonItem().setText("None"));
frameSkipAmount.append(ComboButtonItem().setText("1 frame"));
frameSkipAmount.append(ComboButtonItem().setText("2 frames"));
frameSkipAmount.append(ComboButtonItem().setText("3 frames"));
frameSkipAmount.append(ComboButtonItem().setText("4 frames"));
frameSkipAmount.append(ComboButtonItem().setText("5 frames"));
frameSkipAmount.append(ComboButtonItem().setText("6 frames"));
frameSkipAmount.append(ComboButtonItem().setText("7 frames"));
frameSkipAmount.append(ComboButtonItem().setText("8 frames"));
frameSkipAmount.append(ComboButtonItem().setText("9 frames"));
frameSkipAmount.item(settings.fastForward.frameSkip).setSelected();
frameSkipAmount.onChange([&] {
settings.fastForward.frameSkip = frameSkipAmount.selected().offset();
});
limiterLabel.setText("Limiter:").setToolTip({
"Set the maximum speed when fast forwarding."
});
limiterAmount.append(ComboButtonItem().setText("None"));
limiterAmount.append(ComboButtonItem().setText("200%"));
limiterAmount.append(ComboButtonItem().setText("300%"));
limiterAmount.append(ComboButtonItem().setText("400%"));
limiterAmount.append(ComboButtonItem().setText("500%"));
limiterAmount.append(ComboButtonItem().setText("600%"));
limiterAmount.append(ComboButtonItem().setText("700%"));
limiterAmount.append(ComboButtonItem().setText("800%"));
if(settings.fastForward.limiter == 0) limiterAmount.item(0).setSelected();
if(settings.fastForward.limiter == 2) limiterAmount.item(1).setSelected();
if(settings.fastForward.limiter == 3) limiterAmount.item(2).setSelected();
if(settings.fastForward.limiter == 4) limiterAmount.item(3).setSelected();
if(settings.fastForward.limiter == 5) limiterAmount.item(4).setSelected();
if(settings.fastForward.limiter == 6) limiterAmount.item(5).setSelected();
if(settings.fastForward.limiter == 7) limiterAmount.item(6).setSelected();
if(settings.fastForward.limiter == 8) limiterAmount.item(7).setSelected();
limiterAmount.onChange([&] {
auto index = limiterAmount.selected().offset();
if(index == 0) settings.fastForward.limiter = 0;
if(index == 1) settings.fastForward.limiter = 2;
if(index == 2) settings.fastForward.limiter = 3;
if(index == 3) settings.fastForward.limiter = 4;
if(index == 4) settings.fastForward.limiter = 5;
if(index == 5) settings.fastForward.limiter = 6;
if(index == 6) settings.fastForward.limiter = 7;
if(index == 7) settings.fastForward.limiter = 8;
});
fastForwardMute.setText("Mute while fast forwarding").setChecked(settings.fastForward.mute).onToggle([&] {
settings.fastForward.mute = fastForwardMute.checked();
});
fastForwardSpacer.setColor({192, 192, 192});
rewindLabel.setText("Rewind").setFont(Font().setBold());
rewindFrequencyLabel.setText("Frequency:");
rewindFrequencyOption.append(ComboButtonItem().setText("Disabled"));
rewindFrequencyOption.append(ComboButtonItem().setText("Every 10 frames"));
rewindFrequencyOption.append(ComboButtonItem().setText("Every 20 frames"));
rewindFrequencyOption.append(ComboButtonItem().setText("Every 30 frames"));
rewindFrequencyOption.append(ComboButtonItem().setText("Every 40 frames"));
rewindFrequencyOption.append(ComboButtonItem().setText("Every 50 frames"));
rewindFrequencyOption.append(ComboButtonItem().setText("Every 60 frames"));
if(settings.rewind.frequency == 0) rewindFrequencyOption.item(0).setSelected();
if(settings.rewind.frequency == 10) rewindFrequencyOption.item(1).setSelected();
if(settings.rewind.frequency == 20) rewindFrequencyOption.item(2).setSelected();
if(settings.rewind.frequency == 30) rewindFrequencyOption.item(3).setSelected();
if(settings.rewind.frequency == 40) rewindFrequencyOption.item(4).setSelected();
if(settings.rewind.frequency == 50) rewindFrequencyOption.item(5).setSelected();
if(settings.rewind.frequency == 60) rewindFrequencyOption.item(6).setSelected();
rewindFrequencyOption.onChange([&] {
settings.rewind.frequency = rewindFrequencyOption.selected().offset() * 10;
program.rewindReset();
});
rewindLengthLabel.setText("Length:");
rewindLengthOption.append(ComboButtonItem().setText( "10 states"));
rewindLengthOption.append(ComboButtonItem().setText( "20 states"));
rewindLengthOption.append(ComboButtonItem().setText( "40 states"));
rewindLengthOption.append(ComboButtonItem().setText( "80 states"));
rewindLengthOption.append(ComboButtonItem().setText("160 states"));
rewindLengthOption.append(ComboButtonItem().setText("320 states"));
if(settings.rewind.length == 10) rewindLengthOption.item(0).setSelected();
if(settings.rewind.length == 20) rewindLengthOption.item(1).setSelected();
if(settings.rewind.length == 40) rewindLengthOption.item(2).setSelected();
if(settings.rewind.length == 80) rewindLengthOption.item(3).setSelected();
if(settings.rewind.length == 160) rewindLengthOption.item(4).setSelected();
if(settings.rewind.length == 320) rewindLengthOption.item(5).setSelected();
rewindLengthOption.onChange([&] {
settings.rewind.length = 10 << rewindLengthOption.selected().offset();
program.rewindReset();
});
rewindMute.setText("Mute while rewinding").setChecked(settings.rewind.mute).onToggle([&] {
settings.rewind.mute = rewindMute.checked();
});
}