Turbo config refactor followup.
In the Turbo config dialog, remove the selection list for entering the value and leave only the spin control. Allow values above 600%, up to 4000%. Reintroduce the speedup_frame_skip config variable, defaulting to 9, use it for turbo selection values > 600%, with speedup_throttle == 0. The rationale for this is that on average modern hardware, throttle values above 500% or 600% will not be effective. The default is now shown as 1000%, which is: frame_skip == 9 && speedup == 1, where: speedup == 1 is equivalent to throttle == 0, as was the case before the turbo config changes. Values above 600% are automatically rounded up or down to the nearest 100%, on entry and on click of the up/down arrows of the spin control. The frame skip checkbox is cleared and disabled for the "Unlimited" setting (throttle == 0), and set and disabled for values > 600%, to reflect the mechanism to the user. When the value again enters the modifiable range in the spin control, the previous value of the checkbox is restored. Misc: - Turn off translation of percentage values in the xrc. - Remove the size element for the throttle selection list in the general config dialog xrc, it breaks the layout on GTK3. - Add a note about passing wxWidgets_CONFIG_EXECUTABLE to cmake to select wxWidgets version to README.md. Hopefully this will reduce confusion and present a nicer UI. Signed-off-by: Rafael Kitover <rkitover@gmail.com>
This commit is contained in:
parent
51b66714c5
commit
1347026d40
|
@ -204,6 +204,10 @@ Note for distro packagers, we use the CMake module
|
|||
[GNUInstallDirs](https://cmake.org/cmake/help/v2.8.12/cmake.html#module:GNUInstallDirs)
|
||||
to configure installation directories.
|
||||
|
||||
On Unix to use a different version of wxWidgets, set
|
||||
`wxWidgets_CONFIG_EXECUTABLE` to the path to the `wx-config` script you want to
|
||||
use.
|
||||
|
||||
## MSys2 Notes
|
||||
|
||||
To run the resulting binary, you can simply type:
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-04 01:24+0000\n"
|
||||
"POT-Creation-Date: 2020-05-09 07:12+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -17,51 +17,51 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: wxvbam.cpp:240
|
||||
#: wxvbam.cpp:226
|
||||
msgid "visualboyadvance-m"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:454
|
||||
#: wxvbam.cpp:440
|
||||
msgid "Could not create main window"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:526
|
||||
#: wxvbam.cpp:511
|
||||
msgid "Save built-in XRC file and exit"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:529
|
||||
#: wxvbam.cpp:514
|
||||
msgid "Save built-in vba-over.ini and exit"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:532
|
||||
#: wxvbam.cpp:517
|
||||
msgid "Print configuration path and exit"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:535
|
||||
#: wxvbam.cpp:520
|
||||
msgid "Start in full-screen mode"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:539
|
||||
#: wxvbam.cpp:524
|
||||
msgid "Delete shared link state first, if it exists"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:546
|
||||
#: wxvbam.cpp:531
|
||||
msgid "List all settable options and exit"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:549
|
||||
#: wxvbam.cpp:534
|
||||
msgid "ROM file"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:551
|
||||
#: wxvbam.cpp:536
|
||||
msgid "<config>=<value>"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:582
|
||||
#: wxvbam.cpp:567
|
||||
msgid "Configuration/build error: can't find built-in xrc"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:590
|
||||
#: wxvbam.cpp:575
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Wrote built-in configuration to %s.\n"
|
||||
|
@ -70,11 +70,11 @@ msgid ""
|
|||
"built-in:"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:605
|
||||
#: wxvbam.cpp:590
|
||||
msgid "Configuration is read from, in order:"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:619
|
||||
#: wxvbam.cpp:604
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Wrote built-in override file to %s\n"
|
||||
|
@ -82,13 +82,13 @@ msgid ""
|
|||
"from search path:"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:625
|
||||
#: wxvbam.cpp:610
|
||||
msgid ""
|
||||
"\n"
|
||||
"\tbuilt-in"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:636
|
||||
#: wxvbam.cpp:621
|
||||
msgid ""
|
||||
"Options set from the command line are saved if any configuration changes are "
|
||||
"made in the user interface.\n"
|
||||
|
@ -97,13 +97,13 @@ msgid ""
|
|||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:657
|
||||
#: wxvbam.cpp:642
|
||||
msgid ""
|
||||
"The commands available for the Keyboard/* option are:\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: wxvbam.cpp:691
|
||||
#: wxvbam.cpp:676
|
||||
msgid "Bad configuration option or multiple ROM files given:\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -286,62 +286,62 @@ msgstr ""
|
|||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:2681
|
||||
#: guiinit.cpp:2712
|
||||
msgid "Main icon not found"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:2691
|
||||
#: guiinit.cpp:2722
|
||||
msgid "Browse"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:2705
|
||||
#: guiinit.cpp:2736
|
||||
msgid "Main display panel not found"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:2854
|
||||
#: guiinit.cpp:2885
|
||||
#, c-format
|
||||
msgid "Duplicate menu accelerator: %s for %s and %s; keeping first"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:2868
|
||||
#: guiinit.cpp:2899
|
||||
#, c-format
|
||||
msgid "Menu accelerator %s for %s overrides default for %s ; keeping menu"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:3006
|
||||
#: guiinit.cpp:3037
|
||||
#, c-format
|
||||
msgid "Invalid menu item %s; removing"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:3214
|
||||
#: guiinit.cpp:3245
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:3223
|
||||
#: guiinit.cpp:3254
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:3297 xrc/CheatAdd.xrc:31
|
||||
#: guiinit.cpp:3328 xrc/CheatAdd.xrc:31
|
||||
msgid "Address"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:3298
|
||||
#: guiinit.cpp:3329
|
||||
msgid "Old Value"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:3299
|
||||
#: guiinit.cpp:3330
|
||||
msgid "New Value"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:3811
|
||||
#: guiinit.cpp:3846
|
||||
msgid "Menu commands"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:3834
|
||||
#: guiinit.cpp:3869
|
||||
msgid "Other commands"
|
||||
msgstr ""
|
||||
|
||||
#: guiinit.cpp:3945
|
||||
#: guiinit.cpp:3980
|
||||
msgid "JoyBus host invalid; disabling"
|
||||
msgstr ""
|
||||
|
||||
|
@ -804,18 +804,18 @@ msgstr ""
|
|||
msgid "Could not initialize the sound driver!"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:2772
|
||||
#: cmdevents.cpp:2768
|
||||
msgid "Nintendo GameBoy (+Color+Advance) emulator."
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:2773
|
||||
#: cmdevents.cpp:2769
|
||||
msgid ""
|
||||
"Copyright (C) 1999-2003 Forgotten\n"
|
||||
"Copyright (C) 2004-2006 VBA development team\n"
|
||||
"Copyright (C) 2007-2017 VBA-M development team"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:2774
|
||||
#: cmdevents.cpp:2770
|
||||
msgid ""
|
||||
"This program is free software: you can redistribute it and/or modify\n"
|
||||
"it under the terms of the GNU General Public License as published by\n"
|
||||
|
@ -831,35 +831,35 @@ msgid ""
|
|||
"along with this program. If not, see http://www.gnu.org/licenses ."
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:3076
|
||||
#: cmdevents.cpp:3072
|
||||
msgid "LAN link is already active. Disable link mode to disconnect."
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:3082
|
||||
#: cmdevents.cpp:3078
|
||||
msgid "Network is not supported in local mode."
|
||||
msgstr ""
|
||||
|
||||
#: opts.cpp:560 opts.cpp:865
|
||||
#: opts.cpp:561 opts.cpp:866
|
||||
#, c-format
|
||||
msgid "Invalid value %s for option %s; valid values are %s%s%s"
|
||||
msgstr ""
|
||||
|
||||
#: opts.cpp:577 opts.cpp:877
|
||||
#: opts.cpp:578 opts.cpp:878
|
||||
#, c-format
|
||||
msgid "Invalid value %d for option %s; valid values are %d - %d"
|
||||
msgstr ""
|
||||
|
||||
#: opts.cpp:584 opts.cpp:593 opts.cpp:885 opts.cpp:893
|
||||
#: opts.cpp:585 opts.cpp:594 opts.cpp:886 opts.cpp:894
|
||||
#, c-format
|
||||
msgid "Invalid value %f for option %s; valid values are %f - %f"
|
||||
msgstr ""
|
||||
|
||||
#: opts.cpp:653 opts.cpp:674 opts.cpp:962 opts.cpp:988
|
||||
#: opts.cpp:654 opts.cpp:675 opts.cpp:963 opts.cpp:989
|
||||
#, c-format
|
||||
msgid "Invalid key binding %s for %s"
|
||||
msgstr ""
|
||||
|
||||
#: opts.cpp:848
|
||||
#: opts.cpp:849
|
||||
#, c-format
|
||||
msgid "Invalid flag option %s - %s ignored"
|
||||
msgstr ""
|
||||
|
@ -1148,22 +1148,22 @@ msgstr ""
|
|||
msgid "CONTROL"
|
||||
msgstr ""
|
||||
|
||||
#: widgets/sdljoy.cpp:129
|
||||
#: widgets/sdljoy.cpp:130
|
||||
#, c-format
|
||||
msgid "Connected game controller %d"
|
||||
msgstr ""
|
||||
|
||||
#: widgets/sdljoy.cpp:143
|
||||
#: widgets/sdljoy.cpp:144
|
||||
#, c-format
|
||||
msgid "Disconnected game controller %d"
|
||||
msgstr ""
|
||||
|
||||
#: widgets/sdljoy.cpp:229
|
||||
#: widgets/sdljoy.cpp:230
|
||||
#, c-format
|
||||
msgid "Connected joystick %d"
|
||||
msgstr ""
|
||||
|
||||
#: widgets/sdljoy.cpp:246
|
||||
#: widgets/sdljoy.cpp:247
|
||||
#, c-format
|
||||
msgid "Disconnected joystick %d"
|
||||
msgstr ""
|
||||
|
@ -2396,104 +2396,8 @@ msgstr ""
|
|||
msgid "0 = no throttle"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:114 xrc/SpeedupConfig.xrc:45
|
||||
msgid "Full Speed/No Limit"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:115 xrc/SpeedupConfig.xrc:46
|
||||
msgid "25%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:116 xrc/SpeedupConfig.xrc:47
|
||||
msgid "50%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:117 xrc/SpeedupConfig.xrc:48
|
||||
msgid "75%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:118 xrc/SoundConfig.xrc:45 xrc/SpeedupConfig.xrc:49
|
||||
msgid "100%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:119 xrc/SpeedupConfig.xrc:50
|
||||
msgid "125%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:120 xrc/SpeedupConfig.xrc:51
|
||||
msgid "150%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:121 xrc/SpeedupConfig.xrc:52
|
||||
msgid "175%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:122 xrc/SpeedupConfig.xrc:53
|
||||
msgid "200%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:123 xrc/SpeedupConfig.xrc:54
|
||||
msgid "225%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:124 xrc/SpeedupConfig.xrc:55
|
||||
msgid "250%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:125 xrc/SpeedupConfig.xrc:56
|
||||
msgid "275%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:126 xrc/SpeedupConfig.xrc:57
|
||||
msgid "300%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:127 xrc/SpeedupConfig.xrc:58
|
||||
msgid "325%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:128 xrc/SpeedupConfig.xrc:59
|
||||
msgid "350%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:129 xrc/SpeedupConfig.xrc:60
|
||||
msgid "375%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:130 xrc/SpeedupConfig.xrc:61
|
||||
msgid "400%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:131 xrc/SpeedupConfig.xrc:62
|
||||
msgid "425%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:132 xrc/SpeedupConfig.xrc:63
|
||||
msgid "450%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:133 xrc/SpeedupConfig.xrc:64
|
||||
msgid "475%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:134 xrc/SpeedupConfig.xrc:65
|
||||
msgid "500%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:135 xrc/SpeedupConfig.xrc:66
|
||||
msgid "525%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:136 xrc/SpeedupConfig.xrc:67
|
||||
msgid "550%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:137 xrc/SpeedupConfig.xrc:68
|
||||
msgid "575%"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/GeneralConfig.xrc:138 xrc/SpeedupConfig.xrc:69
|
||||
msgid "600%"
|
||||
#: xrc/GeneralConfig.xrc:114 xrc/SpeedupConfig.xrc:36
|
||||
msgid "Unlimited"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/IOViewer.xrc:4
|
||||
|
@ -3712,7 +3616,7 @@ msgstr ""
|
|||
msgid "Speedup Throttle"
|
||||
msgstr ""
|
||||
|
||||
#: xrc/SpeedupConfig.xrc:84
|
||||
#: xrc/SpeedupConfig.xrc:83
|
||||
msgid "Frame skip"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -114,6 +114,7 @@ enum named_opts
|
|||
OPT_WINDOW_POSITION_Y,
|
||||
OPT_WINDOW_WIDTH,
|
||||
OPT_SPEEDUP_THROTTLE,
|
||||
OPT_SPEEDUP_FRAME_SKIP,
|
||||
OPT_NO_SPEEDUP_THROTTLE_FRAME_SKIP
|
||||
};
|
||||
|
||||
|
@ -256,7 +257,8 @@ uint32_t autoFrameSkipLastTime;
|
|||
uint32_t movieLastJoypad;
|
||||
uint32_t movieNextJoypad;
|
||||
uint32_t throttle = 100;
|
||||
uint32_t speedup_throttle = 100;
|
||||
uint32_t speedup_throttle = 0;
|
||||
uint32_t speedup_frame_skip = 9;
|
||||
bool speedup_throttle_frame_skip = true;
|
||||
|
||||
const char* preparedCheatCodes[MAX_CHEATS];
|
||||
|
@ -392,6 +394,7 @@ struct option argOptions[] = {
|
|||
{ "thread-priority", required_argument, 0, OPT_THREAD_PRIORITY },
|
||||
{ "throttle", required_argument, 0, 'T' },
|
||||
{ "speedup-throttle", required_argument, 0, OPT_SPEEDUP_THROTTLE },
|
||||
{ "speedup-frame-skip", required_argument, 0, OPT_SPEEDUP_FRAME_SKIP },
|
||||
{ "no-speedup-throttle-frame-skip", no_argument, 0, OPT_NO_SPEEDUP_THROTTLE_FRAME_SKIP },
|
||||
{ "triple-buffering", no_argument, &tripleBuffering, 1 },
|
||||
{ "use-bios", no_argument, &useBios, 1 },
|
||||
|
@ -554,7 +557,8 @@ void LoadConfig()
|
|||
soundRecordDir = ReadPrefString("soundRecordDir");
|
||||
threadPriority = ReadPref("priority", 2);
|
||||
throttle = ReadPref("throttle", 100);
|
||||
speedup_throttle = ReadPref("speedupThrottle", 100);
|
||||
speedup_throttle = ReadPref("speedupThrottle", 0);
|
||||
speedup_frame_skip = ReadPref("speedupFrameSkip", 9);
|
||||
speedup_throttle_frame_skip = ReadPref("speedupThrottleFrameSkip", 1);
|
||||
tripleBuffering = ReadPref("tripleBuffering", 0);
|
||||
useBios = ReadPrefHex("useBiosGBA");
|
||||
|
@ -1364,6 +1368,10 @@ int ReadOpts(int argc, char ** argv)
|
|||
if (optarg)
|
||||
speedup_throttle = atoi(optarg);
|
||||
break;
|
||||
case OPT_SPEEDUP_FRAME_SKIP:
|
||||
if (optarg)
|
||||
speedup_frame_skip = atoi(optarg);
|
||||
break;
|
||||
case OPT_NO_SPEEDUP_THROTTLE_FRAME_SKIP:
|
||||
speedup_throttle_frame_skip = false;
|
||||
break;
|
||||
|
|
|
@ -147,6 +147,7 @@ extern uint32_t movieLastJoypad;
|
|||
extern uint32_t movieNextJoypad;
|
||||
extern uint32_t throttle;
|
||||
extern uint32_t speedup_throttle;
|
||||
extern uint32_t speedup_frame_skip;
|
||||
extern bool speedup_throttle_frame_skip;
|
||||
|
||||
extern int preparedCheats;
|
||||
|
|
|
@ -4946,11 +4946,12 @@ void gbEmulate(int ticksToStop)
|
|||
int framesToSkip = systemFrameSkip;
|
||||
|
||||
static bool speedup_throttle_set = false;
|
||||
bool turbo_button_pressed = (gbJoymask[0] >> 10) & 1;
|
||||
#ifndef __LIBRETRO__
|
||||
static uint32_t last_throttle;
|
||||
|
||||
if ((gbJoymask[0] >> 10) & 1) {
|
||||
if (speedup_throttle != 100 && !speedup_throttle_set && throttle != speedup_throttle) {
|
||||
if (turbo_button_pressed) {
|
||||
if (!speedup_throttle_set && throttle != speedup_throttle) {
|
||||
last_throttle = throttle;
|
||||
throttle = speedup_throttle;
|
||||
soundSetThrottle(speedup_throttle);
|
||||
|
@ -4960,13 +4961,13 @@ void gbEmulate(int ticksToStop)
|
|||
if (speedup_throttle_set) {
|
||||
if (speedup_throttle_frame_skip) {
|
||||
if (speedup_throttle == 0)
|
||||
framesToSkip += 9;
|
||||
framesToSkip += speedup_frame_skip;
|
||||
else if (speedup_throttle > 100)
|
||||
framesToSkip += std::ceil(double(speedup_throttle) / 100.0) - 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
framesToSkip = 9;
|
||||
framesToSkip = speedup_frame_skip;
|
||||
}
|
||||
else if (speedup_throttle_set) {
|
||||
throttle = last_throttle;
|
||||
|
@ -4975,7 +4976,7 @@ void gbEmulate(int ticksToStop)
|
|||
speedup_throttle_set = false;
|
||||
}
|
||||
#else
|
||||
if ((gbJoymask[0] >> 10) & 1)
|
||||
if (turbo_button_pressed)
|
||||
framesToSkip = 9;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -3792,11 +3792,12 @@ void CPULoop(int ticks)
|
|||
int framesToSkip = systemFrameSkip;
|
||||
|
||||
static bool speedup_throttle_set = false;
|
||||
bool turbo_button_pressed = (joy >> 10) & 1;
|
||||
#ifndef __LIBRETRO__
|
||||
static uint32_t last_throttle;
|
||||
|
||||
if ((joy >> 10) & 1) {
|
||||
if (speedup_throttle != 100 && !speedup_throttle_set && throttle != speedup_throttle) {
|
||||
if (turbo_button_pressed) {
|
||||
if (!speedup_throttle_set && throttle != speedup_throttle) {
|
||||
last_throttle = throttle;
|
||||
throttle = speedup_throttle;
|
||||
soundSetThrottle(speedup_throttle);
|
||||
|
@ -3806,13 +3807,13 @@ void CPULoop(int ticks)
|
|||
if (speedup_throttle_set) {
|
||||
if (speedup_throttle_frame_skip) {
|
||||
if (speedup_throttle == 0)
|
||||
framesToSkip += 9;
|
||||
framesToSkip += speedup_frame_skip;
|
||||
else if (speedup_throttle > 100)
|
||||
framesToSkip += std::ceil(double(speedup_throttle) / 100.0) - 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
framesToSkip = 9;
|
||||
framesToSkip = speedup_frame_skip;
|
||||
}
|
||||
else if (speedup_throttle_set) {
|
||||
throttle = last_throttle;
|
||||
|
@ -3821,7 +3822,7 @@ void CPULoop(int ticks)
|
|||
speedup_throttle_set = false;
|
||||
}
|
||||
#else
|
||||
if ((joy >> 10) & 1)
|
||||
if (turbo_button_pressed)
|
||||
framesToSkip = 9;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2322,8 +2322,18 @@ EVT_HANDLER(SpeedupConfigure, "Speedup / Turbo options...")
|
|||
{
|
||||
wxDialog* dlg = GetXRCDialog("SpeedupConfig");
|
||||
|
||||
unsigned save_speedup_throttle = speedup_throttle;
|
||||
unsigned save_speedup_frame_skip = speedup_frame_skip;
|
||||
bool save_speedup_throttle_frame_skip = speedup_throttle_frame_skip;
|
||||
|
||||
if (ShowModal(dlg) == wxID_OK)
|
||||
update_opts();
|
||||
else {
|
||||
// Restore values if cancel pressed.
|
||||
speedup_throttle = save_speedup_throttle;
|
||||
speedup_frame_skip = save_speedup_frame_skip;
|
||||
speedup_throttle_frame_skip = save_speedup_throttle_frame_skip;
|
||||
}
|
||||
}
|
||||
|
||||
EVT_HANDLER(UIConfigure, "UI Settings...")
|
||||
|
|
|
@ -2357,46 +2357,90 @@ public:
|
|||
}
|
||||
} throttle_ctrl;
|
||||
|
||||
// manage speedup key throttle spinctrl/canned setting choice interaction
|
||||
static class SpeedupThrottleCtrl_t : public wxEvtHandler {
|
||||
public:
|
||||
wxSpinCtrl* speedup_throttle_spin;
|
||||
wxChoice* speedup_throttle_sel;
|
||||
wxCheckBox* frame_skip_cb;
|
||||
|
||||
// set speedup_throttle_sel from speedup_throttle
|
||||
void SetSpeedupThrottleSel(wxSpinEvent& evt)
|
||||
{
|
||||
(void)evt; // unused params
|
||||
DoSetSpeedupThrottleSel(speedup_throttle_spin->GetValue());
|
||||
}
|
||||
|
||||
void DoSetSpeedupThrottleSel(uint32_t val)
|
||||
{
|
||||
if (val <= 600 && val != 100) {
|
||||
speedup_throttle_sel->SetSelection(std::round((double)val / 25));
|
||||
}
|
||||
else
|
||||
speedup_throttle_sel->SetSelection(4);
|
||||
}
|
||||
|
||||
// set speedup_throttle from speedup_throttle_sel
|
||||
void SetSpeedupThrottle(wxCommandEvent& evt)
|
||||
{
|
||||
(void)evt; // unused params
|
||||
uint32_t val = speedup_throttle_sel->GetSelection() * 25;
|
||||
unsigned val = speedup_throttle_spin->GetValue();
|
||||
|
||||
if (val <= 600 && val != 100) {
|
||||
speedup_throttle_spin->SetValue(val);
|
||||
evt.Skip(false);
|
||||
|
||||
if (val == 0) {
|
||||
speedup_throttle = 0;
|
||||
speedup_frame_skip = 0;
|
||||
|
||||
speedup_throttle_frame_skip = false;
|
||||
frame_skip_cb->SetValue(false);
|
||||
frame_skip_cb->Disable();
|
||||
|
||||
if (evt.GetEventType() == wxEVT_TEXT)
|
||||
return; // Do not update value if user cleared text box.
|
||||
}
|
||||
else
|
||||
speedup_throttle_spin->SetValue(100);
|
||||
else if (val <= 600) {
|
||||
speedup_throttle = val;
|
||||
|
||||
frame_skip_cb->SetValue(prev_frame_skip_cb);
|
||||
frame_skip_cb->Enable();
|
||||
}
|
||||
else { // val > 600
|
||||
speedup_throttle = 0;
|
||||
|
||||
unsigned rounded = std::round((double)val / 100) * 100;
|
||||
|
||||
speedup_frame_skip = rounded / 100 - 1;
|
||||
|
||||
// Round up or down to the nearest 100%.
|
||||
// For example, when the up/down buttons are pressed on the spin
|
||||
// control.
|
||||
if ((int)(val - rounded) > 0)
|
||||
speedup_frame_skip++;
|
||||
else if ((int)(val - rounded) < 0)
|
||||
speedup_frame_skip--;
|
||||
|
||||
speedup_throttle_frame_skip = true;
|
||||
frame_skip_cb->SetValue(true);
|
||||
frame_skip_cb->Disable();
|
||||
|
||||
val = (speedup_frame_skip + 1) * 100;
|
||||
}
|
||||
|
||||
speedup_throttle_spin->SetValue(val);
|
||||
}
|
||||
|
||||
void SetSpeedupFrameSkip(wxCommandEvent& evt)
|
||||
{
|
||||
(void)evt; // Unused param.
|
||||
|
||||
bool checked = frame_skip_cb->GetValue();
|
||||
|
||||
speedup_throttle_frame_skip = prev_frame_skip_cb = checked;
|
||||
}
|
||||
|
||||
void Init(wxShowEvent& ev)
|
||||
{
|
||||
uint32_t val = 0;
|
||||
|
||||
if (speedup_throttle != 0)
|
||||
val = speedup_throttle;
|
||||
else if (speedup_frame_skip != 0)
|
||||
val = (speedup_frame_skip + 1) * 100;
|
||||
|
||||
speedup_throttle_spin->SetValue(val);
|
||||
|
||||
frame_skip_cb->SetValue(speedup_throttle_frame_skip);
|
||||
|
||||
prev_frame_skip_cb = frame_skip_cb->GetValue();
|
||||
|
||||
if (val > 600 || val == 0)
|
||||
frame_skip_cb->Disable();
|
||||
|
||||
ev.Skip();
|
||||
DoSetSpeedupThrottleSel(speedup_throttle);
|
||||
}
|
||||
private:
|
||||
bool prev_frame_skip_cb = true;
|
||||
} speedup_throttle_ctrl;
|
||||
|
||||
/////////////////////////////
|
||||
|
@ -3416,23 +3460,39 @@ bool MainFrame::BindControls()
|
|||
NULL, &throttle_ctrl);
|
||||
d->Fit();
|
||||
}
|
||||
|
||||
// SpeedUp Key Config
|
||||
d = LoadXRCDialog("SpeedupConfig");
|
||||
{
|
||||
getsc_uint("SpeedupThrottle", speedup_throttle);
|
||||
getcbb("SpeedupThrottleFrameSkip", speedup_throttle_frame_skip);
|
||||
speedup_throttle_ctrl.speedup_throttle_spin = sc;
|
||||
speedup_throttle_ctrl.speedup_throttle_sel = SafeXRCCTRL<wxChoice>(d, "SpeedupThrottleSel");
|
||||
speedup_throttle_ctrl.speedup_throttle_spin->Connect(wxEVT_COMMAND_SPINCTRL_UPDATED,
|
||||
wxSpinEventHandler(SpeedupThrottleCtrl_t::SetSpeedupThrottleSel),
|
||||
NULL, &speedup_throttle_ctrl);
|
||||
speedup_throttle_ctrl.speedup_throttle_sel->Connect(wxEVT_COMMAND_CHOICE_SELECTED,
|
||||
speedup_throttle_ctrl.frame_skip_cb = SafeXRCCTRL<wxCheckBox>(d, "SpeedupThrottleFrameSkip");
|
||||
speedup_throttle_ctrl.speedup_throttle_spin = SafeXRCCTRL<wxSpinCtrl>(d, "SpeedupThrottleSpin");
|
||||
|
||||
speedup_throttle_ctrl.speedup_throttle_spin->Connect(wxEVT_SPIN_UP,
|
||||
wxCommandEventHandler(SpeedupThrottleCtrl_t::SetSpeedupThrottle),
|
||||
NULL, &speedup_throttle_ctrl);
|
||||
|
||||
speedup_throttle_ctrl.speedup_throttle_spin->Connect(wxEVT_SPIN_DOWN,
|
||||
wxCommandEventHandler(SpeedupThrottleCtrl_t::SetSpeedupThrottle),
|
||||
NULL, &speedup_throttle_ctrl);
|
||||
|
||||
speedup_throttle_ctrl.speedup_throttle_spin->Connect(wxEVT_SPIN,
|
||||
wxCommandEventHandler(SpeedupThrottleCtrl_t::SetSpeedupThrottle),
|
||||
NULL, &speedup_throttle_ctrl);
|
||||
|
||||
speedup_throttle_ctrl.speedup_throttle_spin->Connect(wxEVT_TEXT,
|
||||
wxCommandEventHandler(SpeedupThrottleCtrl_t::SetSpeedupThrottle),
|
||||
NULL, &speedup_throttle_ctrl);
|
||||
|
||||
speedup_throttle_ctrl.frame_skip_cb->Connect(wxEVT_CHECKBOX,
|
||||
wxCommandEventHandler(SpeedupThrottleCtrl_t::SetSpeedupFrameSkip),
|
||||
NULL, &speedup_throttle_ctrl);
|
||||
|
||||
d->Connect(wxEVT_SHOW, wxShowEventHandler(SpeedupThrottleCtrl_t::Init),
|
||||
NULL, &speedup_throttle_ctrl);
|
||||
|
||||
d->Fit();
|
||||
}
|
||||
|
||||
d = LoadXRCDialog("UIConfig");
|
||||
{
|
||||
getcbb("HideMenuBar", gopts.hide_menu_bar);
|
||||
|
|
|
@ -290,8 +290,9 @@ opt_desc opts[] = {
|
|||
INTOPT("preferences/skipBios", "SkipIntro", wxTRANSLATE("Skip BIOS initialization"), skipBios, 0, 1),
|
||||
INTOPT("preferences/skipSaveGameCheats", "", wxTRANSLATE("Do not overwrite cheat list when loading state"), skipSaveGameCheats, 0, 1),
|
||||
INTOPT("preferences/skipSaveGameBattery", "", wxTRANSLATE("Do not overwrite native (battery) save when loading state"), skipSaveGameBattery, 0, 1),
|
||||
UINTOPT("preferences/throttle", "", wxTRANSLATE("Throttle game speed, even when accelerated (0-500%, 0 = no throttle)"), throttle, 0, 600),
|
||||
UINTOPT("preferences/speedupThrottle", "", wxTRANSLATE("Set throttle for speedup key (0-600%, 0 = no throttle)"), speedup_throttle, 0, 600),
|
||||
UINTOPT("preferences/throttle", "", wxTRANSLATE("Throttle game speed, even when accelerated (0-600%, 0 = no throttle)"), throttle, 0, 600),
|
||||
UINTOPT("preferences/speedupThrottle", "", wxTRANSLATE("Set throttle for speedup key (0-3000%, 0 = no throttle)"), speedup_throttle, 0, 3000),
|
||||
UINTOPT("preferences/speedupFrameSkip", "", wxTRANSLATE("Number of frames to skip with speedupThrottle == 0 (no throttle)"), speedup_frame_skip, 0, 300),
|
||||
BOOLOPT("preferences/speedupThrottleFrameSkip", "", wxTRANSLATE("Use frame skip for speedup throttle"), speedup_throttle_frame_skip),
|
||||
INTOPT("preferences/useBiosGB", "BootRomGB", wxTRANSLATE("Use the specified BIOS file for GB"), useBiosFileGB, 0, 1),
|
||||
INTOPT("preferences/useBiosGBA", "BootRomEn", wxTRANSLATE("Use the specified BIOS file"), useBiosFileGBA, 0, 1),
|
||||
|
|
|
@ -111,33 +111,32 @@
|
|||
<object class="sizeritem">
|
||||
<object class="wxChoice" name="ThrottleSel">
|
||||
<content>
|
||||
<item>Full Speed/No Limit</item>
|
||||
<item>25%</item>
|
||||
<item>50%</item>
|
||||
<item>75%</item>
|
||||
<item>100%</item>
|
||||
<item>125%</item>
|
||||
<item>150%</item>
|
||||
<item>175%</item>
|
||||
<item>200%</item>
|
||||
<item>225%</item>
|
||||
<item>250%</item>
|
||||
<item>275%</item>
|
||||
<item>300%</item>
|
||||
<item>325%</item>
|
||||
<item>350%</item>
|
||||
<item>375%</item>
|
||||
<item>400%</item>
|
||||
<item>425%</item>
|
||||
<item>450%</item>
|
||||
<item>475%</item>
|
||||
<item>500%</item>
|
||||
<item>525%</item>
|
||||
<item>550%</item>
|
||||
<item>575%</item>
|
||||
<item>600%</item>
|
||||
<item>Unlimited</item>
|
||||
<item translate="0">25%</item>
|
||||
<item translate="0">50%</item>
|
||||
<item translate="0">75%</item>
|
||||
<item translate="0">100%</item>
|
||||
<item translate="0">125%</item>
|
||||
<item translate="0">150%</item>
|
||||
<item translate="0">175%</item>
|
||||
<item translate="0">200%</item>
|
||||
<item translate="0">225%</item>
|
||||
<item translate="0">250%</item>
|
||||
<item translate="0">275%</item>
|
||||
<item translate="0">300%</item>
|
||||
<item translate="0">325%</item>
|
||||
<item translate="0">350%</item>
|
||||
<item translate="0">375%</item>
|
||||
<item translate="0">400%</item>
|
||||
<item translate="0">425%</item>
|
||||
<item translate="0">450%</item>
|
||||
<item translate="0">475%</item>
|
||||
<item translate="0">500%</item>
|
||||
<item translate="0">525%</item>
|
||||
<item translate="0">550%</item>
|
||||
<item translate="0">575%</item>
|
||||
<item translate="0">600%</item>
|
||||
</content>
|
||||
<size>40,-1d</size>
|
||||
</object>
|
||||
<flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag>
|
||||
<border>5</border>
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
</object>
|
||||
<object class="sizeritem">
|
||||
<object class="wxButton" name="Volume100">
|
||||
<label>100%</label>
|
||||
<label translate="0">100%</label>
|
||||
</object>
|
||||
</object>
|
||||
<object class="spacer">
|
||||
|
|
|
@ -31,44 +31,10 @@
|
|||
<border>5</border>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<object class="wxSpinCtrl" name="SpeedupThrottle">
|
||||
<object class="wxSpinCtrl" name="SpeedupThrottleSpin">
|
||||
<value>0</value>
|
||||
<min>0</min>
|
||||
<max>600</max>
|
||||
</object>
|
||||
<flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag>
|
||||
<border>5</border>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<object class="wxChoice" name="SpeedupThrottleSel">
|
||||
<content>
|
||||
<item>Full Speed/No Limit</item>
|
||||
<item>25%</item>
|
||||
<item>50%</item>
|
||||
<item>75%</item>
|
||||
<item>100%</item>
|
||||
<item>125%</item>
|
||||
<item>150%</item>
|
||||
<item>175%</item>
|
||||
<item>200%</item>
|
||||
<item>225%</item>
|
||||
<item>250%</item>
|
||||
<item>275%</item>
|
||||
<item>300%</item>
|
||||
<item>325%</item>
|
||||
<item>350%</item>
|
||||
<item>375%</item>
|
||||
<item>400%</item>
|
||||
<item>425%</item>
|
||||
<item>450%</item>
|
||||
<item>475%</item>
|
||||
<item>500%</item>
|
||||
<item>525%</item>
|
||||
<item>550%</item>
|
||||
<item>575%</item>
|
||||
<item>600%</item>
|
||||
</content>
|
||||
<size>40,-1d</size>
|
||||
<max>4000</max>
|
||||
</object>
|
||||
<flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag>
|
||||
<border>5</border>
|
||||
|
|
Loading…
Reference in New Issue