bsnes-mt/bsnes/target-bsnes/settings/_enhancements.cpp
2020-09-13 04:16:49 +03:00

212 lines
No EOL
7.6 KiB
C++

/* MT. */
#include "bsnes-mt/translations.h"
namespace bmt = bsnesMt::translations;
/* /MT. */
auto EnhancementSettings::create() -> void {
setCollapsible();
setVisible(false);
/* MT. */
string framesString = bmt::get("Settings.Enhancements.RunAhead.Frames").data();
char space = ' ';
/* /MT. */
runAheadLabel.setText(bmt::get("Settings.Enhancements.RunAhead").data()).setFont(Font().setBold());
runAhead0.setText(bmt::get("Common.Disabled").data()).onActivate([&] {
settings.emulator.runAhead.frames = 0;
});
runAhead1.setText({bmt::get("Settings.Enhancements.RunAhead.One").data(), space, bmt::get("Settings.Common.FrameLowercase").data()})
.onActivate([&] {
settings.emulator.runAhead.frames = 1;
});
runAhead2.setText({bmt::get("Settings.Enhancements.RunAhead.Two").data(), space, framesString})
.onActivate([&] {
settings.emulator.runAhead.frames = 2;
});
runAhead3.setText({bmt::get("Settings.Enhancements.RunAhead.Three").data(), space, framesString})
.onActivate([&] {
settings.emulator.runAhead.frames = 3;
});
runAhead4.setText({bmt::get("Settings.Enhancements.RunAhead.Four").data(), space, framesString})
.onActivate([&] {
settings.emulator.runAhead.frames = 4;
});
auto frames = settings.emulator.runAhead.frames; // MT.
if (frames == 0) {
runAhead0.setChecked();
}
else if (frames == 1) {
runAhead1.setChecked();
}
else if (frames == 2) {
runAhead2.setChecked();
}
else if (frames == 3) {
runAhead3.setChecked();
}
else if (frames == 4) {
runAhead4.setChecked();
}
Color spacerColor = {192, 192, 192}; // MT.
runAheadSpacer.setColor(spacerColor);
overclockingLabel.setText(bmt::get("Settings.Enhancements.Overclocking").data()).setFont(Font().setBold());
overclockingLayout.setSize({3, 3});
overclockingLayout.column(0).setAlignment(1.0);
overclockingLayout.column(1).setAlignment(0.5);
cpuLabel.setText("CPU:");
cpuClock.setLength(301).setPosition((settings.emulator.hack.cpu.overclock - 100))
.onChange([&] {
settings.emulator.hack.cpu.overclock = cpuClock.position() + 100;
emulator->configure("Hacks/CPU/Overclock", settings.emulator.hack.cpu.overclock);
cpuValue.setText({settings.emulator.hack.cpu.overclock, "%"});
})
.doChange();
sa1Label.setText("SA-1:");
sa1Clock.setLength(301).setPosition((settings.emulator.hack.sa1.overclock - 100))
.onChange([&] {
settings.emulator.hack.sa1.overclock = sa1Clock.position() + 100;
emulator->configure("Hacks/SA1/Overclock", settings.emulator.hack.sa1.overclock);
sa1Value.setText({settings.emulator.hack.sa1.overclock, "%"});
})
.doChange();
sfxLabel.setText("SuperFX:");
sfxClock.setLength(141).setPosition((settings.emulator.hack.superfx.overclock - 100) / 5)
.onChange([&] {
settings.emulator.hack.superfx.overclock = sfxClock.position() * 5 + 100;
emulator->configure("Hacks/SuperFX/Overclock", settings.emulator.hack.superfx.overclock);
sfxValue.setText({settings.emulator.hack.superfx.overclock, "%"});
})
.doChange();
overclockingSpacer.setColor(spacerColor);
ppuLabel.setText({"PPU (", bmt::get("Settings.Enhancements.Ppu.Video").data(), ")"}).setFont(Font().setBold());
fastPPU.setText(bmt::get("Settings.Enhancements.FastMode").data())
.setChecked(settings.emulator.hack.ppu.fast)
.onToggle([&] {
bool checked = fastPPU.checked(); // MT.
settings.emulator.hack.ppu.fast = checked;
noSpriteLimit.setEnabled(checked);
deinterlace.setEnabled(checked);
mode7Layout.setEnabled(checked);
})
.doToggle();
deinterlace.setText(bmt::get("Settings.Enhancements.Ppu.Deinterlace").data())
.setChecked(settings.emulator.hack.ppu.deinterlace)
.onToggle([&] {
settings.emulator.hack.ppu.deinterlace = deinterlace.checked();
emulator->configure("Hacks/PPU/Deinterlace", settings.emulator.hack.ppu.deinterlace);
});
noSpriteLimit.setText(bmt::get("Settings.Enhancements.Ppu.NoSpriteLimit").data())
.setChecked(settings.emulator.hack.ppu.noSpriteLimit)
.onToggle([&] {
settings.emulator.hack.ppu.noSpriteLimit = noSpriteLimit.checked();
});
mode7Label.setText({"HD Mode 7 (", bmt::get("Settings.Enhancements.hdMode7.FastPpuOnly").data(), ")"}).setFont(Font().setBold());
mode7ScaleLabel.setText({bmt::get("Settings.Enhancements.hdMode7.Scale").data(), ':'});
/* MT. */
for (uint8_t i = 1; i < 9; i++) {
mode7Scale.append(ComboButtonItem().setText({240 * i, "p"}).setAttribute("multiplier", i));
}
/* /MT. */
for (uint n = 1; n <= 8; n++) {
if (settings.emulator.hack.ppu.mode7.scale == n) {
mode7Scale.item(n - 1).setSelected();
}
}
mode7Scale.onChange([&] {
settings.emulator.hack.ppu.mode7.scale = mode7Scale.selected().attribute("multiplier").natural();
emulator->configure("Hacks/PPU/Mode7/Scale", settings.emulator.hack.ppu.mode7.scale);
});
mode7Perspective.setText(bmt::get("Settings.Enhancements.hdMode7.PerspectiveCorrection").data())
.setChecked(settings.emulator.hack.ppu.mode7.perspective)
.onToggle([&] {
settings.emulator.hack.ppu.mode7.perspective = mode7Perspective.checked();
emulator->configure("Hacks/PPU/Mode7/Perspective", settings.emulator.hack.ppu.mode7.perspective);
});
mode7Supersample.setText(bmt::get("Settings.Enhancements.hdMode7.Supersampling").data())
.setChecked(settings.emulator.hack.ppu.mode7.supersample)
.onToggle([&] {
settings.emulator.hack.ppu.mode7.supersample = mode7Supersample.checked();
emulator->configure("Hacks/PPU/Mode7/Supersample", settings.emulator.hack.ppu.mode7.supersample);
});
mode7Mosaic.setText(bmt::get("Settings.Enhancements.hdMode7.HdToSdMosaic").data())
.setChecked(settings.emulator.hack.ppu.mode7.mosaic)
.onToggle([&] {
settings.emulator.hack.ppu.mode7.mosaic = mode7Mosaic.checked();
emulator->configure("Hacks/PPU/Mode7/Mosaic", settings.emulator.hack.ppu.mode7.mosaic);
});
dspLabel.setText({"DSP (", bmt::get("Settings.Enhancements.Dsp.Audio").data(), ")"}).setFont(Font().setBold());
fastDSP.setText(bmt::get("Settings.Enhancements.FastMode").data())
.setChecked(settings.emulator.hack.dsp.fast)
.onToggle([&] {
settings.emulator.hack.dsp.fast = fastDSP.checked();
emulator->configure("Hacks/DSP/Fast", settings.emulator.hack.dsp.fast);
});
cubicInterpolation.setText(bmt::get("Settings.Enhancements.Dsp.CubicInterpolation").data())
.setChecked(settings.emulator.hack.dsp.cubic)
.onToggle([&] {
settings.emulator.hack.dsp.cubic = cubicInterpolation.checked();
emulator->configure("Hacks/DSP/Cubic", settings.emulator.hack.dsp.cubic);
});
coprocessorLabel.setText(bmt::get("Settings.Enhancements.Coprocessors").data()).setFont(Font().setBold());
coprocessorDelayedSyncOption.setText(bmt::get("Settings.Enhancements.FastMode").data())
.setChecked(settings.emulator.hack.coprocessor.delayedSync)
.onToggle([&] {
settings.emulator.hack.coprocessor.delayedSync = coprocessorDelayedSyncOption.checked();
});
coprocessorPreferHLEOption.setText(bmt::get("Settings.Enhancements.Coprocessors.PreferHle").data())
.setChecked(settings.emulator.hack.coprocessor.preferHLE)
.setToolTip(bmt::get("Settings.Enhancements.Coprocessors.PreferHle.tooltip").data())
.onToggle([&] {
settings.emulator.hack.coprocessor.preferHLE = coprocessorPreferHLEOption.checked();
});
coprocessorSpacer.setColor(spacerColor);
gameLabel.setText(bmt::get("Settings.Enhancements.GameEnhancements").data()).setFont(Font().setBold());
hotfixes.setText(bmt::get("Settings.Enhancements.GameEnhancements.Hotfixes").data())
.setToolTip(bmt::get("Settings.Enhancements.GameEnhancements.Hotfixes.tooltip").data())
.setChecked(settings.emulator.hack.hotfixes).onToggle([&] {
settings.emulator.hack.hotfixes = hotfixes.checked();
});
note.setText(bmt::get("Settings.noteGameRestart").data());
}