From b0d63c0c4e98f10c9c60738cf59acb59ac715cc4 Mon Sep 17 00:00:00 2001 From: TideGear Date: Fri, 23 Jan 2026 21:09:19 -0800 Subject: [PATCH 1/6] libretro: Add chord mode solar sensor input and fix Boktai 1 8-bar mapping Add L3 + stick chord input mode for solar sensor control, designed for use with the Ojo del Sol ESP32 UV sensor device. This allows setting absolute solar levels via controller stick directions combined with L3. Chord mapping: - L3 only: 0 bars - Left stick up/right/down/left + L3: 1-4 bars - Right stick up/right/down/left + L3: 5-8 bars - Both sticks up + L3: 9 bars (Boktai 2/3 only) - Both sticks right + L3: 10 bars (Boktai 2/3 only) Also fixes the longstanding bug where Boktai 1 was incorrectly treated as having 10 solar steps when the game only has 8 bars. The core now detects Boktai 1 by ROM code (U3IJ/U3IE/U3IP) and remaps input accordingly. Changes: - Merge Solar Sensor Level and Solar Sensor Input into a single unified option - Add "Disabled" option to completely disable solar sensor input - Add "Use Device Sensor If Available" option (moved from level setting) - Add "L3/R3 Increment" mode (existing behavior) - Add "L3 + Stick Chords" mode (new, now default) - Add "Static: 0" through "Static: 10" for fixed solar levels - Hide Brighten/Darken input labels when chord mode is active - Add note about setting Analog to Digital Type to None in RetroArch - Update all localized option definitions in intl header --- src/platform/libretro/libretro.c | 330 +++- src/platform/libretro/libretro_core_options.h | 37 +- .../libretro/libretro_core_options_intl.h | 1683 ++++++++++------- 3 files changed, 1282 insertions(+), 768 deletions(-) diff --git a/src/platform/libretro/libretro.c b/src/platform/libretro/libretro.c index 4b05a422f6b..f9eb2248c30 100644 --- a/src/platform/libretro/libretro.c +++ b/src/platform/libretro/libretro.c @@ -75,6 +75,9 @@ static void _audioRateChanged(struct mAVStream*, unsigned rate); static void _setRumble(struct mRumbleIntegrator*, float level); static uint8_t _readLux(struct GBALuminanceSource* lux); static void _updateLux(struct GBALuminanceSource* lux); +static int _boktai1StepToBar(int step); +static int _boktai1BarToStep(int bar); +static int _solarChordLevel(int16_t joypadMask); static void _updateCamera(const uint32_t* buffer, unsigned width, unsigned height, size_t pitch); static void _startImage(struct mImageSource*, unsigned w, unsigned h, int colorFormats); static void _stopImage(struct mImageSource*); @@ -106,6 +109,10 @@ static int luxLevelIndex; static uint8_t luxLevel; static bool luxSensorEnabled; static bool luxSensorUsed; +static bool luxChordMode; +static bool luxInputAdjustable; +static bool inputDescriptorsChordMode; +static bool boktai1Game; static struct mLogger logger; static struct retro_camera_callback cam; static struct mImageSource imageSource; @@ -136,6 +143,108 @@ static int32_t audioLowPassRange = 0; static int32_t audioLowPassLeftPrev = 0; static int32_t audioLowPassRightPrev = 0; +static bool _joypadPressed(unsigned id, int16_t joypadMask) { + if (useBitmasks) { + return (joypadMask >> id) & 1; + } + if (!inputCallback) { + return false; + } + return inputCallback(0, RETRO_DEVICE_JOYPAD, 0, id); +} + +static int _clampLuxLevel(int level) { + if (level < 0) { + return 0; + } + if (level > 10) { + return 10; + } + return level; +} + +static void _applySolarInputOption(const char* value, bool updateLevel) { + luxChordMode = false; + luxSensorUsed = false; + luxInputAdjustable = false; + + if (!value) { + return; + } + + if (strcmp(value, "chord") == 0) { + luxChordMode = true; + luxInputAdjustable = true; + return; + } + if (strcmp(value, "buttons") == 0) { + luxInputAdjustable = true; + return; + } + if (strcmp(value, "sensor") == 0) { + luxSensorUsed = true; + return; + } + if (strcmp(value, "off") == 0) { + if (updateLevel) { + luxLevelIndex = 0; + } + return; + } + + if (updateLevel) { + char* end; + int level = (int) strtol(value, &end, 10); + if (!*end) { + luxLevelIndex = _clampLuxLevel(level); + } + } +} + +static const struct retro_input_descriptor inputDescriptorsDefault[] = { + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Turbo A" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "Turbo B" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Select" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "Right" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "Left" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "Up" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "Down" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "L" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "Turbo R" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Turbo L" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3, "Brighten Solar Sensor" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3, "Darken Solar Sensor" }, + { 0 } +}; + +static const struct retro_input_descriptor inputDescriptorsChord[] = { + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Turbo A" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "Turbo B" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Select" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "Right" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "Left" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "Up" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "Down" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "L" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "Turbo R" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Turbo L" }, + { 0 } +}; + +static void _setInputDescriptors(bool chordMode) { + environCallback(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, + chordMode ? inputDescriptorsChord : inputDescriptorsDefault); + inputDescriptorsChordMode = chordMode; +} + static const int keymap[] = { RETRO_DEVICE_ID_JOYPAD_A, RETRO_DEVICE_ID_JOYPAD_B, @@ -1392,27 +1501,6 @@ void retro_init(void) { #endif environCallback(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt); - struct retro_input_descriptor inputDescriptors[] = { - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Turbo A" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "Turbo B" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Select" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "Right" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "Left" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "Up" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "Down" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "L" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "Turbo R" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Turbo L" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3, "Brighten Solar Sensor" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3, "Darken Solar Sensor" }, - { 0 } - }; - environCallback(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, &inputDescriptors); - useBitmasks = environCallback(RETRO_ENVIRONMENT_GET_INPUT_BITMASKS, NULL); // TODO: RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME when BIOS booting is supported @@ -1436,10 +1524,23 @@ void retro_init(void) { envVarsUpdated = true; luxSensorUsed = false; luxSensorEnabled = false; + luxChordMode = false; + luxInputAdjustable = false; + inputDescriptorsChordMode = false; luxLevelIndex = 0; luxLevel = 0; lux.readLuminance = _readLux; lux.sample = _updateLux; + { + struct retro_variable var = { + .key = "mgba_solar_sensor_input", + .value = 0 + }; + if (environCallback(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { + _applySolarInputOption(var.value, true); + } + } + _setInputDescriptors(luxChordMode); _updateLux(&lux); struct retro_log_callback log; @@ -1568,6 +1669,16 @@ void retro_run(void) { mCoreConfigSetIntValue(&core->config, "allowOpposingDirections", strcmp(var.value, "yes") == 0); core->reloadConfigOption(core, "allowOpposingDirections", NULL); } + struct retro_variable solarInputVar = { + .key = "mgba_solar_sensor_input", + .value = 0 + }; + if (environCallback(RETRO_ENVIRONMENT_GET_VARIABLE, &solarInputVar) && solarInputVar.value) { + _applySolarInputOption(solarInputVar.value, true); + } + if (luxChordMode != inputDescriptorsChordMode) { + _setInputDescriptors(luxChordMode); + } _loadFrameskipSettings(NULL); _loadAudioLowPassFilterSettings(); @@ -1582,8 +1693,9 @@ void retro_run(void) { keys = 0; int i; + int16_t joypadMask = 0; if (useBitmasks) { - int16_t joypadMask = inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_MASK); + joypadMask = inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_MASK); for (i = 0; i < sizeof(keymap) / sizeof(*keymap); ++i) { keys |= ((joypadMask >> keymap[i]) & 1) << i; } @@ -1606,24 +1718,61 @@ void retro_run(void) { core->setKeys(core, keys); - if (!luxSensorUsed) { + if (!luxSensorUsed && luxInputAdjustable) { static bool wasAdjustingLux = false; - if (wasAdjustingLux) { - wasAdjustingLux = inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3) || - inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3); - } else { - if (inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3)) { - ++luxLevelIndex; - if (luxLevelIndex > 10) { - luxLevelIndex = 10; + if (luxChordMode) { + int level = _solarChordLevel(joypadMask); + if (level >= 0) { + if (boktai1Game) { + if (level > 8) { + level = 8; + } + luxLevelIndex = _boktai1BarToStep(level); + } else { + luxLevelIndex = level; } wasAdjustingLux = true; - } else if (inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3)) { - --luxLevelIndex; - if (luxLevelIndex < 0) { - luxLevelIndex = 0; + } else { + wasAdjustingLux = false; + } + } else if (boktai1Game) { + if (wasAdjustingLux) { + wasAdjustingLux = _joypadPressed(RETRO_DEVICE_ID_JOYPAD_R3, joypadMask) || + _joypadPressed(RETRO_DEVICE_ID_JOYPAD_L3, joypadMask); + } else { + int bar = _boktai1StepToBar(luxLevelIndex); + if (_joypadPressed(RETRO_DEVICE_ID_JOYPAD_R3, joypadMask)) { + if (bar < 8) { + ++bar; + } + luxLevelIndex = _boktai1BarToStep(bar); + wasAdjustingLux = true; + } else if (_joypadPressed(RETRO_DEVICE_ID_JOYPAD_L3, joypadMask)) { + if (bar > 0) { + --bar; + } + luxLevelIndex = _boktai1BarToStep(bar); + wasAdjustingLux = true; + } + } + } else { + if (wasAdjustingLux) { + wasAdjustingLux = _joypadPressed(RETRO_DEVICE_ID_JOYPAD_R3, joypadMask) || + _joypadPressed(RETRO_DEVICE_ID_JOYPAD_L3, joypadMask); + } else { + if (_joypadPressed(RETRO_DEVICE_ID_JOYPAD_R3, joypadMask)) { + ++luxLevelIndex; + if (luxLevelIndex > 10) { + luxLevelIndex = 10; + } + wasAdjustingLux = true; + } else if (_joypadPressed(RETRO_DEVICE_ID_JOYPAD_L3, joypadMask)) { + --luxLevelIndex; + if (luxLevelIndex < 0) { + luxLevelIndex = 0; + } + wasAdjustingLux = true; } - wasAdjustingLux = true; } } } @@ -2087,6 +2236,16 @@ bool retro_load_game(const struct retro_game_info* game) { _reloadSettings(); core->loadROM(core, rom); deferredSetup = true; +#ifdef M_CORE_GBA + boktai1Game = false; + if (core->platform(core) == mPLATFORM_GBA) { + struct mGameInfo info; + core->getGameInfo(core, &info); + boktai1Game = strcmp(info.code, "U3IJ") == 0 || strcmp(info.code, "U3IE") == 0 || strcmp(info.code, "U3IP") == 0; + } +#else + boktai1Game = false; +#endif const char* sysDir = 0; const char* biosName = 0; @@ -2466,10 +2625,90 @@ static void _setRumble(struct mRumbleIntegrator* rumble, float level) { rumbleCallback(0, RETRO_RUMBLE_WEAK, level * 0xFFFF); } +static int _boktai1StepToBar(int step) { + static const uint8_t map[11] = { 0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8 }; + if (step < 0) { + step = 0; + } else if (step > 10) { + step = 10; + } + return map[step]; +} + +static int _boktai1BarToStep(int bar) { + static const uint8_t map[9] = { 0, 1, 2, 3, 5, 6, 7, 8, 10 }; + if (bar < 0) { + bar = 0; + } else if (bar > 8) { + bar = 8; + } + return map[bar]; +} + +static int _solarChordLevel(int16_t joypadMask) { + if (!inputCallback) { + return -1; + } + + const int16_t deadzone = 0x4000; + int16_t lx = inputCallback(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_X); + int16_t ly = inputCallback(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_Y); + int16_t rx = inputCallback(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_X); + int16_t ry = inputCallback(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y); + + bool lUp = ly < -deadzone; + bool lDown = ly > deadzone; + bool lLeft = lx < -deadzone; + bool lRight = lx > deadzone; + bool rUp = ry < -deadzone; + bool rDown = ry > deadzone; + bool rLeft = rx < -deadzone; + bool rRight = rx > deadzone; + bool anyDir = lUp || lDown || lLeft || lRight || rUp || rDown || rLeft || rRight; + bool l3Pressed = _joypadPressed(RETRO_DEVICE_ID_JOYPAD_L3, joypadMask); + + if (!l3Pressed && !anyDir) { + return 0; + } + + if (lUp && rUp) { + return 9; + } + if (lRight && rRight) { + return 10; + } + if (lUp) { + return 1; + } + if (lRight) { + return 2; + } + if (lDown) { + return 3; + } + if (lLeft) { + return 4; + } + if (rUp) { + return 5; + } + if (rRight) { + return 6; + } + if (rDown) { + return 7; + } + if (rLeft) { + return 8; + } + + return 0; +} + static void _updateLux(struct GBALuminanceSource* lux) { UNUSED(lux); struct retro_variable var = { - .key = "mgba_solar_sensor_level", + .key = "mgba_solar_sensor_input", .value = 0 }; bool luxVarUpdated = envVarsUpdated; @@ -2479,7 +2718,7 @@ static void _updateLux(struct GBALuminanceSource* lux) { } if (luxVarUpdated) { - luxSensorUsed = strcmp(var.value, "sensor") == 0; + _applySolarInputOption(var.value, true); } if (luxSensorUsed) { @@ -2487,21 +2726,6 @@ static void _updateLux(struct GBALuminanceSource* lux) { float fLux = luxSensorEnabled ? sensorGetCallback(0, RETRO_SENSOR_ILLUMINANCE) : 0.0f; luxLevel = cbrtf(fLux) * 8; } else { - if (luxVarUpdated) { - char* end; - int newLuxLevelIndex = strtol(var.value, &end, 10); - - if (!*end) { - if (newLuxLevelIndex > 10) { - luxLevelIndex = 10; - } else if (newLuxLevelIndex < 0) { - luxLevelIndex = 0; - } else { - luxLevelIndex = newLuxLevelIndex; - } - } - } - luxLevel = 0x16; if (luxLevelIndex > 0) { luxLevel += GBA_LUX_LEVELS[luxLevelIndex - 1]; diff --git a/src/platform/libretro/libretro_core_options.h b/src/platform/libretro/libretro_core_options.h index 9bd553bdf23..03b93cd4e45 100644 --- a/src/platform/libretro/libretro_core_options.h +++ b/src/platform/libretro/libretro_core_options.h @@ -268,28 +268,31 @@ struct retro_core_option_v2_definition option_defs_us[] = { "no" }, { - "mgba_solar_sensor_level", - "Solar Sensor Level", + "mgba_solar_sensor_input", + "Solar Sensor Input", NULL, - "Sets ambient sunlight intensity. Can be used by games that included a solar sensor in their cartridges, e.g: the Boktai series.", + "Selects how the solar sensor level is provided for games that included a solar sensor in their cartridges, e.g: the Boktai series. Note: For 'L3 + Stick Chords', set RetroArch's 'Analog to Digital Type' to 'None'.", NULL, "input", { - { "sensor", "Use device sensor if available" }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", diff --git a/src/platform/libretro/libretro_core_options_intl.h b/src/platform/libretro/libretro_core_options_intl.h index 01ea7baea49..5832c25f95d 100644 --- a/src/platform/libretro/libretro_core_options_intl.h +++ b/src/platform/libretro/libretro_core_options_intl.h @@ -111,6 +111,10 @@ extern "C" { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_AR NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_AR NULL #define OPTION_VAL_SENSOR_AR NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_AR NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_AR NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_AR NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_AR NULL #define MGBA_FORCE_GBP_LABEL_AR NULL #define MGBA_FORCE_GBP_INFO_0_AR NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_AR NULL @@ -344,28 +348,31 @@ struct retro_core_option_v2_definition option_defs_ar[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_AR, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_AR, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_AR, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_AR, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_AR }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -544,6 +551,10 @@ struct retro_core_options_v2 options_ar = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_AST "Nivel del sensor solar" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_AST NULL #define OPTION_VAL_SENSOR_AST NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_AST NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_AST NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_AST NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_AST NULL #define MGBA_FORCE_GBP_LABEL_AST NULL #define MGBA_FORCE_GBP_INFO_0_AST NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_AST NULL @@ -777,28 +788,31 @@ struct retro_core_option_v2_definition option_defs_ast[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_AST, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_AST, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_AST, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_AST, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_AST }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -977,6 +991,10 @@ struct retro_core_options_v2 options_ast = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CA NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CA NULL #define OPTION_VAL_SENSOR_CA NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_CA NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CA NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_CA NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_CA NULL #define MGBA_FORCE_GBP_LABEL_CA NULL #define MGBA_FORCE_GBP_INFO_0_CA NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_CA NULL @@ -1210,28 +1228,31 @@ struct retro_core_option_v2_definition option_defs_ca[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_CA, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_CA, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CA, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_CA, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_CA }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -1410,6 +1431,10 @@ struct retro_core_options_v2 options_ca = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHS "太阳光传感器等级" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CHS NULL #define OPTION_VAL_SENSOR_CHS "如果可用则使用设备传感器" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_CHS NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CHS NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_CHS NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_CHS NULL #define MGBA_FORCE_GBP_LABEL_CHS NULL #define MGBA_FORCE_GBP_INFO_0_CHS NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_CHS NULL @@ -1643,28 +1668,31 @@ struct retro_core_option_v2_definition option_defs_chs[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHS, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_CHS, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CHS, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_CHS, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_CHS }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -1843,6 +1871,10 @@ struct retro_core_options_v2 options_chs = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHT NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CHT NULL #define OPTION_VAL_SENSOR_CHT NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_CHT NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CHT NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_CHT NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_CHT NULL #define MGBA_FORCE_GBP_LABEL_CHT NULL #define MGBA_FORCE_GBP_INFO_0_CHT NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_CHT NULL @@ -2076,28 +2108,31 @@ struct retro_core_option_v2_definition option_defs_cht[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHT, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_CHT, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CHT, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_CHT, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_CHT }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -2276,6 +2311,10 @@ struct retro_core_options_v2 options_cht = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CS "Úroveň Solárního Senzoru" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CS "Nastaví intenzitu okolního slunečního světla. Lze použít ve hrách, které obsahují sluneční senzor v kazetách, např. v sérii Boktai." #define OPTION_VAL_SENSOR_CS "Použít snímač zařízení, je-li k dispozici" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_CS NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CS NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_CS NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_CS NULL #define MGBA_FORCE_GBP_LABEL_CS "Game Boy Player Vybrace (Restart)" #define MGBA_FORCE_GBP_INFO_0_CS "Povolení této funkce umožní kompatibilním hrám se spouštěcím logem Game Boy Player, aby ovladač vybroval. Vzhledem k tomu, jak se společnost Nintendo rozhodla, že by tato funkce měla fungovat, může v některých těchto hrách způsobovat závady, jako je blikání nebo zpoždění." #define MGBA_IDLE_OPTIMIZATION_LABEL_CS "Odstranění Nečinné Smyčky" @@ -2509,28 +2548,31 @@ struct retro_core_option_v2_definition option_defs_cs[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_CS, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_CS, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CS, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_CS, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_CS }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -2709,6 +2751,10 @@ struct retro_core_options_v2 options_cs = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CY NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CY NULL #define OPTION_VAL_SENSOR_CY NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_CY NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CY NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_CY NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_CY NULL #define MGBA_FORCE_GBP_LABEL_CY NULL #define MGBA_FORCE_GBP_INFO_0_CY NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_CY NULL @@ -2942,28 +2988,31 @@ struct retro_core_option_v2_definition option_defs_cy[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_CY, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_CY, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CY, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_CY, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_CY }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -3142,6 +3191,10 @@ struct retro_core_options_v2 options_cy = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_DA NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_DA NULL #define OPTION_VAL_SENSOR_DA NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_DA NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_DA NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_DA NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_DA NULL #define MGBA_FORCE_GBP_LABEL_DA NULL #define MGBA_FORCE_GBP_INFO_0_DA NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_DA NULL @@ -3375,28 +3428,31 @@ struct retro_core_option_v2_definition option_defs_da[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_DA, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_DA, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_DA, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_DA, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_DA }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -3575,6 +3631,10 @@ struct retro_core_options_v2 options_da = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_DE "Solarsensorstufe" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_DE "Setzt die Intensität des Umgebungslichts. Kann von Spielen verwendet werden, die einen Solarsensor in ihre Module eingeschlossen haben, z. B. die Boktai-Serie." #define OPTION_VAL_SENSOR_DE "Gerätesensor verwenden, falls verfügbar" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_DE NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_DE NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_DE NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_DE NULL #define MGBA_FORCE_GBP_LABEL_DE "Game-Boy-Player-Rumble (Neustart erforderlich)" #define MGBA_FORCE_GBP_INFO_0_DE "Wird dies aktiviert, können kompatible Spiele mit dem Game-Boy-Player-Bootlogo den Controller zum Rattern bringen. Aufgrund der Entscheidung von Nintendo, wie diese Funktion funktioniert, kann es bei einigen dieser Spiele zu Störungen wie Flackern oder Verzögerungen kommen." #define MGBA_IDLE_OPTIMIZATION_LABEL_DE "Leerlaufschleife entfernen" @@ -3808,28 +3868,31 @@ struct retro_core_option_v2_definition option_defs_de[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_DE, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_DE, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_DE, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_DE, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_DE }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -4008,6 +4071,10 @@ struct retro_core_options_v2 options_de = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_EL "Επίπεδο Ηλιακού Αισθητήρα" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EL NULL #define OPTION_VAL_SENSOR_EL "Χρήση αισθητήρα συσκευής εάν υπάρχει" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_EL NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_EL NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_EL NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_EL NULL #define MGBA_FORCE_GBP_LABEL_EL NULL #define MGBA_FORCE_GBP_INFO_0_EL NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_EL NULL @@ -4241,28 +4308,31 @@ struct retro_core_option_v2_definition option_defs_el[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_EL, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_EL, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EL, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_EL, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_EL }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -4441,6 +4511,10 @@ struct retro_core_options_v2 options_el = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_EN NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EN NULL #define OPTION_VAL_SENSOR_EN NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_EN NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_EN NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_EN NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_EN NULL #define MGBA_FORCE_GBP_LABEL_EN NULL #define MGBA_FORCE_GBP_INFO_0_EN NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_EN NULL @@ -4674,28 +4748,31 @@ struct retro_core_option_v2_definition option_defs_en[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_EN, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_EN, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EN, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_EN, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_EN }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -4874,6 +4951,10 @@ struct retro_core_options_v2 options_en = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_EO NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EO NULL #define OPTION_VAL_SENSOR_EO NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_EO NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_EO NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_EO NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_EO NULL #define MGBA_FORCE_GBP_LABEL_EO NULL #define MGBA_FORCE_GBP_INFO_0_EO NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_EO NULL @@ -5107,28 +5188,31 @@ struct retro_core_option_v2_definition option_defs_eo[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_EO, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_EO, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EO, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_EO, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_EO }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -5307,6 +5391,10 @@ struct retro_core_options_v2 options_eo = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_ES "Nivel del sensor solar" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_ES "Ajusta la intensidad de la luz solar ambiental. Para juegos que contenían un sensor solar en sus cartuchos, p. ej.: la saga Boktai." #define OPTION_VAL_SENSOR_ES "Utilizar dispositivo sensor si está disponible" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_ES NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_ES NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_ES NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_ES NULL #define MGBA_FORCE_GBP_LABEL_ES "Vibración de Game Boy Player (es necesario reiniciar)" #define MGBA_FORCE_GBP_INFO_0_ES "Permite que los juegos compatibles con el logotipo de arranque de Game Boy Player hagan vibrar el mando. Debido al método que utilizó Nintendo, puede provocar fallos gráficos, como parpadeos o retrasos de señal en algunos de estos juegos." #define MGBA_IDLE_OPTIMIZATION_LABEL_ES "Eliminar bucle de inactividad" @@ -5540,28 +5628,31 @@ struct retro_core_option_v2_definition option_defs_es[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_ES, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_ES, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_ES, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_ES, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_ES }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -5740,6 +5831,10 @@ struct retro_core_options_v2 options_es = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FA NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FA NULL #define OPTION_VAL_SENSOR_FA NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_FA NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_FA NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_FA NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_FA NULL #define MGBA_FORCE_GBP_LABEL_FA NULL #define MGBA_FORCE_GBP_INFO_0_FA NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_FA NULL @@ -5973,28 +6068,31 @@ struct retro_core_option_v2_definition option_defs_fa[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_FA, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_FA, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FA, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_FA, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_FA }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -6173,6 +6271,10 @@ struct retro_core_options_v2 options_fa = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FI "Aurinkoanturin taso" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FI "Asettaa ympäristön auringonvalon voimakkuuden. Voidaan käyttää peleissä, jotka sisälsivät aurinkoanturin kaseteissaan, esim. Boktai-sarjassa." #define OPTION_VAL_SENSOR_FI "Käytä laitteen anturia, mikäli saatavana" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_FI NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_FI NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_FI NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_FI NULL #define MGBA_FORCE_GBP_LABEL_FI "Game Boy Player tärinä (Uudelleenkäynnistys)" #define MGBA_FORCE_GBP_INFO_0_FI "Tämän käyttöönotto mahdollistaa Game Boy Player:in kanssa yhteensopivien pelien käyttää tärinää. Siitä miten Nintendo päätti tämän ominaisuuden pitäisi toimia, se saattaa aiheuttaa virheitä, kuten vilkkumista tai viivettä joissakin näistä peleistä." #define MGBA_IDLE_OPTIMIZATION_LABEL_FI "Joutosilmukan poisto" @@ -6406,28 +6508,31 @@ struct retro_core_option_v2_definition option_defs_fi[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_FI, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_FI, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FI, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_FI, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_FI }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -6606,6 +6711,10 @@ struct retro_core_options_v2 options_fi = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FR "Niveau du capteur solaire" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FR "Définit l'intensité ambiante de la lumière du soleil. Peut être utilisée par des jeux qui incluaient un capteur solaire dans leurs cartouches, par exemple : la série Boktai." #define OPTION_VAL_SENSOR_FR "Utiliser le capteur de l'appareil si disponible" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_FR NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_FR NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_FR NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_FR NULL #define MGBA_FORCE_GBP_LABEL_FR "Vibration du Game Boy Player (Redémarrage requis)" #define MGBA_FORCE_GBP_INFO_0_FR "Activer cette option permettra aux jeux compatibles avec le logo de démarrage du Game Boy Player de faire vibrer la manette. En raison de la façon dont Nintendo a décidé que cette fonctionnalité devrait marcher, cela peut causer des bugs tels que scintillement ou latence dans certains de ces jeux." #define MGBA_IDLE_OPTIMIZATION_LABEL_FR "Suppression de la boucle inactive" @@ -6839,28 +6948,31 @@ struct retro_core_option_v2_definition option_defs_fr[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_FR, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_FR, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FR, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_FR, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_FR }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -7039,6 +7151,10 @@ struct retro_core_options_v2 options_fr = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_GL NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_GL NULL #define OPTION_VAL_SENSOR_GL NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_GL NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_GL NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_GL NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_GL NULL #define MGBA_FORCE_GBP_LABEL_GL NULL #define MGBA_FORCE_GBP_INFO_0_GL NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_GL NULL @@ -7272,28 +7388,31 @@ struct retro_core_option_v2_definition option_defs_gl[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_GL, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_GL, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_GL, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_GL, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_GL }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -7472,6 +7591,10 @@ struct retro_core_options_v2 options_gl = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_HE NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HE NULL #define OPTION_VAL_SENSOR_HE NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_HE NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_HE NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_HE NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_HE NULL #define MGBA_FORCE_GBP_LABEL_HE NULL #define MGBA_FORCE_GBP_INFO_0_HE NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_HE NULL @@ -7705,28 +7828,31 @@ struct retro_core_option_v2_definition option_defs_he[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_HE, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_HE, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HE, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_HE, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_HE }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -7905,6 +8031,10 @@ struct retro_core_options_v2 options_he = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_HR NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HR NULL #define OPTION_VAL_SENSOR_HR NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_HR NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_HR NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_HR NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_HR NULL #define MGBA_FORCE_GBP_LABEL_HR NULL #define MGBA_FORCE_GBP_INFO_0_HR NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_HR NULL @@ -8138,28 +8268,31 @@ struct retro_core_option_v2_definition option_defs_hr[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_HR, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_HR, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HR, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_HR, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_HR }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -8338,6 +8471,10 @@ struct retro_core_options_v2 options_hr = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_HU "Fényszenzor szintje" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HU "A környező napfény intenzitásának állítása. Olyan játékok használják, amelyek tartalmaznak fényérzékelőt a cartridge-ben, mint pl. a Boktai sorozat." #define OPTION_VAL_SENSOR_HU "Az eszköz szenzorának használata, ha elérhető" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_HU NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_HU NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_HU NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_HU NULL #define MGBA_FORCE_GBP_LABEL_HU "Game Boy Player rezgés (újraindítás)" #define MGBA_FORCE_GBP_INFO_0_HU "A Game Boy Player indító logóval ellátott kompatibilis játékok rezgethetik a kontrollert. Mivel a Nintendo úgy döntött, hogy ez a feature úgy működjön, ahogy, így aztán hibákat, villódzást vagy késleltetést okozhat néhány ilyen játékban." #define MGBA_IDLE_OPTIMIZATION_LABEL_HU "Üresjárati hurkok eltávolítása" @@ -8571,28 +8708,31 @@ struct retro_core_option_v2_definition option_defs_hu[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_HU, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_HU, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HU, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_HU, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_HU }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -8771,6 +8911,10 @@ struct retro_core_options_v2 options_hu = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_ID NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_ID NULL #define OPTION_VAL_SENSOR_ID NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_ID NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_ID NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_ID NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_ID NULL #define MGBA_FORCE_GBP_LABEL_ID "Getaran Game Boy Player (mulai ulang)" #define MGBA_FORCE_GBP_INFO_0_ID NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_ID NULL @@ -9004,28 +9148,31 @@ struct retro_core_option_v2_definition option_defs_id[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_ID, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_ID, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_ID, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_ID, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_ID }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -9204,6 +9351,10 @@ struct retro_core_options_v2 options_id = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_IT "Livello Sensore Solare" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_IT "Imposta l'intensità solare dell'ambiente. Può essere usato dai giochi che includono un sensore solare nelle loro cartucce, es.: la serie Boktai." #define OPTION_VAL_SENSOR_IT "Usa sensore dispositivo se disponibile" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_IT NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_IT NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_IT NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_IT NULL #define MGBA_FORCE_GBP_LABEL_IT "Vibrazione Game Boy Player (Riavvio)" #define MGBA_FORCE_GBP_INFO_0_IT "Abilitando questa opzione i giochi saranno compatibili con il logo di avvio del Game Boy Player per far vibrare il controller. A causa di come Nintendo ha deciso che questa funzione dovrebbe funzionare, può causare problemi come tremolio o ritardo in alcuni di questi giochi." #define MGBA_IDLE_OPTIMIZATION_LABEL_IT "Rimozione Idle Loop" @@ -9437,28 +9588,31 @@ struct retro_core_option_v2_definition option_defs_it[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_IT, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_IT, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_IT, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_IT, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_IT }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -9637,6 +9791,10 @@ struct retro_core_options_v2 options_it = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_JA "太陽センサーレベル" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_JA NULL #define OPTION_VAL_SENSOR_JA "利用可能な場合は端末センサーを使用する" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_JA NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_JA NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_JA NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_JA NULL #define MGBA_FORCE_GBP_LABEL_JA "ゲームボーイプレーヤー振動 (再起動)" #define MGBA_FORCE_GBP_INFO_0_JA "この機能を有効にすると、ゲームボーイプレーヤーの起動ロゴがある対応ゲームで、コントローラーが振動するようになります。この機能は、任天堂の判断により、一部のゲームでちらつきやラグなどの不具合が発生する場合があります。" #define MGBA_IDLE_OPTIMIZATION_LABEL_JA "アイドルループの削除" @@ -9870,28 +10028,31 @@ struct retro_core_option_v2_definition option_defs_ja[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_JA, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_JA, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_JA, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_JA, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_JA }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -10070,6 +10231,10 @@ struct retro_core_options_v2 options_ja = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_KO "태양광 센서 수준" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_KO "태양광 센서의 강도를 설정합니다. 카트리지에 태양광 센서를 장착한 일부 게임(예: Boktai 시리즈)에서 사용할 수 있습니다." #define OPTION_VAL_SENSOR_KO "가능한 경우 장치 센서 사용" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_KO NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_KO NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_KO NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_KO NULL #define MGBA_FORCE_GBP_LABEL_KO "Game Boy Player 진동 (재시작 필요)" #define MGBA_FORCE_GBP_INFO_0_KO "사용할 경우 Game Boy Player 로고를 표시하는 호환 게임에서 컨트롤러 진동을 사용합니다. Nintendo의 진동 구현 방식 때문에 일부 게임에서는 화면 깜빡임 또는 지연이 발생할 수 있습니다." #define MGBA_IDLE_OPTIMIZATION_LABEL_KO "유휴 루프 제거" @@ -10303,28 +10468,31 @@ struct retro_core_option_v2_definition option_defs_ko[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_KO, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_KO, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_KO, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_KO, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_KO }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -10503,6 +10671,10 @@ struct retro_core_options_v2 options_ko = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_MT NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_MT NULL #define OPTION_VAL_SENSOR_MT NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_MT NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_MT NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_MT NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_MT NULL #define MGBA_FORCE_GBP_LABEL_MT NULL #define MGBA_FORCE_GBP_INFO_0_MT NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_MT NULL @@ -10736,28 +10908,31 @@ struct retro_core_option_v2_definition option_defs_mt[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_MT, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_MT, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_MT, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_MT, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_MT }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -10936,6 +11111,10 @@ struct retro_core_options_v2 options_mt = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_NL NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_NL NULL #define OPTION_VAL_SENSOR_NL NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_NL NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_NL NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_NL NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_NL NULL #define MGBA_FORCE_GBP_LABEL_NL NULL #define MGBA_FORCE_GBP_INFO_0_NL NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_NL NULL @@ -11169,28 +11348,31 @@ struct retro_core_option_v2_definition option_defs_nl[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_NL, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_NL, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_NL, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_NL, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_NL }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -11369,6 +11551,10 @@ struct retro_core_options_v2 options_nl = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_NO NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_NO NULL #define OPTION_VAL_SENSOR_NO NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_NO NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_NO NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_NO NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_NO NULL #define MGBA_FORCE_GBP_LABEL_NO NULL #define MGBA_FORCE_GBP_INFO_0_NO NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_NO NULL @@ -11602,28 +11788,31 @@ struct retro_core_option_v2_definition option_defs_no[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_NO, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_NO, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_NO, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_NO, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_NO }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -11802,6 +11991,10 @@ struct retro_core_options_v2 options_no = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_OC NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_OC NULL #define OPTION_VAL_SENSOR_OC NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_OC NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_OC NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_OC NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_OC NULL #define MGBA_FORCE_GBP_LABEL_OC NULL #define MGBA_FORCE_GBP_INFO_0_OC NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_OC NULL @@ -12035,28 +12228,31 @@ struct retro_core_option_v2_definition option_defs_oc[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_OC, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_OC, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_OC, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_OC, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_OC }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -12235,6 +12431,10 @@ struct retro_core_options_v2 options_oc = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PL NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PL NULL #define OPTION_VAL_SENSOR_PL "Użyj czujnika urządzenia, jeśli jest dostępny" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_PL NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_PL NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_PL NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_PL NULL #define MGBA_FORCE_GBP_LABEL_PL NULL #define MGBA_FORCE_GBP_INFO_0_PL NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_PL "Usuwanie pętli bezczynności" @@ -12468,28 +12668,31 @@ struct retro_core_option_v2_definition option_defs_pl[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_PL, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_PL, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PL, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_PL, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_PL }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -12668,6 +12871,10 @@ struct retro_core_options_v2 options_pl = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_BR "Nível do sensor solar" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PT_BR "Define a intensidade da luz do sol no ambiente. Pode ser usado por jogos que incluem um sensor solar em seus cartuchos, por exemplo: a série Boktai." #define OPTION_VAL_SENSOR_PT_BR "Usa um dispositivo sensor, se disponível" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_PT_BR NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_PT_BR NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_PT_BR NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_PT_BR NULL #define MGBA_FORCE_GBP_LABEL_PT_BR "Vibração do Game Boy Player (requer reinício)" #define MGBA_FORCE_GBP_INFO_0_PT_BR "Permite que os jogos que suportam o logotipo de inicialização do Game Boy Player vibrem o controle. Devido ao método que a Nintendo utilizou, pode causar falhas gráficas como tremulações ou atrasos de sinal em alguns destes jogos." #define MGBA_IDLE_OPTIMIZATION_LABEL_PT_BR "Remover loops de inatividade" @@ -12901,28 +13108,31 @@ struct retro_core_option_v2_definition option_defs_pt_br[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_BR, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_PT_BR, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PT_BR, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_PT_BR, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_PT_BR }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -13101,6 +13311,10 @@ struct retro_core_options_v2 options_pt_br = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_PT NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PT_PT NULL #define OPTION_VAL_SENSOR_PT_PT NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_PT_PT NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_PT_PT NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_PT_PT NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_PT_PT NULL #define MGBA_FORCE_GBP_LABEL_PT_PT NULL #define MGBA_FORCE_GBP_INFO_0_PT_PT NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_PT_PT NULL @@ -13334,28 +13548,31 @@ struct retro_core_option_v2_definition option_defs_pt_pt[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_PT, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_PT_PT, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PT_PT, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_PT_PT, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_PT_PT }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -13534,6 +13751,10 @@ struct retro_core_options_v2 options_pt_pt = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_RO NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_RO NULL #define OPTION_VAL_SENSOR_RO NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_RO NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_RO NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_RO NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_RO NULL #define MGBA_FORCE_GBP_LABEL_RO NULL #define MGBA_FORCE_GBP_INFO_0_RO NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_RO NULL @@ -13767,28 +13988,31 @@ struct retro_core_option_v2_definition option_defs_ro[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_RO, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_RO, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_RO, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_RO, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_RO }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -13967,6 +14191,10 @@ struct retro_core_options_v2 options_ro = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_RU "Уровень датчика света" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_RU "Устанавливает интенсивность окружающего освещения. Может использоваться в играх с картриджами, оснащёнными датчиком света (напр. серия Boktai)." #define OPTION_VAL_SENSOR_RU "Использовать датчик устройства" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_RU NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_RU NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_RU NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_RU NULL #define MGBA_FORCE_GBP_LABEL_RU "Отдача Game Boy Player (перезапуск)" #define MGBA_FORCE_GBP_INFO_0_RU "При включении активирует отдачу для совместимых игр с логотипом Game Boy Player на экране загрузки. Из-за особенностей реализации Nintendo, в некоторых играх данная функция может вызывать баги в виде подтормаживаний или мерцания." #define MGBA_IDLE_OPTIMIZATION_LABEL_RU "Удаление циклов простоя" @@ -14200,28 +14428,31 @@ struct retro_core_option_v2_definition option_defs_ru[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_RU, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_RU, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_RU, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_RU, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_RU }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -14400,6 +14631,10 @@ struct retro_core_options_v2 options_ru = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SI NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SI NULL #define OPTION_VAL_SENSOR_SI NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_SI NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SI NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_SI NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_SI NULL #define MGBA_FORCE_GBP_LABEL_SI NULL #define MGBA_FORCE_GBP_INFO_0_SI NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_SI NULL @@ -14633,28 +14868,31 @@ struct retro_core_option_v2_definition option_defs_si[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_SI, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_SI, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SI, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_SI, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_SI }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -14833,6 +15071,10 @@ struct retro_core_options_v2 options_si = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SK NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SK NULL #define OPTION_VAL_SENSOR_SK NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_SK NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SK NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_SK NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_SK NULL #define MGBA_FORCE_GBP_LABEL_SK NULL #define MGBA_FORCE_GBP_INFO_0_SK NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_SK NULL @@ -15066,28 +15308,31 @@ struct retro_core_option_v2_definition option_defs_sk[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_SK, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_SK, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SK, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_SK, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_SK }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -15266,6 +15511,10 @@ struct retro_core_options_v2 options_sk = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SR NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SR NULL #define OPTION_VAL_SENSOR_SR NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_SR NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SR NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_SR NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_SR NULL #define MGBA_FORCE_GBP_LABEL_SR NULL #define MGBA_FORCE_GBP_INFO_0_SR NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_SR NULL @@ -15499,28 +15748,31 @@ struct retro_core_option_v2_definition option_defs_sr[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_SR, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_SR, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SR, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_SR, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_SR }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -15699,6 +15951,10 @@ struct retro_core_options_v2 options_sr = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SV NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SV NULL #define OPTION_VAL_SENSOR_SV NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_SV NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SV NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_SV NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_SV NULL #define MGBA_FORCE_GBP_LABEL_SV NULL #define MGBA_FORCE_GBP_INFO_0_SV NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_SV NULL @@ -15932,28 +16188,31 @@ struct retro_core_option_v2_definition option_defs_sv[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_SV, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_SV, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SV, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_SV, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_SV }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -16132,6 +16391,10 @@ struct retro_core_options_v2 options_sv = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_TR "Güneş Sensörü Seviyesi" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_TR "Ortamdaki güneş ışığı yoğunluğunu ayarlar. Kartuşlarında güneş sensörü bulunan oyunlar tarafından kullanılabilir, örneğin: Boktai serisi." #define OPTION_VAL_SENSOR_TR "Varsa cihaz sensörünü kullanın" +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_TR NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_TR NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_TR NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_TR NULL #define MGBA_FORCE_GBP_LABEL_TR "Game Boy Player Titreşim (Yeniden Başlat)" #define MGBA_FORCE_GBP_INFO_0_TR "Bunu etkinleştirmek, Game Boy Player açılış logosuna sahip uyumlu oyunların denetleyiciyi titretmesine için izin verecektir. Nintendo'nun bu özelliğin çalışması gerektiğine nasıl karar verdiğinden dolayı, bu oyunların bazılarında titreme veya gecikme gibi hatalara neden olabilir." #define MGBA_IDLE_OPTIMIZATION_LABEL_TR "Boştaki Döngüyü Kaldır" @@ -16365,28 +16628,31 @@ struct retro_core_option_v2_definition option_defs_tr[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_TR, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_TR, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_TR, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_TR, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_TR }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -16565,6 +16831,10 @@ struct retro_core_options_v2 options_tr = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_UK NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_UK NULL #define OPTION_VAL_SENSOR_UK NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_UK NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_UK NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_UK NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_UK NULL #define MGBA_FORCE_GBP_LABEL_UK NULL #define MGBA_FORCE_GBP_INFO_0_UK NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_UK NULL @@ -16798,28 +17068,31 @@ struct retro_core_option_v2_definition option_defs_uk[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_UK, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_UK, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_UK, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_UK, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_UK }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -16998,6 +17271,10 @@ struct retro_core_options_v2 options_uk = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_VAL NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_VAL NULL #define OPTION_VAL_SENSOR_VAL NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_VAL NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_VAL NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_VAL NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_VAL NULL #define MGBA_FORCE_GBP_LABEL_VAL NULL #define MGBA_FORCE_GBP_INFO_0_VAL NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_VAL NULL @@ -17231,28 +17508,31 @@ struct retro_core_option_v2_definition option_defs_val[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_VAL, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_VAL, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_VAL, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_VAL, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_VAL }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, }, - "0" + "chord" }, { "mgba_force_gbp", @@ -17431,6 +17711,10 @@ struct retro_core_options_v2 options_val = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_VN NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_VN NULL #define OPTION_VAL_SENSOR_VN NULL +#define MGBA_SOLAR_SENSOR_INPUT_LABEL_VN NULL +#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_VN NULL +#define OPTION_VAL_SOLAR_INPUT_BUTTONS_VN NULL +#define OPTION_VAL_SOLAR_INPUT_CHORD_VN NULL #define MGBA_FORCE_GBP_LABEL_VN NULL #define MGBA_FORCE_GBP_INFO_0_VN NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_VN NULL @@ -17664,28 +17948,31 @@ struct retro_core_option_v2_definition option_defs_vn[] = { "no" }, { - "mgba_solar_sensor_level", - MGBA_SOLAR_SENSOR_LEVEL_LABEL_VN, + "mgba_solar_sensor_input", + MGBA_SOLAR_SENSOR_INPUT_LABEL_VN, NULL, - MGBA_SOLAR_SENSOR_LEVEL_INFO_0_VN, + MGBA_SOLAR_SENSOR_INPUT_INFO_0_VN, NULL, "input", { - { "sensor", OPTION_VAL_SENSOR_VN }, - { "0", NULL }, - { "1", NULL }, - { "2", NULL }, - { "3", NULL }, - { "4", NULL }, - { "5", NULL }, - { "6", NULL }, - { "7", NULL }, - { "8", NULL }, - { "9", NULL }, - { "10", NULL }, - { NULL, NULL }, - }, - "0" + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, + { "buttons", "L3/R3 Increment" }, + { "chord", "L3 + Stick Chords" }, + { "0", "Static: 0" }, + { "1", "Static: 1" }, + { "2", "Static: 2" }, + { "3", "Static: 3" }, + { "4", "Static: 4" }, + { "5", "Static: 5" }, + { "6", "Static: 6" }, + { "7", "Static: 7" }, + { "8", "Static: 8" }, + { "9", "Static: 9" }, + { "10", "Static: 10" }, + { NULL, NULL }, + }, + "chord" }, { "mgba_force_gbp", From 78431e5f6d86763b52946da072daa8ed48dc39dd Mon Sep 17 00:00:00 2001 From: TideGear Date: Sat, 24 Jan 2026 00:24:06 -0800 Subject: [PATCH 2/6] libretro: Harden solar input handling and fix Android ndk-build Tighten solar sensor handling and clean up libretro plumbing: chord input now requires L3 for non-zero levels, solar button labels are only exposed in L3/R3 Increment mode, and joypad bitmask reads are treated as unsigned. Also removes redundant option polling/state and silences descriptor constness warnings. Sync core options across locales by updating mgba_solar_sensor_input strings (Disabled, Use Device Sensor If Available) and dropping stale MGBA_SOLAR_SENSOR_LEVEL_* intl macros. Fix Android ndk-build by correcting LOCAL_SRC_FILES path handling, and update .gitignore for libretro-build outputs. --- src/platform/libretro/libretro.c | 64 ++--- src/platform/libretro/libretro_core_options.h | 2 +- .../libretro/libretro_core_options_intl.h | 246 ++++++------------ 3 files changed, 105 insertions(+), 207 deletions(-) diff --git a/src/platform/libretro/libretro.c b/src/platform/libretro/libretro.c index f9eb2248c30..681eaa08129 100644 --- a/src/platform/libretro/libretro.c +++ b/src/platform/libretro/libretro.c @@ -66,8 +66,6 @@ static retro_set_rumble_state_t rumbleCallback; static retro_sensor_get_input_t sensorGetCallback; static retro_set_sensor_state_t sensorStateCallback; -static bool libretro_supports_bitmasks = false; - static void GBARetroLog(struct mLogger* logger, int category, enum mLogLevel level, const char* format, va_list args); static void _postAudioBuffer(struct mAVStream*, struct mAudioBuffer*); @@ -77,7 +75,7 @@ static uint8_t _readLux(struct GBALuminanceSource* lux); static void _updateLux(struct GBALuminanceSource* lux); static int _boktai1StepToBar(int step); static int _boktai1BarToStep(int bar); -static int _solarChordLevel(int16_t joypadMask); +static int _solarChordLevel(uint16_t joypadMask); static void _updateCamera(const uint32_t* buffer, unsigned width, unsigned height, size_t pitch); static void _startImage(struct mImageSource*, unsigned w, unsigned h, int colorFormats); static void _stopImage(struct mImageSource*); @@ -111,7 +109,7 @@ static bool luxSensorEnabled; static bool luxSensorUsed; static bool luxChordMode; static bool luxInputAdjustable; -static bool inputDescriptorsChordMode; +static bool inputDescriptorsShowSolarButtons; static bool boktai1Game; static struct mLogger logger; static struct retro_camera_callback cam; @@ -122,7 +120,6 @@ static unsigned camHeight; static unsigned imcapWidth; static unsigned imcapHeight; static size_t camStride; -static bool envVarsUpdated; static unsigned frameskipType; static unsigned frameskipThreshold; static uint16_t frameskipCounter; @@ -134,7 +131,6 @@ static bool updateAudioLatency; static bool updateAudioRate; static bool deferredSetup = false; static bool useBitmasks = true; -static bool envVarsUpdated; static int32_t tiltX = 0; static int32_t tiltY = 0; static int32_t gyroZ = 0; @@ -143,7 +139,7 @@ static int32_t audioLowPassRange = 0; static int32_t audioLowPassLeftPrev = 0; static int32_t audioLowPassRightPrev = 0; -static bool _joypadPressed(unsigned id, int16_t joypadMask) { +static bool _joypadPressed(unsigned id, uint16_t joypadMask) { if (useBitmasks) { return (joypadMask >> id) & 1; } @@ -201,7 +197,7 @@ static void _applySolarInputOption(const char* value, bool updateLevel) { } } -static const struct retro_input_descriptor inputDescriptorsDefault[] = { +static const struct retro_input_descriptor inputDescriptorsWithSolarButtons[] = { { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Turbo A" }, @@ -221,7 +217,7 @@ static const struct retro_input_descriptor inputDescriptorsDefault[] = { { 0 } }; -static const struct retro_input_descriptor inputDescriptorsChord[] = { +static const struct retro_input_descriptor inputDescriptorsNoSolarButtons[] = { { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Turbo A" }, @@ -239,10 +235,10 @@ static const struct retro_input_descriptor inputDescriptorsChord[] = { { 0 } }; -static void _setInputDescriptors(bool chordMode) { +static void _setInputDescriptors(bool showSolarButtons) { environCallback(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, - chordMode ? inputDescriptorsChord : inputDescriptorsDefault); - inputDescriptorsChordMode = chordMode; + (void*) (showSolarButtons ? inputDescriptorsWithSolarButtons : inputDescriptorsNoSolarButtons)); + inputDescriptorsShowSolarButtons = showSolarButtons; } static const int keymap[] = { @@ -1521,12 +1517,11 @@ void retro_init(void) { rotation.readTiltY = _readTiltY; rotation.readGyroZ = _readGyroZ; - envVarsUpdated = true; luxSensorUsed = false; luxSensorEnabled = false; luxChordMode = false; luxInputAdjustable = false; - inputDescriptorsChordMode = false; + inputDescriptorsShowSolarButtons = false; luxLevelIndex = 0; luxLevel = 0; lux.readLuminance = _readLux; @@ -1540,7 +1535,7 @@ void retro_init(void) { _applySolarInputOption(var.value, true); } } - _setInputDescriptors(luxChordMode); + _setInputDescriptors(luxInputAdjustable && !luxChordMode); _updateLux(&lux); struct retro_log_callback log; @@ -1562,9 +1557,6 @@ void retro_init(void) { imageSource.stopRequestImage = _stopImage; imageSource.requestImage = _requestImage; - if (environCallback(RETRO_ENVIRONMENT_GET_INPUT_BITMASKS, NULL)) - libretro_supports_bitmasks = true; - frameskipType = 0; frameskipThreshold = 0; frameskipCounter = 0; @@ -1659,8 +1651,6 @@ void retro_run(void) { bool updated = false; if (environCallback(RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE, &updated) && updated) { - envVarsUpdated = true; - struct retro_variable var = { .key = "mgba_allow_opposing_directions", .value = 0 @@ -1676,9 +1666,11 @@ void retro_run(void) { if (environCallback(RETRO_ENVIRONMENT_GET_VARIABLE, &solarInputVar) && solarInputVar.value) { _applySolarInputOption(solarInputVar.value, true); } - if (luxChordMode != inputDescriptorsChordMode) { - _setInputDescriptors(luxChordMode); + bool showSolarButtons = luxInputAdjustable && !luxChordMode; + if (showSolarButtons != inputDescriptorsShowSolarButtons) { + _setInputDescriptors(showSolarButtons); } + _updateLux(&lux); _loadFrameskipSettings(NULL); _loadAudioLowPassFilterSettings(); @@ -1693,9 +1685,9 @@ void retro_run(void) { keys = 0; int i; - int16_t joypadMask = 0; + uint16_t joypadMask = 0; if (useBitmasks) { - joypadMask = inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_MASK); + joypadMask = (uint16_t) inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_MASK); for (i = 0; i < sizeof(keymap) / sizeof(*keymap); ++i) { keys |= ((joypadMask >> keymap[i]) & 1) << i; } @@ -2645,7 +2637,7 @@ static int _boktai1BarToStep(int bar) { return map[bar]; } -static int _solarChordLevel(int16_t joypadMask) { +static int _solarChordLevel(uint16_t joypadMask) { if (!inputCallback) { return -1; } @@ -2667,8 +2659,11 @@ static int _solarChordLevel(int16_t joypadMask) { bool anyDir = lUp || lDown || lLeft || lRight || rUp || rDown || rLeft || rRight; bool l3Pressed = _joypadPressed(RETRO_DEVICE_ID_JOYPAD_L3, joypadMask); - if (!l3Pressed && !anyDir) { - return 0; + /* If L3 is not pressed, ignore stick directions. + * We still treat 'no input' as 0 to support devices + * that output no chord at 0 bars. */ + if (!l3Pressed) { + return anyDir ? -1 : 0; } if (lUp && rUp) { @@ -2707,19 +2702,6 @@ static int _solarChordLevel(int16_t joypadMask) { static void _updateLux(struct GBALuminanceSource* lux) { UNUSED(lux); - struct retro_variable var = { - .key = "mgba_solar_sensor_input", - .value = 0 - }; - bool luxVarUpdated = envVarsUpdated; - - if (luxVarUpdated && (!environCallback(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || !var.value)) { - luxVarUpdated = false; - } - - if (luxVarUpdated) { - _applySolarInputOption(var.value, true); - } if (luxSensorUsed) { _initSensors(); @@ -2731,8 +2713,6 @@ static void _updateLux(struct GBALuminanceSource* lux) { luxLevel += GBA_LUX_LEVELS[luxLevelIndex - 1]; } } - - envVarsUpdated = false; } static uint8_t _readLux(struct GBALuminanceSource* lux) { diff --git a/src/platform/libretro/libretro_core_options.h b/src/platform/libretro/libretro_core_options.h index 03b93cd4e45..36ef0513c88 100644 --- a/src/platform/libretro/libretro_core_options.h +++ b/src/platform/libretro/libretro_core_options.h @@ -293,7 +293,7 @@ struct retro_core_option_v2_definition option_defs_us[] = { { NULL, NULL }, }, "chord" - }, + }, { "mgba_force_gbp", "Game Boy Player Rumble (Restart)", diff --git a/src/platform/libretro/libretro_core_options_intl.h b/src/platform/libretro/libretro_core_options_intl.h index 5832c25f95d..fbc21743bb8 100644 --- a/src/platform/libretro/libretro_core_options_intl.h +++ b/src/platform/libretro/libretro_core_options_intl.h @@ -108,8 +108,6 @@ extern "C" { #define OPTION_VAL_95_AR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_AR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_AR NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_AR NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_AR NULL #define OPTION_VAL_SENSOR_AR NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_AR NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_AR NULL @@ -355,8 +353,8 @@ struct retro_core_option_v2_definition option_defs_ar[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -548,8 +546,6 @@ struct retro_core_options_v2 options_ar = { #define OPTION_VAL_95_AST NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_AST NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_AST NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_AST "Nivel del sensor solar" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_AST NULL #define OPTION_VAL_SENSOR_AST NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_AST NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_AST NULL @@ -795,8 +791,8 @@ struct retro_core_option_v2_definition option_defs_ast[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -988,8 +984,6 @@ struct retro_core_options_v2 options_ast = { #define OPTION_VAL_95_CA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CA NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CA NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CA NULL #define OPTION_VAL_SENSOR_CA NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_CA NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CA NULL @@ -1235,8 +1229,8 @@ struct retro_core_option_v2_definition option_defs_ca[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -1428,8 +1422,6 @@ struct retro_core_options_v2 options_ca = { #define OPTION_VAL_95_CHS NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CHS NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CHS NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHS "太阳光传感器等级" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CHS NULL #define OPTION_VAL_SENSOR_CHS "如果可用则使用设备传感器" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_CHS NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CHS NULL @@ -1675,8 +1667,8 @@ struct retro_core_option_v2_definition option_defs_chs[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -1868,8 +1860,6 @@ struct retro_core_options_v2 options_chs = { #define OPTION_VAL_95_CHT NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CHT "允許反向操作" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CHT "允許反方向快速操作,可同時按下左右或上下的方向。可能導致遊戲的移動架構出錯。" -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHT NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CHT NULL #define OPTION_VAL_SENSOR_CHT NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_CHT NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CHT NULL @@ -2115,8 +2105,8 @@ struct retro_core_option_v2_definition option_defs_cht[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -2308,8 +2298,6 @@ struct retro_core_options_v2 options_cht = { #define OPTION_VAL_95_CS NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CS "Povolení Protichůdného Směrového Vstupu" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CS "Povolení této funkce umožní stisknout / rychle střídat / držet současně levý i pravý směr (nebo nahoru a dolů). To může způsobit závady založené na pohybu." -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CS "Úroveň Solárního Senzoru" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CS "Nastaví intenzitu okolního slunečního světla. Lze použít ve hrách, které obsahují sluneční senzor v kazetách, např. v sérii Boktai." #define OPTION_VAL_SENSOR_CS "Použít snímač zařízení, je-li k dispozici" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_CS NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CS NULL @@ -2555,8 +2543,8 @@ struct retro_core_option_v2_definition option_defs_cs[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -2748,8 +2736,6 @@ struct retro_core_options_v2 options_cs = { #define OPTION_VAL_95_CY NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CY NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CY NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CY NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CY NULL #define OPTION_VAL_SENSOR_CY NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_CY NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CY NULL @@ -2995,8 +2981,8 @@ struct retro_core_option_v2_definition option_defs_cy[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -3188,8 +3174,6 @@ struct retro_core_options_v2 options_cy = { #define OPTION_VAL_95_DA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_DA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_DA NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_DA NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_DA NULL #define OPTION_VAL_SENSOR_DA NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_DA NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_DA NULL @@ -3435,8 +3419,8 @@ struct retro_core_option_v2_definition option_defs_da[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -3628,8 +3612,6 @@ struct retro_core_options_v2 options_da = { #define OPTION_VAL_95_DE "95 %" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_DE "Entgegengesetzte Richtungseingabe zulassen" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_DE "Wenn diese Funktion aktiviert ist, kann gleichzeitig die linke und die rechte (oder die obere und die untere) Richtungstaste bzw. schnell abwechselnd gedrückt oder gehalten werden. Dies kann zu bewegungsbasierten Fehlern führen." -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_DE "Solarsensorstufe" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_DE "Setzt die Intensität des Umgebungslichts. Kann von Spielen verwendet werden, die einen Solarsensor in ihre Module eingeschlossen haben, z. B. die Boktai-Serie." #define OPTION_VAL_SENSOR_DE "Gerätesensor verwenden, falls verfügbar" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_DE NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_DE NULL @@ -3875,8 +3857,8 @@ struct retro_core_option_v2_definition option_defs_de[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -4068,8 +4050,6 @@ struct retro_core_options_v2 options_de = { #define OPTION_VAL_95_EL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_EL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_EL NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_EL "Επίπεδο Ηλιακού Αισθητήρα" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EL NULL #define OPTION_VAL_SENSOR_EL "Χρήση αισθητήρα συσκευής εάν υπάρχει" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_EL NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_EL NULL @@ -4315,8 +4295,8 @@ struct retro_core_option_v2_definition option_defs_el[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -4508,8 +4488,6 @@ struct retro_core_options_v2 options_el = { #define OPTION_VAL_95_EN NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_EN NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_EN NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_EN NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EN NULL #define OPTION_VAL_SENSOR_EN NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_EN NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_EN NULL @@ -4755,8 +4733,8 @@ struct retro_core_option_v2_definition option_defs_en[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -4948,8 +4926,6 @@ struct retro_core_options_v2 options_en = { #define OPTION_VAL_95_EO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_EO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_EO NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_EO NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EO NULL #define OPTION_VAL_SENSOR_EO NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_EO NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_EO NULL @@ -5195,8 +5171,8 @@ struct retro_core_option_v2_definition option_defs_eo[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -5388,8 +5364,6 @@ struct retro_core_options_v2 options_eo = { #define OPTION_VAL_95_ES "95 %" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_ES "Permitir entradas direccionales opuestas" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_ES "Esta opción permitirá pulsar, alternar rápidamente o mantener las direcciones izquierda y derecha (o arriba y abajo) al mismo tiempo. Podría provocar fallos de movimiento." -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_ES "Nivel del sensor solar" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_ES "Ajusta la intensidad de la luz solar ambiental. Para juegos que contenían un sensor solar en sus cartuchos, p. ej.: la saga Boktai." #define OPTION_VAL_SENSOR_ES "Utilizar dispositivo sensor si está disponible" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_ES NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_ES NULL @@ -5635,8 +5609,8 @@ struct retro_core_option_v2_definition option_defs_es[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -5828,8 +5802,6 @@ struct retro_core_options_v2 options_es = { #define OPTION_VAL_95_FA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_FA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_FA NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FA NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FA NULL #define OPTION_VAL_SENSOR_FA NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_FA NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_FA NULL @@ -6075,8 +6047,8 @@ struct retro_core_option_v2_definition option_defs_fa[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -6268,8 +6240,6 @@ struct retro_core_options_v2 options_fa = { #define OPTION_VAL_95_FI "95 %" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_FI "Salli vastakkaisten suuntien syöte" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_FI "Tämän käyttöönotto sallii painamaan / nopeasti vaihtelemaan / pitämään sekä vasemmalle että oikealle (tai ylös ja alas) samanaikaisesti. Tämä voi aiheuttaa liikkeisiin perustuvia virheitä." -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FI "Aurinkoanturin taso" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FI "Asettaa ympäristön auringonvalon voimakkuuden. Voidaan käyttää peleissä, jotka sisälsivät aurinkoanturin kaseteissaan, esim. Boktai-sarjassa." #define OPTION_VAL_SENSOR_FI "Käytä laitteen anturia, mikäli saatavana" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_FI NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_FI NULL @@ -6515,8 +6485,8 @@ struct retro_core_option_v2_definition option_defs_fi[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -6708,8 +6678,6 @@ struct retro_core_options_v2 options_fi = { #define OPTION_VAL_95_FR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_FR "Autoriser les entrées directionnelles opposées" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_FR "L'activation de cette option permettra d'appuyer/d'alterner rapidement/de maintenir les directions gauche et droite (ou haut et bas) en même temps. Cela peut causer des bugs liés au mouvement." -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FR "Niveau du capteur solaire" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FR "Définit l'intensité ambiante de la lumière du soleil. Peut être utilisée par des jeux qui incluaient un capteur solaire dans leurs cartouches, par exemple : la série Boktai." #define OPTION_VAL_SENSOR_FR "Utiliser le capteur de l'appareil si disponible" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_FR NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_FR NULL @@ -6955,8 +6923,8 @@ struct retro_core_option_v2_definition option_defs_fr[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -7148,8 +7116,6 @@ struct retro_core_options_v2 options_fr = { #define OPTION_VAL_95_GL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_GL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_GL NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_GL NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_GL NULL #define OPTION_VAL_SENSOR_GL NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_GL NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_GL NULL @@ -7395,8 +7361,8 @@ struct retro_core_option_v2_definition option_defs_gl[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -7588,8 +7554,6 @@ struct retro_core_options_v2 options_gl = { #define OPTION_VAL_95_HE NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_HE NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_HE NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_HE NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HE NULL #define OPTION_VAL_SENSOR_HE NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_HE NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_HE NULL @@ -7835,8 +7799,8 @@ struct retro_core_option_v2_definition option_defs_he[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -8028,8 +7992,6 @@ struct retro_core_options_v2 options_he = { #define OPTION_VAL_95_HR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_HR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_HR NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_HR NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HR NULL #define OPTION_VAL_SENSOR_HR NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_HR NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_HR NULL @@ -8275,8 +8237,8 @@ struct retro_core_option_v2_definition option_defs_hr[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -8468,8 +8430,6 @@ struct retro_core_options_v2 options_hr = { #define OPTION_VAL_95_HU NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_HU "Ellentétes irányok engedélyezése" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_HU "A jobb és bal (vagy fel és le) irányok egyidejű/gyorsan váltakozó lenyomásának vagy nyomva tartásának engedélyezése. Hibákat okozhat a mozgatásban." -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_HU "Fényszenzor szintje" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HU "A környező napfény intenzitásának állítása. Olyan játékok használják, amelyek tartalmaznak fényérzékelőt a cartridge-ben, mint pl. a Boktai sorozat." #define OPTION_VAL_SENSOR_HU "Az eszköz szenzorának használata, ha elérhető" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_HU NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_HU NULL @@ -8715,8 +8675,8 @@ struct retro_core_option_v2_definition option_defs_hu[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -8908,8 +8868,6 @@ struct retro_core_options_v2 options_hu = { #define OPTION_VAL_95_ID NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_ID NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_ID NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_ID NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_ID NULL #define OPTION_VAL_SENSOR_ID NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_ID NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_ID NULL @@ -9155,8 +9113,8 @@ struct retro_core_option_v2_definition option_defs_id[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -9348,8 +9306,6 @@ struct retro_core_options_v2 options_id = { #define OPTION_VAL_95_IT NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_IT "Permetti Input Direzionali Opposti" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_IT "Attivando questa funzionalità ti permette di premere / alternare velocemente / tenere premuti entrambe le direzioni destra e sinistra (oppure su e giù) allo stesso momento. Potrebbe causare dei glitch di movimento." -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_IT "Livello Sensore Solare" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_IT "Imposta l'intensità solare dell'ambiente. Può essere usato dai giochi che includono un sensore solare nelle loro cartucce, es.: la serie Boktai." #define OPTION_VAL_SENSOR_IT "Usa sensore dispositivo se disponibile" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_IT NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_IT NULL @@ -9595,8 +9551,8 @@ struct retro_core_option_v2_definition option_defs_it[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -9788,8 +9744,6 @@ struct retro_core_options_v2 options_it = { #define OPTION_VAL_95_JA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_JA "対向方向入力を許可する" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_JA "有効にすると、左右 (または上下) 方向の同時押し / 高速交互押し / 長押しが可能になります。動作に不具合が生じる場合があります。" -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_JA "太陽センサーレベル" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_JA NULL #define OPTION_VAL_SENSOR_JA "利用可能な場合は端末センサーを使用する" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_JA NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_JA NULL @@ -10035,8 +9989,8 @@ struct retro_core_option_v2_definition option_defs_ja[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -10228,8 +10182,6 @@ struct retro_core_options_v2 options_ja = { #define OPTION_VAL_95_KO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_KO "반대 방향 동시 입력 허용" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_KO "이 옵션을 활성화하면 왼쪽과 오른쪽 (또는 위쪽과 아래쪽) 방향 입력을 동시에 누르거나 빠르게 번갈아 누르는 것을 허용합니다. 이는 움직임 관련 버그를 일으킬 수 있습니다." -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_KO "태양광 센서 수준" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_KO "태양광 센서의 강도를 설정합니다. 카트리지에 태양광 센서를 장착한 일부 게임(예: Boktai 시리즈)에서 사용할 수 있습니다." #define OPTION_VAL_SENSOR_KO "가능한 경우 장치 센서 사용" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_KO NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_KO NULL @@ -10475,8 +10427,8 @@ struct retro_core_option_v2_definition option_defs_ko[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -10668,8 +10620,6 @@ struct retro_core_options_v2 options_ko = { #define OPTION_VAL_95_MT NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_MT NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_MT NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_MT NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_MT NULL #define OPTION_VAL_SENSOR_MT NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_MT NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_MT NULL @@ -10915,8 +10865,8 @@ struct retro_core_option_v2_definition option_defs_mt[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -11108,8 +11058,6 @@ struct retro_core_options_v2 options_mt = { #define OPTION_VAL_95_NL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_NL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_NL NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_NL NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_NL NULL #define OPTION_VAL_SENSOR_NL NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_NL NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_NL NULL @@ -11355,8 +11303,8 @@ struct retro_core_option_v2_definition option_defs_nl[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -11548,8 +11496,6 @@ struct retro_core_options_v2 options_nl = { #define OPTION_VAL_95_NO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_NO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_NO NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_NO NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_NO NULL #define OPTION_VAL_SENSOR_NO NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_NO NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_NO NULL @@ -11795,8 +11741,8 @@ struct retro_core_option_v2_definition option_defs_no[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -11988,8 +11934,6 @@ struct retro_core_options_v2 options_no = { #define OPTION_VAL_95_OC NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_OC NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_OC NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_OC NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_OC NULL #define OPTION_VAL_SENSOR_OC NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_OC NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_OC NULL @@ -12235,8 +12179,8 @@ struct retro_core_option_v2_definition option_defs_oc[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -12428,8 +12372,6 @@ struct retro_core_options_v2 options_oc = { #define OPTION_VAL_95_PL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_PL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_PL NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PL NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PL NULL #define OPTION_VAL_SENSOR_PL "Użyj czujnika urządzenia, jeśli jest dostępny" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_PL NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_PL NULL @@ -12675,8 +12617,8 @@ struct retro_core_option_v2_definition option_defs_pl[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -12868,8 +12810,6 @@ struct retro_core_options_v2 options_pl = { #define OPTION_VAL_95_PT_BR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_PT_BR "Permitir entradas direcionais opostas" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_PT_BR "Esta opção permitirá pressionar, alternar ou segurar rapidamente as direções esquerda e direita (ou cima e baixo) ao mesmo tempo. Pode causar falhas de movimento." -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_BR "Nível do sensor solar" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PT_BR "Define a intensidade da luz do sol no ambiente. Pode ser usado por jogos que incluem um sensor solar em seus cartuchos, por exemplo: a série Boktai." #define OPTION_VAL_SENSOR_PT_BR "Usa um dispositivo sensor, se disponível" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_PT_BR NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_PT_BR NULL @@ -13115,8 +13055,8 @@ struct retro_core_option_v2_definition option_defs_pt_br[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -13308,8 +13248,6 @@ struct retro_core_options_v2 options_pt_br = { #define OPTION_VAL_95_PT_PT NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_PT_PT NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_PT_PT NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_PT NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PT_PT NULL #define OPTION_VAL_SENSOR_PT_PT NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_PT_PT NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_PT_PT NULL @@ -13555,8 +13493,8 @@ struct retro_core_option_v2_definition option_defs_pt_pt[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -13748,8 +13686,6 @@ struct retro_core_options_v2 options_pt_pt = { #define OPTION_VAL_95_RO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_RO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_RO NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_RO NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_RO NULL #define OPTION_VAL_SENSOR_RO NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_RO NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_RO NULL @@ -13995,8 +13931,8 @@ struct retro_core_option_v2_definition option_defs_ro[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -14188,8 +14124,6 @@ struct retro_core_options_v2 options_ro = { #define OPTION_VAL_95_RU NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_RU "Разрешать нажатия в разные стороны" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_RU "Позволяет нажимать / быстро менять / зажимать одновременно направления влево и вправо (или вверх и вниз). Может вызывать глитчи, связанные с перемещением." -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_RU "Уровень датчика света" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_RU "Устанавливает интенсивность окружающего освещения. Может использоваться в играх с картриджами, оснащёнными датчиком света (напр. серия Boktai)." #define OPTION_VAL_SENSOR_RU "Использовать датчик устройства" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_RU NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_RU NULL @@ -14435,8 +14369,8 @@ struct retro_core_option_v2_definition option_defs_ru[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -14628,8 +14562,6 @@ struct retro_core_options_v2 options_ru = { #define OPTION_VAL_95_SI NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SI NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SI NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SI NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SI NULL #define OPTION_VAL_SENSOR_SI NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_SI NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SI NULL @@ -14875,8 +14807,8 @@ struct retro_core_option_v2_definition option_defs_si[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -15068,8 +15000,6 @@ struct retro_core_options_v2 options_si = { #define OPTION_VAL_95_SK NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SK NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SK NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SK NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SK NULL #define OPTION_VAL_SENSOR_SK NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_SK NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SK NULL @@ -15315,8 +15245,8 @@ struct retro_core_option_v2_definition option_defs_sk[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -15508,8 +15438,6 @@ struct retro_core_options_v2 options_sk = { #define OPTION_VAL_95_SR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SR NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SR NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SR NULL #define OPTION_VAL_SENSOR_SR NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_SR NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SR NULL @@ -15755,8 +15683,8 @@ struct retro_core_option_v2_definition option_defs_sr[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -15948,8 +15876,6 @@ struct retro_core_options_v2 options_sr = { #define OPTION_VAL_95_SV "95 %" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SV NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SV NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SV NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SV NULL #define OPTION_VAL_SENSOR_SV NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_SV NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SV NULL @@ -16195,8 +16121,8 @@ struct retro_core_option_v2_definition option_defs_sv[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -16388,8 +16314,6 @@ struct retro_core_options_v2 options_sv = { #define OPTION_VAL_95_TR "%95" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_TR "Karşı Yönlü Girişe İzin Ver" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_TR "Bunu etkinleştirmek aynı anda hem sola hem de sağa (veya yukarı ve aşağı) yönlere basma/hızlı değiştirme/tutma imkanı sağlar. Bu harekete dayalı hatalara neden olabilir." -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_TR "Güneş Sensörü Seviyesi" -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_TR "Ortamdaki güneş ışığı yoğunluğunu ayarlar. Kartuşlarında güneş sensörü bulunan oyunlar tarafından kullanılabilir, örneğin: Boktai serisi." #define OPTION_VAL_SENSOR_TR "Varsa cihaz sensörünü kullanın" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_TR NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_TR NULL @@ -16635,8 +16559,8 @@ struct retro_core_option_v2_definition option_defs_tr[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -16828,8 +16752,6 @@ struct retro_core_options_v2 options_tr = { #define OPTION_VAL_95_UK NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_UK NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_UK "Увімкнення цього дозволить одночасно натискати / швидко чергувати/утримувати одночасно ліворуч та праворуч (чи донизу) напрямки. Це може спричинити глітчі руху." -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_UK NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_UK NULL #define OPTION_VAL_SENSOR_UK NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_UK NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_UK NULL @@ -17075,8 +16997,8 @@ struct retro_core_option_v2_definition option_defs_uk[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -17268,8 +17190,6 @@ struct retro_core_options_v2 options_uk = { #define OPTION_VAL_95_VAL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_VAL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_VAL NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_VAL NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_VAL NULL #define OPTION_VAL_SENSOR_VAL NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_VAL NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_VAL NULL @@ -17515,8 +17435,8 @@ struct retro_core_option_v2_definition option_defs_val[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -17708,8 +17628,6 @@ struct retro_core_options_v2 options_val = { #define OPTION_VAL_95_VN NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_VN NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_VN NULL -#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_VN NULL -#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_VN NULL #define OPTION_VAL_SENSOR_VN NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_VN NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_VN NULL @@ -17955,8 +17873,8 @@ struct retro_core_option_v2_definition option_defs_vn[] = { NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, + { "off", "Disabled" }, + { "sensor", "Use Device Sensor If Available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, From 04762c9a6e97904424798e6bc84148b09cc1d825 Mon Sep 17 00:00:00 2001 From: TideGear Date: Thu, 29 Jan 2026 16:57:23 -0800 Subject: [PATCH 3/6] Revert "libretro: Harden solar input handling and fix Android ndk-build" This reverts commit 78431e5f6d86763b52946da072daa8ed48dc39dd. --- src/platform/libretro/libretro.c | 64 +++-- src/platform/libretro/libretro_core_options.h | 2 +- .../libretro/libretro_core_options_intl.h | 246 ++++++++++++------ 3 files changed, 207 insertions(+), 105 deletions(-) diff --git a/src/platform/libretro/libretro.c b/src/platform/libretro/libretro.c index 681eaa08129..f9eb2248c30 100644 --- a/src/platform/libretro/libretro.c +++ b/src/platform/libretro/libretro.c @@ -66,6 +66,8 @@ static retro_set_rumble_state_t rumbleCallback; static retro_sensor_get_input_t sensorGetCallback; static retro_set_sensor_state_t sensorStateCallback; +static bool libretro_supports_bitmasks = false; + static void GBARetroLog(struct mLogger* logger, int category, enum mLogLevel level, const char* format, va_list args); static void _postAudioBuffer(struct mAVStream*, struct mAudioBuffer*); @@ -75,7 +77,7 @@ static uint8_t _readLux(struct GBALuminanceSource* lux); static void _updateLux(struct GBALuminanceSource* lux); static int _boktai1StepToBar(int step); static int _boktai1BarToStep(int bar); -static int _solarChordLevel(uint16_t joypadMask); +static int _solarChordLevel(int16_t joypadMask); static void _updateCamera(const uint32_t* buffer, unsigned width, unsigned height, size_t pitch); static void _startImage(struct mImageSource*, unsigned w, unsigned h, int colorFormats); static void _stopImage(struct mImageSource*); @@ -109,7 +111,7 @@ static bool luxSensorEnabled; static bool luxSensorUsed; static bool luxChordMode; static bool luxInputAdjustable; -static bool inputDescriptorsShowSolarButtons; +static bool inputDescriptorsChordMode; static bool boktai1Game; static struct mLogger logger; static struct retro_camera_callback cam; @@ -120,6 +122,7 @@ static unsigned camHeight; static unsigned imcapWidth; static unsigned imcapHeight; static size_t camStride; +static bool envVarsUpdated; static unsigned frameskipType; static unsigned frameskipThreshold; static uint16_t frameskipCounter; @@ -131,6 +134,7 @@ static bool updateAudioLatency; static bool updateAudioRate; static bool deferredSetup = false; static bool useBitmasks = true; +static bool envVarsUpdated; static int32_t tiltX = 0; static int32_t tiltY = 0; static int32_t gyroZ = 0; @@ -139,7 +143,7 @@ static int32_t audioLowPassRange = 0; static int32_t audioLowPassLeftPrev = 0; static int32_t audioLowPassRightPrev = 0; -static bool _joypadPressed(unsigned id, uint16_t joypadMask) { +static bool _joypadPressed(unsigned id, int16_t joypadMask) { if (useBitmasks) { return (joypadMask >> id) & 1; } @@ -197,7 +201,7 @@ static void _applySolarInputOption(const char* value, bool updateLevel) { } } -static const struct retro_input_descriptor inputDescriptorsWithSolarButtons[] = { +static const struct retro_input_descriptor inputDescriptorsDefault[] = { { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Turbo A" }, @@ -217,7 +221,7 @@ static const struct retro_input_descriptor inputDescriptorsWithSolarButtons[] = { 0 } }; -static const struct retro_input_descriptor inputDescriptorsNoSolarButtons[] = { +static const struct retro_input_descriptor inputDescriptorsChord[] = { { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Turbo A" }, @@ -235,10 +239,10 @@ static const struct retro_input_descriptor inputDescriptorsNoSolarButtons[] = { { 0 } }; -static void _setInputDescriptors(bool showSolarButtons) { +static void _setInputDescriptors(bool chordMode) { environCallback(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, - (void*) (showSolarButtons ? inputDescriptorsWithSolarButtons : inputDescriptorsNoSolarButtons)); - inputDescriptorsShowSolarButtons = showSolarButtons; + chordMode ? inputDescriptorsChord : inputDescriptorsDefault); + inputDescriptorsChordMode = chordMode; } static const int keymap[] = { @@ -1517,11 +1521,12 @@ void retro_init(void) { rotation.readTiltY = _readTiltY; rotation.readGyroZ = _readGyroZ; + envVarsUpdated = true; luxSensorUsed = false; luxSensorEnabled = false; luxChordMode = false; luxInputAdjustable = false; - inputDescriptorsShowSolarButtons = false; + inputDescriptorsChordMode = false; luxLevelIndex = 0; luxLevel = 0; lux.readLuminance = _readLux; @@ -1535,7 +1540,7 @@ void retro_init(void) { _applySolarInputOption(var.value, true); } } - _setInputDescriptors(luxInputAdjustable && !luxChordMode); + _setInputDescriptors(luxChordMode); _updateLux(&lux); struct retro_log_callback log; @@ -1557,6 +1562,9 @@ void retro_init(void) { imageSource.stopRequestImage = _stopImage; imageSource.requestImage = _requestImage; + if (environCallback(RETRO_ENVIRONMENT_GET_INPUT_BITMASKS, NULL)) + libretro_supports_bitmasks = true; + frameskipType = 0; frameskipThreshold = 0; frameskipCounter = 0; @@ -1651,6 +1659,8 @@ void retro_run(void) { bool updated = false; if (environCallback(RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE, &updated) && updated) { + envVarsUpdated = true; + struct retro_variable var = { .key = "mgba_allow_opposing_directions", .value = 0 @@ -1666,11 +1676,9 @@ void retro_run(void) { if (environCallback(RETRO_ENVIRONMENT_GET_VARIABLE, &solarInputVar) && solarInputVar.value) { _applySolarInputOption(solarInputVar.value, true); } - bool showSolarButtons = luxInputAdjustable && !luxChordMode; - if (showSolarButtons != inputDescriptorsShowSolarButtons) { - _setInputDescriptors(showSolarButtons); + if (luxChordMode != inputDescriptorsChordMode) { + _setInputDescriptors(luxChordMode); } - _updateLux(&lux); _loadFrameskipSettings(NULL); _loadAudioLowPassFilterSettings(); @@ -1685,9 +1693,9 @@ void retro_run(void) { keys = 0; int i; - uint16_t joypadMask = 0; + int16_t joypadMask = 0; if (useBitmasks) { - joypadMask = (uint16_t) inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_MASK); + joypadMask = inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_MASK); for (i = 0; i < sizeof(keymap) / sizeof(*keymap); ++i) { keys |= ((joypadMask >> keymap[i]) & 1) << i; } @@ -2637,7 +2645,7 @@ static int _boktai1BarToStep(int bar) { return map[bar]; } -static int _solarChordLevel(uint16_t joypadMask) { +static int _solarChordLevel(int16_t joypadMask) { if (!inputCallback) { return -1; } @@ -2659,11 +2667,8 @@ static int _solarChordLevel(uint16_t joypadMask) { bool anyDir = lUp || lDown || lLeft || lRight || rUp || rDown || rLeft || rRight; bool l3Pressed = _joypadPressed(RETRO_DEVICE_ID_JOYPAD_L3, joypadMask); - /* If L3 is not pressed, ignore stick directions. - * We still treat 'no input' as 0 to support devices - * that output no chord at 0 bars. */ - if (!l3Pressed) { - return anyDir ? -1 : 0; + if (!l3Pressed && !anyDir) { + return 0; } if (lUp && rUp) { @@ -2702,6 +2707,19 @@ static int _solarChordLevel(uint16_t joypadMask) { static void _updateLux(struct GBALuminanceSource* lux) { UNUSED(lux); + struct retro_variable var = { + .key = "mgba_solar_sensor_input", + .value = 0 + }; + bool luxVarUpdated = envVarsUpdated; + + if (luxVarUpdated && (!environCallback(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || !var.value)) { + luxVarUpdated = false; + } + + if (luxVarUpdated) { + _applySolarInputOption(var.value, true); + } if (luxSensorUsed) { _initSensors(); @@ -2713,6 +2731,8 @@ static void _updateLux(struct GBALuminanceSource* lux) { luxLevel += GBA_LUX_LEVELS[luxLevelIndex - 1]; } } + + envVarsUpdated = false; } static uint8_t _readLux(struct GBALuminanceSource* lux) { diff --git a/src/platform/libretro/libretro_core_options.h b/src/platform/libretro/libretro_core_options.h index 36ef0513c88..03b93cd4e45 100644 --- a/src/platform/libretro/libretro_core_options.h +++ b/src/platform/libretro/libretro_core_options.h @@ -293,7 +293,7 @@ struct retro_core_option_v2_definition option_defs_us[] = { { NULL, NULL }, }, "chord" - }, + }, { "mgba_force_gbp", "Game Boy Player Rumble (Restart)", diff --git a/src/platform/libretro/libretro_core_options_intl.h b/src/platform/libretro/libretro_core_options_intl.h index fbc21743bb8..5832c25f95d 100644 --- a/src/platform/libretro/libretro_core_options_intl.h +++ b/src/platform/libretro/libretro_core_options_intl.h @@ -108,6 +108,8 @@ extern "C" { #define OPTION_VAL_95_AR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_AR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_AR NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_AR NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_AR NULL #define OPTION_VAL_SENSOR_AR NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_AR NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_AR NULL @@ -353,8 +355,8 @@ struct retro_core_option_v2_definition option_defs_ar[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -546,6 +548,8 @@ struct retro_core_options_v2 options_ar = { #define OPTION_VAL_95_AST NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_AST NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_AST NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_AST "Nivel del sensor solar" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_AST NULL #define OPTION_VAL_SENSOR_AST NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_AST NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_AST NULL @@ -791,8 +795,8 @@ struct retro_core_option_v2_definition option_defs_ast[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -984,6 +988,8 @@ struct retro_core_options_v2 options_ast = { #define OPTION_VAL_95_CA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CA NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CA NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CA NULL #define OPTION_VAL_SENSOR_CA NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_CA NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CA NULL @@ -1229,8 +1235,8 @@ struct retro_core_option_v2_definition option_defs_ca[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -1422,6 +1428,8 @@ struct retro_core_options_v2 options_ca = { #define OPTION_VAL_95_CHS NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CHS NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CHS NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHS "太阳光传感器等级" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CHS NULL #define OPTION_VAL_SENSOR_CHS "如果可用则使用设备传感器" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_CHS NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CHS NULL @@ -1667,8 +1675,8 @@ struct retro_core_option_v2_definition option_defs_chs[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -1860,6 +1868,8 @@ struct retro_core_options_v2 options_chs = { #define OPTION_VAL_95_CHT NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CHT "允許反向操作" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CHT "允許反方向快速操作,可同時按下左右或上下的方向。可能導致遊戲的移動架構出錯。" +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHT NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CHT NULL #define OPTION_VAL_SENSOR_CHT NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_CHT NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CHT NULL @@ -2105,8 +2115,8 @@ struct retro_core_option_v2_definition option_defs_cht[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -2298,6 +2308,8 @@ struct retro_core_options_v2 options_cht = { #define OPTION_VAL_95_CS NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CS "Povolení Protichůdného Směrového Vstupu" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CS "Povolení této funkce umožní stisknout / rychle střídat / držet současně levý i pravý směr (nebo nahoru a dolů). To může způsobit závady založené na pohybu." +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CS "Úroveň Solárního Senzoru" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CS "Nastaví intenzitu okolního slunečního světla. Lze použít ve hrách, které obsahují sluneční senzor v kazetách, např. v sérii Boktai." #define OPTION_VAL_SENSOR_CS "Použít snímač zařízení, je-li k dispozici" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_CS NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CS NULL @@ -2543,8 +2555,8 @@ struct retro_core_option_v2_definition option_defs_cs[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -2736,6 +2748,8 @@ struct retro_core_options_v2 options_cs = { #define OPTION_VAL_95_CY NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CY NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CY NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CY NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CY NULL #define OPTION_VAL_SENSOR_CY NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_CY NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CY NULL @@ -2981,8 +2995,8 @@ struct retro_core_option_v2_definition option_defs_cy[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -3174,6 +3188,8 @@ struct retro_core_options_v2 options_cy = { #define OPTION_VAL_95_DA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_DA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_DA NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_DA NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_DA NULL #define OPTION_VAL_SENSOR_DA NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_DA NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_DA NULL @@ -3419,8 +3435,8 @@ struct retro_core_option_v2_definition option_defs_da[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -3612,6 +3628,8 @@ struct retro_core_options_v2 options_da = { #define OPTION_VAL_95_DE "95 %" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_DE "Entgegengesetzte Richtungseingabe zulassen" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_DE "Wenn diese Funktion aktiviert ist, kann gleichzeitig die linke und die rechte (oder die obere und die untere) Richtungstaste bzw. schnell abwechselnd gedrückt oder gehalten werden. Dies kann zu bewegungsbasierten Fehlern führen." +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_DE "Solarsensorstufe" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_DE "Setzt die Intensität des Umgebungslichts. Kann von Spielen verwendet werden, die einen Solarsensor in ihre Module eingeschlossen haben, z. B. die Boktai-Serie." #define OPTION_VAL_SENSOR_DE "Gerätesensor verwenden, falls verfügbar" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_DE NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_DE NULL @@ -3857,8 +3875,8 @@ struct retro_core_option_v2_definition option_defs_de[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -4050,6 +4068,8 @@ struct retro_core_options_v2 options_de = { #define OPTION_VAL_95_EL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_EL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_EL NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_EL "Επίπεδο Ηλιακού Αισθητήρα" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EL NULL #define OPTION_VAL_SENSOR_EL "Χρήση αισθητήρα συσκευής εάν υπάρχει" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_EL NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_EL NULL @@ -4295,8 +4315,8 @@ struct retro_core_option_v2_definition option_defs_el[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -4488,6 +4508,8 @@ struct retro_core_options_v2 options_el = { #define OPTION_VAL_95_EN NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_EN NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_EN NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_EN NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EN NULL #define OPTION_VAL_SENSOR_EN NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_EN NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_EN NULL @@ -4733,8 +4755,8 @@ struct retro_core_option_v2_definition option_defs_en[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -4926,6 +4948,8 @@ struct retro_core_options_v2 options_en = { #define OPTION_VAL_95_EO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_EO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_EO NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_EO NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EO NULL #define OPTION_VAL_SENSOR_EO NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_EO NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_EO NULL @@ -5171,8 +5195,8 @@ struct retro_core_option_v2_definition option_defs_eo[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -5364,6 +5388,8 @@ struct retro_core_options_v2 options_eo = { #define OPTION_VAL_95_ES "95 %" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_ES "Permitir entradas direccionales opuestas" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_ES "Esta opción permitirá pulsar, alternar rápidamente o mantener las direcciones izquierda y derecha (o arriba y abajo) al mismo tiempo. Podría provocar fallos de movimiento." +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_ES "Nivel del sensor solar" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_ES "Ajusta la intensidad de la luz solar ambiental. Para juegos que contenían un sensor solar en sus cartuchos, p. ej.: la saga Boktai." #define OPTION_VAL_SENSOR_ES "Utilizar dispositivo sensor si está disponible" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_ES NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_ES NULL @@ -5609,8 +5635,8 @@ struct retro_core_option_v2_definition option_defs_es[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -5802,6 +5828,8 @@ struct retro_core_options_v2 options_es = { #define OPTION_VAL_95_FA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_FA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_FA NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FA NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FA NULL #define OPTION_VAL_SENSOR_FA NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_FA NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_FA NULL @@ -6047,8 +6075,8 @@ struct retro_core_option_v2_definition option_defs_fa[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -6240,6 +6268,8 @@ struct retro_core_options_v2 options_fa = { #define OPTION_VAL_95_FI "95 %" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_FI "Salli vastakkaisten suuntien syöte" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_FI "Tämän käyttöönotto sallii painamaan / nopeasti vaihtelemaan / pitämään sekä vasemmalle että oikealle (tai ylös ja alas) samanaikaisesti. Tämä voi aiheuttaa liikkeisiin perustuvia virheitä." +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FI "Aurinkoanturin taso" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FI "Asettaa ympäristön auringonvalon voimakkuuden. Voidaan käyttää peleissä, jotka sisälsivät aurinkoanturin kaseteissaan, esim. Boktai-sarjassa." #define OPTION_VAL_SENSOR_FI "Käytä laitteen anturia, mikäli saatavana" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_FI NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_FI NULL @@ -6485,8 +6515,8 @@ struct retro_core_option_v2_definition option_defs_fi[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -6678,6 +6708,8 @@ struct retro_core_options_v2 options_fi = { #define OPTION_VAL_95_FR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_FR "Autoriser les entrées directionnelles opposées" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_FR "L'activation de cette option permettra d'appuyer/d'alterner rapidement/de maintenir les directions gauche et droite (ou haut et bas) en même temps. Cela peut causer des bugs liés au mouvement." +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FR "Niveau du capteur solaire" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FR "Définit l'intensité ambiante de la lumière du soleil. Peut être utilisée par des jeux qui incluaient un capteur solaire dans leurs cartouches, par exemple : la série Boktai." #define OPTION_VAL_SENSOR_FR "Utiliser le capteur de l'appareil si disponible" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_FR NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_FR NULL @@ -6923,8 +6955,8 @@ struct retro_core_option_v2_definition option_defs_fr[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -7116,6 +7148,8 @@ struct retro_core_options_v2 options_fr = { #define OPTION_VAL_95_GL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_GL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_GL NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_GL NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_GL NULL #define OPTION_VAL_SENSOR_GL NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_GL NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_GL NULL @@ -7361,8 +7395,8 @@ struct retro_core_option_v2_definition option_defs_gl[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -7554,6 +7588,8 @@ struct retro_core_options_v2 options_gl = { #define OPTION_VAL_95_HE NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_HE NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_HE NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_HE NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HE NULL #define OPTION_VAL_SENSOR_HE NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_HE NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_HE NULL @@ -7799,8 +7835,8 @@ struct retro_core_option_v2_definition option_defs_he[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -7992,6 +8028,8 @@ struct retro_core_options_v2 options_he = { #define OPTION_VAL_95_HR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_HR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_HR NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_HR NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HR NULL #define OPTION_VAL_SENSOR_HR NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_HR NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_HR NULL @@ -8237,8 +8275,8 @@ struct retro_core_option_v2_definition option_defs_hr[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -8430,6 +8468,8 @@ struct retro_core_options_v2 options_hr = { #define OPTION_VAL_95_HU NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_HU "Ellentétes irányok engedélyezése" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_HU "A jobb és bal (vagy fel és le) irányok egyidejű/gyorsan váltakozó lenyomásának vagy nyomva tartásának engedélyezése. Hibákat okozhat a mozgatásban." +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_HU "Fényszenzor szintje" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HU "A környező napfény intenzitásának állítása. Olyan játékok használják, amelyek tartalmaznak fényérzékelőt a cartridge-ben, mint pl. a Boktai sorozat." #define OPTION_VAL_SENSOR_HU "Az eszköz szenzorának használata, ha elérhető" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_HU NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_HU NULL @@ -8675,8 +8715,8 @@ struct retro_core_option_v2_definition option_defs_hu[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -8868,6 +8908,8 @@ struct retro_core_options_v2 options_hu = { #define OPTION_VAL_95_ID NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_ID NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_ID NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_ID NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_ID NULL #define OPTION_VAL_SENSOR_ID NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_ID NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_ID NULL @@ -9113,8 +9155,8 @@ struct retro_core_option_v2_definition option_defs_id[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -9306,6 +9348,8 @@ struct retro_core_options_v2 options_id = { #define OPTION_VAL_95_IT NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_IT "Permetti Input Direzionali Opposti" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_IT "Attivando questa funzionalità ti permette di premere / alternare velocemente / tenere premuti entrambe le direzioni destra e sinistra (oppure su e giù) allo stesso momento. Potrebbe causare dei glitch di movimento." +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_IT "Livello Sensore Solare" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_IT "Imposta l'intensità solare dell'ambiente. Può essere usato dai giochi che includono un sensore solare nelle loro cartucce, es.: la serie Boktai." #define OPTION_VAL_SENSOR_IT "Usa sensore dispositivo se disponibile" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_IT NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_IT NULL @@ -9551,8 +9595,8 @@ struct retro_core_option_v2_definition option_defs_it[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -9744,6 +9788,8 @@ struct retro_core_options_v2 options_it = { #define OPTION_VAL_95_JA NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_JA "対向方向入力を許可する" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_JA "有効にすると、左右 (または上下) 方向の同時押し / 高速交互押し / 長押しが可能になります。動作に不具合が生じる場合があります。" +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_JA "太陽センサーレベル" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_JA NULL #define OPTION_VAL_SENSOR_JA "利用可能な場合は端末センサーを使用する" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_JA NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_JA NULL @@ -9989,8 +10035,8 @@ struct retro_core_option_v2_definition option_defs_ja[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -10182,6 +10228,8 @@ struct retro_core_options_v2 options_ja = { #define OPTION_VAL_95_KO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_KO "반대 방향 동시 입력 허용" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_KO "이 옵션을 활성화하면 왼쪽과 오른쪽 (또는 위쪽과 아래쪽) 방향 입력을 동시에 누르거나 빠르게 번갈아 누르는 것을 허용합니다. 이는 움직임 관련 버그를 일으킬 수 있습니다." +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_KO "태양광 센서 수준" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_KO "태양광 센서의 강도를 설정합니다. 카트리지에 태양광 센서를 장착한 일부 게임(예: Boktai 시리즈)에서 사용할 수 있습니다." #define OPTION_VAL_SENSOR_KO "가능한 경우 장치 센서 사용" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_KO NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_KO NULL @@ -10427,8 +10475,8 @@ struct retro_core_option_v2_definition option_defs_ko[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -10620,6 +10668,8 @@ struct retro_core_options_v2 options_ko = { #define OPTION_VAL_95_MT NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_MT NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_MT NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_MT NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_MT NULL #define OPTION_VAL_SENSOR_MT NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_MT NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_MT NULL @@ -10865,8 +10915,8 @@ struct retro_core_option_v2_definition option_defs_mt[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -11058,6 +11108,8 @@ struct retro_core_options_v2 options_mt = { #define OPTION_VAL_95_NL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_NL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_NL NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_NL NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_NL NULL #define OPTION_VAL_SENSOR_NL NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_NL NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_NL NULL @@ -11303,8 +11355,8 @@ struct retro_core_option_v2_definition option_defs_nl[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -11496,6 +11548,8 @@ struct retro_core_options_v2 options_nl = { #define OPTION_VAL_95_NO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_NO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_NO NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_NO NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_NO NULL #define OPTION_VAL_SENSOR_NO NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_NO NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_NO NULL @@ -11741,8 +11795,8 @@ struct retro_core_option_v2_definition option_defs_no[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -11934,6 +11988,8 @@ struct retro_core_options_v2 options_no = { #define OPTION_VAL_95_OC NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_OC NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_OC NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_OC NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_OC NULL #define OPTION_VAL_SENSOR_OC NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_OC NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_OC NULL @@ -12179,8 +12235,8 @@ struct retro_core_option_v2_definition option_defs_oc[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -12372,6 +12428,8 @@ struct retro_core_options_v2 options_oc = { #define OPTION_VAL_95_PL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_PL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_PL NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PL NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PL NULL #define OPTION_VAL_SENSOR_PL "Użyj czujnika urządzenia, jeśli jest dostępny" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_PL NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_PL NULL @@ -12617,8 +12675,8 @@ struct retro_core_option_v2_definition option_defs_pl[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -12810,6 +12868,8 @@ struct retro_core_options_v2 options_pl = { #define OPTION_VAL_95_PT_BR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_PT_BR "Permitir entradas direcionais opostas" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_PT_BR "Esta opção permitirá pressionar, alternar ou segurar rapidamente as direções esquerda e direita (ou cima e baixo) ao mesmo tempo. Pode causar falhas de movimento." +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_BR "Nível do sensor solar" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PT_BR "Define a intensidade da luz do sol no ambiente. Pode ser usado por jogos que incluem um sensor solar em seus cartuchos, por exemplo: a série Boktai." #define OPTION_VAL_SENSOR_PT_BR "Usa um dispositivo sensor, se disponível" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_PT_BR NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_PT_BR NULL @@ -13055,8 +13115,8 @@ struct retro_core_option_v2_definition option_defs_pt_br[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -13248,6 +13308,8 @@ struct retro_core_options_v2 options_pt_br = { #define OPTION_VAL_95_PT_PT NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_PT_PT NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_PT_PT NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_PT NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PT_PT NULL #define OPTION_VAL_SENSOR_PT_PT NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_PT_PT NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_PT_PT NULL @@ -13493,8 +13555,8 @@ struct retro_core_option_v2_definition option_defs_pt_pt[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -13686,6 +13748,8 @@ struct retro_core_options_v2 options_pt_pt = { #define OPTION_VAL_95_RO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_RO NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_RO NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_RO NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_RO NULL #define OPTION_VAL_SENSOR_RO NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_RO NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_RO NULL @@ -13931,8 +13995,8 @@ struct retro_core_option_v2_definition option_defs_ro[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -14124,6 +14188,8 @@ struct retro_core_options_v2 options_ro = { #define OPTION_VAL_95_RU NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_RU "Разрешать нажатия в разные стороны" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_RU "Позволяет нажимать / быстро менять / зажимать одновременно направления влево и вправо (или вверх и вниз). Может вызывать глитчи, связанные с перемещением." +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_RU "Уровень датчика света" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_RU "Устанавливает интенсивность окружающего освещения. Может использоваться в играх с картриджами, оснащёнными датчиком света (напр. серия Boktai)." #define OPTION_VAL_SENSOR_RU "Использовать датчик устройства" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_RU NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_RU NULL @@ -14369,8 +14435,8 @@ struct retro_core_option_v2_definition option_defs_ru[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -14562,6 +14628,8 @@ struct retro_core_options_v2 options_ru = { #define OPTION_VAL_95_SI NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SI NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SI NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SI NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SI NULL #define OPTION_VAL_SENSOR_SI NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_SI NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SI NULL @@ -14807,8 +14875,8 @@ struct retro_core_option_v2_definition option_defs_si[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -15000,6 +15068,8 @@ struct retro_core_options_v2 options_si = { #define OPTION_VAL_95_SK NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SK NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SK NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SK NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SK NULL #define OPTION_VAL_SENSOR_SK NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_SK NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SK NULL @@ -15245,8 +15315,8 @@ struct retro_core_option_v2_definition option_defs_sk[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -15438,6 +15508,8 @@ struct retro_core_options_v2 options_sk = { #define OPTION_VAL_95_SR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SR NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SR NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SR NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SR NULL #define OPTION_VAL_SENSOR_SR NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_SR NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SR NULL @@ -15683,8 +15755,8 @@ struct retro_core_option_v2_definition option_defs_sr[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -15876,6 +15948,8 @@ struct retro_core_options_v2 options_sr = { #define OPTION_VAL_95_SV "95 %" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SV NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SV NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SV NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SV NULL #define OPTION_VAL_SENSOR_SV NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_SV NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SV NULL @@ -16121,8 +16195,8 @@ struct retro_core_option_v2_definition option_defs_sv[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -16314,6 +16388,8 @@ struct retro_core_options_v2 options_sv = { #define OPTION_VAL_95_TR "%95" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_TR "Karşı Yönlü Girişe İzin Ver" #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_TR "Bunu etkinleştirmek aynı anda hem sola hem de sağa (veya yukarı ve aşağı) yönlere basma/hızlı değiştirme/tutma imkanı sağlar. Bu harekete dayalı hatalara neden olabilir." +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_TR "Güneş Sensörü Seviyesi" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_TR "Ortamdaki güneş ışığı yoğunluğunu ayarlar. Kartuşlarında güneş sensörü bulunan oyunlar tarafından kullanılabilir, örneğin: Boktai serisi." #define OPTION_VAL_SENSOR_TR "Varsa cihaz sensörünü kullanın" #define MGBA_SOLAR_SENSOR_INPUT_LABEL_TR NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_TR NULL @@ -16559,8 +16635,8 @@ struct retro_core_option_v2_definition option_defs_tr[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -16752,6 +16828,8 @@ struct retro_core_options_v2 options_tr = { #define OPTION_VAL_95_UK NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_UK NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_UK "Увімкнення цього дозволить одночасно натискати / швидко чергувати/утримувати одночасно ліворуч та праворуч (чи донизу) напрямки. Це може спричинити глітчі руху." +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_UK NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_UK NULL #define OPTION_VAL_SENSOR_UK NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_UK NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_UK NULL @@ -16997,8 +17075,8 @@ struct retro_core_option_v2_definition option_defs_uk[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -17190,6 +17268,8 @@ struct retro_core_options_v2 options_uk = { #define OPTION_VAL_95_VAL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_VAL NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_VAL NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_VAL NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_VAL NULL #define OPTION_VAL_SENSOR_VAL NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_VAL NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_VAL NULL @@ -17435,8 +17515,8 @@ struct retro_core_option_v2_definition option_defs_val[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, @@ -17628,6 +17708,8 @@ struct retro_core_options_v2 options_val = { #define OPTION_VAL_95_VN NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_VN NULL #define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_VN NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_VN NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_VN NULL #define OPTION_VAL_SENSOR_VN NULL #define MGBA_SOLAR_SENSOR_INPUT_LABEL_VN NULL #define MGBA_SOLAR_SENSOR_INPUT_INFO_0_VN NULL @@ -17873,8 +17955,8 @@ struct retro_core_option_v2_definition option_defs_vn[] = { NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, + { "off", "Off" }, + { "sensor", "Use device sensor if available" }, { "buttons", "L3/R3 Increment" }, { "chord", "L3 + Stick Chords" }, { "0", "Static: 0" }, From 7b3a805f229b6c6aa88d07c311bf089d9bef6418 Mon Sep 17 00:00:00 2001 From: TideGear Date: Thu, 29 Jan 2026 16:58:18 -0800 Subject: [PATCH 4/6] Revert "libretro: Add chord mode solar sensor input and fix Boktai 1 8-bar mapping" This reverts commit b0d63c0c4e98f10c9c60738cf59acb59ac715cc4. --- src/platform/libretro/libretro.c | 330 +--- src/platform/libretro/libretro_core_options.h | 37 +- .../libretro/libretro_core_options_intl.h | 1683 +++++++---------- 3 files changed, 768 insertions(+), 1282 deletions(-) diff --git a/src/platform/libretro/libretro.c b/src/platform/libretro/libretro.c index f9eb2248c30..4b05a422f6b 100644 --- a/src/platform/libretro/libretro.c +++ b/src/platform/libretro/libretro.c @@ -75,9 +75,6 @@ static void _audioRateChanged(struct mAVStream*, unsigned rate); static void _setRumble(struct mRumbleIntegrator*, float level); static uint8_t _readLux(struct GBALuminanceSource* lux); static void _updateLux(struct GBALuminanceSource* lux); -static int _boktai1StepToBar(int step); -static int _boktai1BarToStep(int bar); -static int _solarChordLevel(int16_t joypadMask); static void _updateCamera(const uint32_t* buffer, unsigned width, unsigned height, size_t pitch); static void _startImage(struct mImageSource*, unsigned w, unsigned h, int colorFormats); static void _stopImage(struct mImageSource*); @@ -109,10 +106,6 @@ static int luxLevelIndex; static uint8_t luxLevel; static bool luxSensorEnabled; static bool luxSensorUsed; -static bool luxChordMode; -static bool luxInputAdjustable; -static bool inputDescriptorsChordMode; -static bool boktai1Game; static struct mLogger logger; static struct retro_camera_callback cam; static struct mImageSource imageSource; @@ -143,108 +136,6 @@ static int32_t audioLowPassRange = 0; static int32_t audioLowPassLeftPrev = 0; static int32_t audioLowPassRightPrev = 0; -static bool _joypadPressed(unsigned id, int16_t joypadMask) { - if (useBitmasks) { - return (joypadMask >> id) & 1; - } - if (!inputCallback) { - return false; - } - return inputCallback(0, RETRO_DEVICE_JOYPAD, 0, id); -} - -static int _clampLuxLevel(int level) { - if (level < 0) { - return 0; - } - if (level > 10) { - return 10; - } - return level; -} - -static void _applySolarInputOption(const char* value, bool updateLevel) { - luxChordMode = false; - luxSensorUsed = false; - luxInputAdjustable = false; - - if (!value) { - return; - } - - if (strcmp(value, "chord") == 0) { - luxChordMode = true; - luxInputAdjustable = true; - return; - } - if (strcmp(value, "buttons") == 0) { - luxInputAdjustable = true; - return; - } - if (strcmp(value, "sensor") == 0) { - luxSensorUsed = true; - return; - } - if (strcmp(value, "off") == 0) { - if (updateLevel) { - luxLevelIndex = 0; - } - return; - } - - if (updateLevel) { - char* end; - int level = (int) strtol(value, &end, 10); - if (!*end) { - luxLevelIndex = _clampLuxLevel(level); - } - } -} - -static const struct retro_input_descriptor inputDescriptorsDefault[] = { - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Turbo A" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "Turbo B" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Select" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "Right" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "Left" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "Up" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "Down" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "L" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "Turbo R" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Turbo L" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3, "Brighten Solar Sensor" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3, "Darken Solar Sensor" }, - { 0 } -}; - -static const struct retro_input_descriptor inputDescriptorsChord[] = { - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Turbo A" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "Turbo B" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Select" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "Right" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "Left" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "Up" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "Down" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "L" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "Turbo R" }, - { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Turbo L" }, - { 0 } -}; - -static void _setInputDescriptors(bool chordMode) { - environCallback(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, - chordMode ? inputDescriptorsChord : inputDescriptorsDefault); - inputDescriptorsChordMode = chordMode; -} - static const int keymap[] = { RETRO_DEVICE_ID_JOYPAD_A, RETRO_DEVICE_ID_JOYPAD_B, @@ -1501,6 +1392,27 @@ void retro_init(void) { #endif environCallback(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt); + struct retro_input_descriptor inputDescriptors[] = { + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Turbo A" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "Turbo B" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Select" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "Right" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "Left" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "Up" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "Down" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "L" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "Turbo R" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "Turbo L" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3, "Brighten Solar Sensor" }, + { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3, "Darken Solar Sensor" }, + { 0 } + }; + environCallback(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, &inputDescriptors); + useBitmasks = environCallback(RETRO_ENVIRONMENT_GET_INPUT_BITMASKS, NULL); // TODO: RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME when BIOS booting is supported @@ -1524,23 +1436,10 @@ void retro_init(void) { envVarsUpdated = true; luxSensorUsed = false; luxSensorEnabled = false; - luxChordMode = false; - luxInputAdjustable = false; - inputDescriptorsChordMode = false; luxLevelIndex = 0; luxLevel = 0; lux.readLuminance = _readLux; lux.sample = _updateLux; - { - struct retro_variable var = { - .key = "mgba_solar_sensor_input", - .value = 0 - }; - if (environCallback(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { - _applySolarInputOption(var.value, true); - } - } - _setInputDescriptors(luxChordMode); _updateLux(&lux); struct retro_log_callback log; @@ -1669,16 +1568,6 @@ void retro_run(void) { mCoreConfigSetIntValue(&core->config, "allowOpposingDirections", strcmp(var.value, "yes") == 0); core->reloadConfigOption(core, "allowOpposingDirections", NULL); } - struct retro_variable solarInputVar = { - .key = "mgba_solar_sensor_input", - .value = 0 - }; - if (environCallback(RETRO_ENVIRONMENT_GET_VARIABLE, &solarInputVar) && solarInputVar.value) { - _applySolarInputOption(solarInputVar.value, true); - } - if (luxChordMode != inputDescriptorsChordMode) { - _setInputDescriptors(luxChordMode); - } _loadFrameskipSettings(NULL); _loadAudioLowPassFilterSettings(); @@ -1693,9 +1582,8 @@ void retro_run(void) { keys = 0; int i; - int16_t joypadMask = 0; if (useBitmasks) { - joypadMask = inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_MASK); + int16_t joypadMask = inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_MASK); for (i = 0; i < sizeof(keymap) / sizeof(*keymap); ++i) { keys |= ((joypadMask >> keymap[i]) & 1) << i; } @@ -1718,61 +1606,24 @@ void retro_run(void) { core->setKeys(core, keys); - if (!luxSensorUsed && luxInputAdjustable) { + if (!luxSensorUsed) { static bool wasAdjustingLux = false; - if (luxChordMode) { - int level = _solarChordLevel(joypadMask); - if (level >= 0) { - if (boktai1Game) { - if (level > 8) { - level = 8; - } - luxLevelIndex = _boktai1BarToStep(level); - } else { - luxLevelIndex = level; + if (wasAdjustingLux) { + wasAdjustingLux = inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3) || + inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3); + } else { + if (inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3)) { + ++luxLevelIndex; + if (luxLevelIndex > 10) { + luxLevelIndex = 10; } wasAdjustingLux = true; - } else { - wasAdjustingLux = false; - } - } else if (boktai1Game) { - if (wasAdjustingLux) { - wasAdjustingLux = _joypadPressed(RETRO_DEVICE_ID_JOYPAD_R3, joypadMask) || - _joypadPressed(RETRO_DEVICE_ID_JOYPAD_L3, joypadMask); - } else { - int bar = _boktai1StepToBar(luxLevelIndex); - if (_joypadPressed(RETRO_DEVICE_ID_JOYPAD_R3, joypadMask)) { - if (bar < 8) { - ++bar; - } - luxLevelIndex = _boktai1BarToStep(bar); - wasAdjustingLux = true; - } else if (_joypadPressed(RETRO_DEVICE_ID_JOYPAD_L3, joypadMask)) { - if (bar > 0) { - --bar; - } - luxLevelIndex = _boktai1BarToStep(bar); - wasAdjustingLux = true; - } - } - } else { - if (wasAdjustingLux) { - wasAdjustingLux = _joypadPressed(RETRO_DEVICE_ID_JOYPAD_R3, joypadMask) || - _joypadPressed(RETRO_DEVICE_ID_JOYPAD_L3, joypadMask); - } else { - if (_joypadPressed(RETRO_DEVICE_ID_JOYPAD_R3, joypadMask)) { - ++luxLevelIndex; - if (luxLevelIndex > 10) { - luxLevelIndex = 10; - } - wasAdjustingLux = true; - } else if (_joypadPressed(RETRO_DEVICE_ID_JOYPAD_L3, joypadMask)) { - --luxLevelIndex; - if (luxLevelIndex < 0) { - luxLevelIndex = 0; - } - wasAdjustingLux = true; + } else if (inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3)) { + --luxLevelIndex; + if (luxLevelIndex < 0) { + luxLevelIndex = 0; } + wasAdjustingLux = true; } } } @@ -2236,16 +2087,6 @@ bool retro_load_game(const struct retro_game_info* game) { _reloadSettings(); core->loadROM(core, rom); deferredSetup = true; -#ifdef M_CORE_GBA - boktai1Game = false; - if (core->platform(core) == mPLATFORM_GBA) { - struct mGameInfo info; - core->getGameInfo(core, &info); - boktai1Game = strcmp(info.code, "U3IJ") == 0 || strcmp(info.code, "U3IE") == 0 || strcmp(info.code, "U3IP") == 0; - } -#else - boktai1Game = false; -#endif const char* sysDir = 0; const char* biosName = 0; @@ -2625,90 +2466,10 @@ static void _setRumble(struct mRumbleIntegrator* rumble, float level) { rumbleCallback(0, RETRO_RUMBLE_WEAK, level * 0xFFFF); } -static int _boktai1StepToBar(int step) { - static const uint8_t map[11] = { 0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8 }; - if (step < 0) { - step = 0; - } else if (step > 10) { - step = 10; - } - return map[step]; -} - -static int _boktai1BarToStep(int bar) { - static const uint8_t map[9] = { 0, 1, 2, 3, 5, 6, 7, 8, 10 }; - if (bar < 0) { - bar = 0; - } else if (bar > 8) { - bar = 8; - } - return map[bar]; -} - -static int _solarChordLevel(int16_t joypadMask) { - if (!inputCallback) { - return -1; - } - - const int16_t deadzone = 0x4000; - int16_t lx = inputCallback(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_X); - int16_t ly = inputCallback(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_Y); - int16_t rx = inputCallback(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_X); - int16_t ry = inputCallback(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y); - - bool lUp = ly < -deadzone; - bool lDown = ly > deadzone; - bool lLeft = lx < -deadzone; - bool lRight = lx > deadzone; - bool rUp = ry < -deadzone; - bool rDown = ry > deadzone; - bool rLeft = rx < -deadzone; - bool rRight = rx > deadzone; - bool anyDir = lUp || lDown || lLeft || lRight || rUp || rDown || rLeft || rRight; - bool l3Pressed = _joypadPressed(RETRO_DEVICE_ID_JOYPAD_L3, joypadMask); - - if (!l3Pressed && !anyDir) { - return 0; - } - - if (lUp && rUp) { - return 9; - } - if (lRight && rRight) { - return 10; - } - if (lUp) { - return 1; - } - if (lRight) { - return 2; - } - if (lDown) { - return 3; - } - if (lLeft) { - return 4; - } - if (rUp) { - return 5; - } - if (rRight) { - return 6; - } - if (rDown) { - return 7; - } - if (rLeft) { - return 8; - } - - return 0; -} - static void _updateLux(struct GBALuminanceSource* lux) { UNUSED(lux); struct retro_variable var = { - .key = "mgba_solar_sensor_input", + .key = "mgba_solar_sensor_level", .value = 0 }; bool luxVarUpdated = envVarsUpdated; @@ -2718,7 +2479,7 @@ static void _updateLux(struct GBALuminanceSource* lux) { } if (luxVarUpdated) { - _applySolarInputOption(var.value, true); + luxSensorUsed = strcmp(var.value, "sensor") == 0; } if (luxSensorUsed) { @@ -2726,6 +2487,21 @@ static void _updateLux(struct GBALuminanceSource* lux) { float fLux = luxSensorEnabled ? sensorGetCallback(0, RETRO_SENSOR_ILLUMINANCE) : 0.0f; luxLevel = cbrtf(fLux) * 8; } else { + if (luxVarUpdated) { + char* end; + int newLuxLevelIndex = strtol(var.value, &end, 10); + + if (!*end) { + if (newLuxLevelIndex > 10) { + luxLevelIndex = 10; + } else if (newLuxLevelIndex < 0) { + luxLevelIndex = 0; + } else { + luxLevelIndex = newLuxLevelIndex; + } + } + } + luxLevel = 0x16; if (luxLevelIndex > 0) { luxLevel += GBA_LUX_LEVELS[luxLevelIndex - 1]; diff --git a/src/platform/libretro/libretro_core_options.h b/src/platform/libretro/libretro_core_options.h index 03b93cd4e45..9bd553bdf23 100644 --- a/src/platform/libretro/libretro_core_options.h +++ b/src/platform/libretro/libretro_core_options.h @@ -268,31 +268,28 @@ struct retro_core_option_v2_definition option_defs_us[] = { "no" }, { - "mgba_solar_sensor_input", - "Solar Sensor Input", + "mgba_solar_sensor_level", + "Solar Sensor Level", NULL, - "Selects how the solar sensor level is provided for games that included a solar sensor in their cartridges, e.g: the Boktai series. Note: For 'L3 + Stick Chords', set RetroArch's 'Analog to Digital Type' to 'None'.", + "Sets ambient sunlight intensity. Can be used by games that included a solar sensor in their cartridges, e.g: the Boktai series.", NULL, "input", { - { "off", "Disabled" }, - { "sensor", "Use Device Sensor If Available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", "Use device sensor if available" }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", diff --git a/src/platform/libretro/libretro_core_options_intl.h b/src/platform/libretro/libretro_core_options_intl.h index 5832c25f95d..01ea7baea49 100644 --- a/src/platform/libretro/libretro_core_options_intl.h +++ b/src/platform/libretro/libretro_core_options_intl.h @@ -111,10 +111,6 @@ extern "C" { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_AR NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_AR NULL #define OPTION_VAL_SENSOR_AR NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_AR NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_AR NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_AR NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_AR NULL #define MGBA_FORCE_GBP_LABEL_AR NULL #define MGBA_FORCE_GBP_INFO_0_AR NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_AR NULL @@ -348,31 +344,28 @@ struct retro_core_option_v2_definition option_defs_ar[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_AR, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_AR, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_AR, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_AR, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_AR }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -551,10 +544,6 @@ struct retro_core_options_v2 options_ar = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_AST "Nivel del sensor solar" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_AST NULL #define OPTION_VAL_SENSOR_AST NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_AST NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_AST NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_AST NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_AST NULL #define MGBA_FORCE_GBP_LABEL_AST NULL #define MGBA_FORCE_GBP_INFO_0_AST NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_AST NULL @@ -788,31 +777,28 @@ struct retro_core_option_v2_definition option_defs_ast[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_AST, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_AST, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_AST, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_AST, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_AST }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -991,10 +977,6 @@ struct retro_core_options_v2 options_ast = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CA NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CA NULL #define OPTION_VAL_SENSOR_CA NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_CA NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CA NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_CA NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_CA NULL #define MGBA_FORCE_GBP_LABEL_CA NULL #define MGBA_FORCE_GBP_INFO_0_CA NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_CA NULL @@ -1228,31 +1210,28 @@ struct retro_core_option_v2_definition option_defs_ca[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_CA, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_CA, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_CA, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CA, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_CA }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -1431,10 +1410,6 @@ struct retro_core_options_v2 options_ca = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHS "太阳光传感器等级" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CHS NULL #define OPTION_VAL_SENSOR_CHS "如果可用则使用设备传感器" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_CHS NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CHS NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_CHS NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_CHS NULL #define MGBA_FORCE_GBP_LABEL_CHS NULL #define MGBA_FORCE_GBP_INFO_0_CHS NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_CHS NULL @@ -1668,31 +1643,28 @@ struct retro_core_option_v2_definition option_defs_chs[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_CHS, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHS, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_CHS, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CHS, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_CHS }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -1871,10 +1843,6 @@ struct retro_core_options_v2 options_chs = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHT NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CHT NULL #define OPTION_VAL_SENSOR_CHT NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_CHT NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CHT NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_CHT NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_CHT NULL #define MGBA_FORCE_GBP_LABEL_CHT NULL #define MGBA_FORCE_GBP_INFO_0_CHT NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_CHT NULL @@ -2108,31 +2076,28 @@ struct retro_core_option_v2_definition option_defs_cht[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_CHT, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHT, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_CHT, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CHT, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_CHT }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -2311,10 +2276,6 @@ struct retro_core_options_v2 options_cht = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CS "Úroveň Solárního Senzoru" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CS "Nastaví intenzitu okolního slunečního světla. Lze použít ve hrách, které obsahují sluneční senzor v kazetách, např. v sérii Boktai." #define OPTION_VAL_SENSOR_CS "Použít snímač zařízení, je-li k dispozici" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_CS NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CS NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_CS NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_CS NULL #define MGBA_FORCE_GBP_LABEL_CS "Game Boy Player Vybrace (Restart)" #define MGBA_FORCE_GBP_INFO_0_CS "Povolení této funkce umožní kompatibilním hrám se spouštěcím logem Game Boy Player, aby ovladač vybroval. Vzhledem k tomu, jak se společnost Nintendo rozhodla, že by tato funkce měla fungovat, může v některých těchto hrách způsobovat závady, jako je blikání nebo zpoždění." #define MGBA_IDLE_OPTIMIZATION_LABEL_CS "Odstranění Nečinné Smyčky" @@ -2548,31 +2509,28 @@ struct retro_core_option_v2_definition option_defs_cs[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_CS, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_CS, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_CS, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CS, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_CS }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -2751,10 +2709,6 @@ struct retro_core_options_v2 options_cs = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CY NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CY NULL #define OPTION_VAL_SENSOR_CY NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_CY NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_CY NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_CY NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_CY NULL #define MGBA_FORCE_GBP_LABEL_CY NULL #define MGBA_FORCE_GBP_INFO_0_CY NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_CY NULL @@ -2988,31 +2942,28 @@ struct retro_core_option_v2_definition option_defs_cy[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_CY, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_CY, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_CY, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CY, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_CY }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -3191,10 +3142,6 @@ struct retro_core_options_v2 options_cy = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_DA NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_DA NULL #define OPTION_VAL_SENSOR_DA NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_DA NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_DA NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_DA NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_DA NULL #define MGBA_FORCE_GBP_LABEL_DA NULL #define MGBA_FORCE_GBP_INFO_0_DA NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_DA NULL @@ -3428,31 +3375,28 @@ struct retro_core_option_v2_definition option_defs_da[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_DA, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_DA, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_DA, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_DA, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_DA }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -3631,10 +3575,6 @@ struct retro_core_options_v2 options_da = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_DE "Solarsensorstufe" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_DE "Setzt die Intensität des Umgebungslichts. Kann von Spielen verwendet werden, die einen Solarsensor in ihre Module eingeschlossen haben, z. B. die Boktai-Serie." #define OPTION_VAL_SENSOR_DE "Gerätesensor verwenden, falls verfügbar" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_DE NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_DE NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_DE NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_DE NULL #define MGBA_FORCE_GBP_LABEL_DE "Game-Boy-Player-Rumble (Neustart erforderlich)" #define MGBA_FORCE_GBP_INFO_0_DE "Wird dies aktiviert, können kompatible Spiele mit dem Game-Boy-Player-Bootlogo den Controller zum Rattern bringen. Aufgrund der Entscheidung von Nintendo, wie diese Funktion funktioniert, kann es bei einigen dieser Spiele zu Störungen wie Flackern oder Verzögerungen kommen." #define MGBA_IDLE_OPTIMIZATION_LABEL_DE "Leerlaufschleife entfernen" @@ -3868,31 +3808,28 @@ struct retro_core_option_v2_definition option_defs_de[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_DE, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_DE, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_DE, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_DE, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_DE }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -4071,10 +4008,6 @@ struct retro_core_options_v2 options_de = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_EL "Επίπεδο Ηλιακού Αισθητήρα" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EL NULL #define OPTION_VAL_SENSOR_EL "Χρήση αισθητήρα συσκευής εάν υπάρχει" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_EL NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_EL NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_EL NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_EL NULL #define MGBA_FORCE_GBP_LABEL_EL NULL #define MGBA_FORCE_GBP_INFO_0_EL NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_EL NULL @@ -4308,31 +4241,28 @@ struct retro_core_option_v2_definition option_defs_el[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_EL, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_EL, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_EL, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EL, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_EL }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -4511,10 +4441,6 @@ struct retro_core_options_v2 options_el = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_EN NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EN NULL #define OPTION_VAL_SENSOR_EN NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_EN NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_EN NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_EN NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_EN NULL #define MGBA_FORCE_GBP_LABEL_EN NULL #define MGBA_FORCE_GBP_INFO_0_EN NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_EN NULL @@ -4748,31 +4674,28 @@ struct retro_core_option_v2_definition option_defs_en[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_EN, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_EN, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_EN, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EN, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_EN }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -4951,10 +4874,6 @@ struct retro_core_options_v2 options_en = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_EO NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EO NULL #define OPTION_VAL_SENSOR_EO NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_EO NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_EO NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_EO NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_EO NULL #define MGBA_FORCE_GBP_LABEL_EO NULL #define MGBA_FORCE_GBP_INFO_0_EO NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_EO NULL @@ -5188,31 +5107,28 @@ struct retro_core_option_v2_definition option_defs_eo[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_EO, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_EO, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_EO, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EO, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_EO }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -5391,10 +5307,6 @@ struct retro_core_options_v2 options_eo = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_ES "Nivel del sensor solar" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_ES "Ajusta la intensidad de la luz solar ambiental. Para juegos que contenían un sensor solar en sus cartuchos, p. ej.: la saga Boktai." #define OPTION_VAL_SENSOR_ES "Utilizar dispositivo sensor si está disponible" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_ES NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_ES NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_ES NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_ES NULL #define MGBA_FORCE_GBP_LABEL_ES "Vibración de Game Boy Player (es necesario reiniciar)" #define MGBA_FORCE_GBP_INFO_0_ES "Permite que los juegos compatibles con el logotipo de arranque de Game Boy Player hagan vibrar el mando. Debido al método que utilizó Nintendo, puede provocar fallos gráficos, como parpadeos o retrasos de señal en algunos de estos juegos." #define MGBA_IDLE_OPTIMIZATION_LABEL_ES "Eliminar bucle de inactividad" @@ -5628,31 +5540,28 @@ struct retro_core_option_v2_definition option_defs_es[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_ES, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_ES, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_ES, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_ES, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_ES }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -5831,10 +5740,6 @@ struct retro_core_options_v2 options_es = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FA NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FA NULL #define OPTION_VAL_SENSOR_FA NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_FA NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_FA NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_FA NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_FA NULL #define MGBA_FORCE_GBP_LABEL_FA NULL #define MGBA_FORCE_GBP_INFO_0_FA NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_FA NULL @@ -6068,31 +5973,28 @@ struct retro_core_option_v2_definition option_defs_fa[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_FA, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_FA, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_FA, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FA, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_FA }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -6271,10 +6173,6 @@ struct retro_core_options_v2 options_fa = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FI "Aurinkoanturin taso" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FI "Asettaa ympäristön auringonvalon voimakkuuden. Voidaan käyttää peleissä, jotka sisälsivät aurinkoanturin kaseteissaan, esim. Boktai-sarjassa." #define OPTION_VAL_SENSOR_FI "Käytä laitteen anturia, mikäli saatavana" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_FI NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_FI NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_FI NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_FI NULL #define MGBA_FORCE_GBP_LABEL_FI "Game Boy Player tärinä (Uudelleenkäynnistys)" #define MGBA_FORCE_GBP_INFO_0_FI "Tämän käyttöönotto mahdollistaa Game Boy Player:in kanssa yhteensopivien pelien käyttää tärinää. Siitä miten Nintendo päätti tämän ominaisuuden pitäisi toimia, se saattaa aiheuttaa virheitä, kuten vilkkumista tai viivettä joissakin näistä peleistä." #define MGBA_IDLE_OPTIMIZATION_LABEL_FI "Joutosilmukan poisto" @@ -6508,31 +6406,28 @@ struct retro_core_option_v2_definition option_defs_fi[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_FI, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_FI, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_FI, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FI, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_FI }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -6711,10 +6606,6 @@ struct retro_core_options_v2 options_fi = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FR "Niveau du capteur solaire" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FR "Définit l'intensité ambiante de la lumière du soleil. Peut être utilisée par des jeux qui incluaient un capteur solaire dans leurs cartouches, par exemple : la série Boktai." #define OPTION_VAL_SENSOR_FR "Utiliser le capteur de l'appareil si disponible" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_FR NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_FR NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_FR NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_FR NULL #define MGBA_FORCE_GBP_LABEL_FR "Vibration du Game Boy Player (Redémarrage requis)" #define MGBA_FORCE_GBP_INFO_0_FR "Activer cette option permettra aux jeux compatibles avec le logo de démarrage du Game Boy Player de faire vibrer la manette. En raison de la façon dont Nintendo a décidé que cette fonctionnalité devrait marcher, cela peut causer des bugs tels que scintillement ou latence dans certains de ces jeux." #define MGBA_IDLE_OPTIMIZATION_LABEL_FR "Suppression de la boucle inactive" @@ -6948,31 +6839,28 @@ struct retro_core_option_v2_definition option_defs_fr[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_FR, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_FR, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_FR, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FR, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_FR }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -7151,10 +7039,6 @@ struct retro_core_options_v2 options_fr = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_GL NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_GL NULL #define OPTION_VAL_SENSOR_GL NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_GL NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_GL NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_GL NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_GL NULL #define MGBA_FORCE_GBP_LABEL_GL NULL #define MGBA_FORCE_GBP_INFO_0_GL NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_GL NULL @@ -7388,31 +7272,28 @@ struct retro_core_option_v2_definition option_defs_gl[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_GL, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_GL, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_GL, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_GL, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_GL }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -7591,10 +7472,6 @@ struct retro_core_options_v2 options_gl = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_HE NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HE NULL #define OPTION_VAL_SENSOR_HE NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_HE NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_HE NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_HE NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_HE NULL #define MGBA_FORCE_GBP_LABEL_HE NULL #define MGBA_FORCE_GBP_INFO_0_HE NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_HE NULL @@ -7828,31 +7705,28 @@ struct retro_core_option_v2_definition option_defs_he[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_HE, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_HE, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_HE, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HE, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_HE }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -8031,10 +7905,6 @@ struct retro_core_options_v2 options_he = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_HR NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HR NULL #define OPTION_VAL_SENSOR_HR NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_HR NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_HR NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_HR NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_HR NULL #define MGBA_FORCE_GBP_LABEL_HR NULL #define MGBA_FORCE_GBP_INFO_0_HR NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_HR NULL @@ -8268,31 +8138,28 @@ struct retro_core_option_v2_definition option_defs_hr[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_HR, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_HR, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_HR, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HR, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_HR }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -8471,10 +8338,6 @@ struct retro_core_options_v2 options_hr = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_HU "Fényszenzor szintje" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HU "A környező napfény intenzitásának állítása. Olyan játékok használják, amelyek tartalmaznak fényérzékelőt a cartridge-ben, mint pl. a Boktai sorozat." #define OPTION_VAL_SENSOR_HU "Az eszköz szenzorának használata, ha elérhető" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_HU NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_HU NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_HU NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_HU NULL #define MGBA_FORCE_GBP_LABEL_HU "Game Boy Player rezgés (újraindítás)" #define MGBA_FORCE_GBP_INFO_0_HU "A Game Boy Player indító logóval ellátott kompatibilis játékok rezgethetik a kontrollert. Mivel a Nintendo úgy döntött, hogy ez a feature úgy működjön, ahogy, így aztán hibákat, villódzást vagy késleltetést okozhat néhány ilyen játékban." #define MGBA_IDLE_OPTIMIZATION_LABEL_HU "Üresjárati hurkok eltávolítása" @@ -8708,31 +8571,28 @@ struct retro_core_option_v2_definition option_defs_hu[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_HU, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_HU, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_HU, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HU, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_HU }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -8911,10 +8771,6 @@ struct retro_core_options_v2 options_hu = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_ID NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_ID NULL #define OPTION_VAL_SENSOR_ID NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_ID NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_ID NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_ID NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_ID NULL #define MGBA_FORCE_GBP_LABEL_ID "Getaran Game Boy Player (mulai ulang)" #define MGBA_FORCE_GBP_INFO_0_ID NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_ID NULL @@ -9148,31 +9004,28 @@ struct retro_core_option_v2_definition option_defs_id[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_ID, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_ID, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_ID, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_ID, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_ID }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -9351,10 +9204,6 @@ struct retro_core_options_v2 options_id = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_IT "Livello Sensore Solare" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_IT "Imposta l'intensità solare dell'ambiente. Può essere usato dai giochi che includono un sensore solare nelle loro cartucce, es.: la serie Boktai." #define OPTION_VAL_SENSOR_IT "Usa sensore dispositivo se disponibile" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_IT NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_IT NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_IT NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_IT NULL #define MGBA_FORCE_GBP_LABEL_IT "Vibrazione Game Boy Player (Riavvio)" #define MGBA_FORCE_GBP_INFO_0_IT "Abilitando questa opzione i giochi saranno compatibili con il logo di avvio del Game Boy Player per far vibrare il controller. A causa di come Nintendo ha deciso che questa funzione dovrebbe funzionare, può causare problemi come tremolio o ritardo in alcuni di questi giochi." #define MGBA_IDLE_OPTIMIZATION_LABEL_IT "Rimozione Idle Loop" @@ -9588,31 +9437,28 @@ struct retro_core_option_v2_definition option_defs_it[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_IT, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_IT, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_IT, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_IT, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_IT }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -9791,10 +9637,6 @@ struct retro_core_options_v2 options_it = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_JA "太陽センサーレベル" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_JA NULL #define OPTION_VAL_SENSOR_JA "利用可能な場合は端末センサーを使用する" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_JA NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_JA NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_JA NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_JA NULL #define MGBA_FORCE_GBP_LABEL_JA "ゲームボーイプレーヤー振動 (再起動)" #define MGBA_FORCE_GBP_INFO_0_JA "この機能を有効にすると、ゲームボーイプレーヤーの起動ロゴがある対応ゲームで、コントローラーが振動するようになります。この機能は、任天堂の判断により、一部のゲームでちらつきやラグなどの不具合が発生する場合があります。" #define MGBA_IDLE_OPTIMIZATION_LABEL_JA "アイドルループの削除" @@ -10028,31 +9870,28 @@ struct retro_core_option_v2_definition option_defs_ja[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_JA, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_JA, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_JA, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_JA, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_JA }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -10231,10 +10070,6 @@ struct retro_core_options_v2 options_ja = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_KO "태양광 센서 수준" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_KO "태양광 센서의 강도를 설정합니다. 카트리지에 태양광 센서를 장착한 일부 게임(예: Boktai 시리즈)에서 사용할 수 있습니다." #define OPTION_VAL_SENSOR_KO "가능한 경우 장치 센서 사용" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_KO NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_KO NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_KO NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_KO NULL #define MGBA_FORCE_GBP_LABEL_KO "Game Boy Player 진동 (재시작 필요)" #define MGBA_FORCE_GBP_INFO_0_KO "사용할 경우 Game Boy Player 로고를 표시하는 호환 게임에서 컨트롤러 진동을 사용합니다. Nintendo의 진동 구현 방식 때문에 일부 게임에서는 화면 깜빡임 또는 지연이 발생할 수 있습니다." #define MGBA_IDLE_OPTIMIZATION_LABEL_KO "유휴 루프 제거" @@ -10468,31 +10303,28 @@ struct retro_core_option_v2_definition option_defs_ko[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_KO, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_KO, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_KO, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_KO, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_KO }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -10671,10 +10503,6 @@ struct retro_core_options_v2 options_ko = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_MT NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_MT NULL #define OPTION_VAL_SENSOR_MT NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_MT NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_MT NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_MT NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_MT NULL #define MGBA_FORCE_GBP_LABEL_MT NULL #define MGBA_FORCE_GBP_INFO_0_MT NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_MT NULL @@ -10908,31 +10736,28 @@ struct retro_core_option_v2_definition option_defs_mt[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_MT, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_MT, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_MT, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_MT, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_MT }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -11111,10 +10936,6 @@ struct retro_core_options_v2 options_mt = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_NL NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_NL NULL #define OPTION_VAL_SENSOR_NL NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_NL NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_NL NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_NL NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_NL NULL #define MGBA_FORCE_GBP_LABEL_NL NULL #define MGBA_FORCE_GBP_INFO_0_NL NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_NL NULL @@ -11348,31 +11169,28 @@ struct retro_core_option_v2_definition option_defs_nl[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_NL, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_NL, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_NL, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_NL, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_NL }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -11551,10 +11369,6 @@ struct retro_core_options_v2 options_nl = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_NO NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_NO NULL #define OPTION_VAL_SENSOR_NO NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_NO NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_NO NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_NO NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_NO NULL #define MGBA_FORCE_GBP_LABEL_NO NULL #define MGBA_FORCE_GBP_INFO_0_NO NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_NO NULL @@ -11788,31 +11602,28 @@ struct retro_core_option_v2_definition option_defs_no[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_NO, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_NO, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_NO, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_NO, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_NO }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -11991,10 +11802,6 @@ struct retro_core_options_v2 options_no = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_OC NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_OC NULL #define OPTION_VAL_SENSOR_OC NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_OC NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_OC NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_OC NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_OC NULL #define MGBA_FORCE_GBP_LABEL_OC NULL #define MGBA_FORCE_GBP_INFO_0_OC NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_OC NULL @@ -12228,31 +12035,28 @@ struct retro_core_option_v2_definition option_defs_oc[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_OC, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_OC, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_OC, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_OC, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_OC }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -12431,10 +12235,6 @@ struct retro_core_options_v2 options_oc = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PL NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PL NULL #define OPTION_VAL_SENSOR_PL "Użyj czujnika urządzenia, jeśli jest dostępny" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_PL NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_PL NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_PL NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_PL NULL #define MGBA_FORCE_GBP_LABEL_PL NULL #define MGBA_FORCE_GBP_INFO_0_PL NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_PL "Usuwanie pętli bezczynności" @@ -12668,31 +12468,28 @@ struct retro_core_option_v2_definition option_defs_pl[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_PL, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_PL, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_PL, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PL, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_PL }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -12871,10 +12668,6 @@ struct retro_core_options_v2 options_pl = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_BR "Nível do sensor solar" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PT_BR "Define a intensidade da luz do sol no ambiente. Pode ser usado por jogos que incluem um sensor solar em seus cartuchos, por exemplo: a série Boktai." #define OPTION_VAL_SENSOR_PT_BR "Usa um dispositivo sensor, se disponível" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_PT_BR NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_PT_BR NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_PT_BR NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_PT_BR NULL #define MGBA_FORCE_GBP_LABEL_PT_BR "Vibração do Game Boy Player (requer reinício)" #define MGBA_FORCE_GBP_INFO_0_PT_BR "Permite que os jogos que suportam o logotipo de inicialização do Game Boy Player vibrem o controle. Devido ao método que a Nintendo utilizou, pode causar falhas gráficas como tremulações ou atrasos de sinal em alguns destes jogos." #define MGBA_IDLE_OPTIMIZATION_LABEL_PT_BR "Remover loops de inatividade" @@ -13108,31 +12901,28 @@ struct retro_core_option_v2_definition option_defs_pt_br[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_PT_BR, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_BR, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_PT_BR, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PT_BR, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_PT_BR }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -13311,10 +13101,6 @@ struct retro_core_options_v2 options_pt_br = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_PT NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PT_PT NULL #define OPTION_VAL_SENSOR_PT_PT NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_PT_PT NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_PT_PT NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_PT_PT NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_PT_PT NULL #define MGBA_FORCE_GBP_LABEL_PT_PT NULL #define MGBA_FORCE_GBP_INFO_0_PT_PT NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_PT_PT NULL @@ -13548,31 +13334,28 @@ struct retro_core_option_v2_definition option_defs_pt_pt[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_PT_PT, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_PT, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_PT_PT, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PT_PT, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_PT_PT }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -13751,10 +13534,6 @@ struct retro_core_options_v2 options_pt_pt = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_RO NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_RO NULL #define OPTION_VAL_SENSOR_RO NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_RO NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_RO NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_RO NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_RO NULL #define MGBA_FORCE_GBP_LABEL_RO NULL #define MGBA_FORCE_GBP_INFO_0_RO NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_RO NULL @@ -13988,31 +13767,28 @@ struct retro_core_option_v2_definition option_defs_ro[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_RO, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_RO, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_RO, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_RO, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_RO }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -14191,10 +13967,6 @@ struct retro_core_options_v2 options_ro = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_RU "Уровень датчика света" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_RU "Устанавливает интенсивность окружающего освещения. Может использоваться в играх с картриджами, оснащёнными датчиком света (напр. серия Boktai)." #define OPTION_VAL_SENSOR_RU "Использовать датчик устройства" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_RU NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_RU NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_RU NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_RU NULL #define MGBA_FORCE_GBP_LABEL_RU "Отдача Game Boy Player (перезапуск)" #define MGBA_FORCE_GBP_INFO_0_RU "При включении активирует отдачу для совместимых игр с логотипом Game Boy Player на экране загрузки. Из-за особенностей реализации Nintendo, в некоторых играх данная функция может вызывать баги в виде подтормаживаний или мерцания." #define MGBA_IDLE_OPTIMIZATION_LABEL_RU "Удаление циклов простоя" @@ -14428,31 +14200,28 @@ struct retro_core_option_v2_definition option_defs_ru[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_RU, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_RU, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_RU, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_RU, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_RU }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -14631,10 +14400,6 @@ struct retro_core_options_v2 options_ru = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SI NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SI NULL #define OPTION_VAL_SENSOR_SI NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_SI NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SI NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_SI NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_SI NULL #define MGBA_FORCE_GBP_LABEL_SI NULL #define MGBA_FORCE_GBP_INFO_0_SI NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_SI NULL @@ -14868,31 +14633,28 @@ struct retro_core_option_v2_definition option_defs_si[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_SI, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_SI, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_SI, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SI, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_SI }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -15071,10 +14833,6 @@ struct retro_core_options_v2 options_si = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SK NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SK NULL #define OPTION_VAL_SENSOR_SK NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_SK NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SK NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_SK NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_SK NULL #define MGBA_FORCE_GBP_LABEL_SK NULL #define MGBA_FORCE_GBP_INFO_0_SK NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_SK NULL @@ -15308,31 +15066,28 @@ struct retro_core_option_v2_definition option_defs_sk[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_SK, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_SK, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_SK, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SK, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_SK }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -15511,10 +15266,6 @@ struct retro_core_options_v2 options_sk = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SR NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SR NULL #define OPTION_VAL_SENSOR_SR NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_SR NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SR NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_SR NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_SR NULL #define MGBA_FORCE_GBP_LABEL_SR NULL #define MGBA_FORCE_GBP_INFO_0_SR NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_SR NULL @@ -15748,31 +15499,28 @@ struct retro_core_option_v2_definition option_defs_sr[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_SR, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_SR, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_SR, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SR, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_SR }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -15951,10 +15699,6 @@ struct retro_core_options_v2 options_sr = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_SV NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SV NULL #define OPTION_VAL_SENSOR_SV NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_SV NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_SV NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_SV NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_SV NULL #define MGBA_FORCE_GBP_LABEL_SV NULL #define MGBA_FORCE_GBP_INFO_0_SV NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_SV NULL @@ -16188,31 +15932,28 @@ struct retro_core_option_v2_definition option_defs_sv[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_SV, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_SV, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_SV, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_SV, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_SV }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -16391,10 +16132,6 @@ struct retro_core_options_v2 options_sv = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_TR "Güneş Sensörü Seviyesi" #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_TR "Ortamdaki güneş ışığı yoğunluğunu ayarlar. Kartuşlarında güneş sensörü bulunan oyunlar tarafından kullanılabilir, örneğin: Boktai serisi." #define OPTION_VAL_SENSOR_TR "Varsa cihaz sensörünü kullanın" -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_TR NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_TR NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_TR NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_TR NULL #define MGBA_FORCE_GBP_LABEL_TR "Game Boy Player Titreşim (Yeniden Başlat)" #define MGBA_FORCE_GBP_INFO_0_TR "Bunu etkinleştirmek, Game Boy Player açılış logosuna sahip uyumlu oyunların denetleyiciyi titretmesine için izin verecektir. Nintendo'nun bu özelliğin çalışması gerektiğine nasıl karar verdiğinden dolayı, bu oyunların bazılarında titreme veya gecikme gibi hatalara neden olabilir." #define MGBA_IDLE_OPTIMIZATION_LABEL_TR "Boştaki Döngüyü Kaldır" @@ -16628,31 +16365,28 @@ struct retro_core_option_v2_definition option_defs_tr[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_TR, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_TR, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_TR, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_TR, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_TR }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -16831,10 +16565,6 @@ struct retro_core_options_v2 options_tr = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_UK NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_UK NULL #define OPTION_VAL_SENSOR_UK NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_UK NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_UK NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_UK NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_UK NULL #define MGBA_FORCE_GBP_LABEL_UK NULL #define MGBA_FORCE_GBP_INFO_0_UK NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_UK NULL @@ -17068,31 +16798,28 @@ struct retro_core_option_v2_definition option_defs_uk[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_UK, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_UK, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_UK, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_UK, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_UK }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -17271,10 +16998,6 @@ struct retro_core_options_v2 options_uk = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_VAL NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_VAL NULL #define OPTION_VAL_SENSOR_VAL NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_VAL NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_VAL NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_VAL NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_VAL NULL #define MGBA_FORCE_GBP_LABEL_VAL NULL #define MGBA_FORCE_GBP_INFO_0_VAL NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_VAL NULL @@ -17508,31 +17231,28 @@ struct retro_core_option_v2_definition option_defs_val[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_VAL, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_VAL, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_VAL, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_VAL, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, + { "sensor", OPTION_VAL_SENSOR_VAL }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, }, - "chord" + "0" }, { "mgba_force_gbp", @@ -17711,10 +17431,6 @@ struct retro_core_options_v2 options_val = { #define MGBA_SOLAR_SENSOR_LEVEL_LABEL_VN NULL #define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_VN NULL #define OPTION_VAL_SENSOR_VN NULL -#define MGBA_SOLAR_SENSOR_INPUT_LABEL_VN NULL -#define MGBA_SOLAR_SENSOR_INPUT_INFO_0_VN NULL -#define OPTION_VAL_SOLAR_INPUT_BUTTONS_VN NULL -#define OPTION_VAL_SOLAR_INPUT_CHORD_VN NULL #define MGBA_FORCE_GBP_LABEL_VN NULL #define MGBA_FORCE_GBP_INFO_0_VN NULL #define MGBA_IDLE_OPTIMIZATION_LABEL_VN NULL @@ -17948,31 +17664,28 @@ struct retro_core_option_v2_definition option_defs_vn[] = { "no" }, { - "mgba_solar_sensor_input", - MGBA_SOLAR_SENSOR_INPUT_LABEL_VN, + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_VN, NULL, - MGBA_SOLAR_SENSOR_INPUT_INFO_0_VN, + MGBA_SOLAR_SENSOR_LEVEL_INFO_0_VN, NULL, "input", { - { "off", "Off" }, - { "sensor", "Use device sensor if available" }, - { "buttons", "L3/R3 Increment" }, - { "chord", "L3 + Stick Chords" }, - { "0", "Static: 0" }, - { "1", "Static: 1" }, - { "2", "Static: 2" }, - { "3", "Static: 3" }, - { "4", "Static: 4" }, - { "5", "Static: 5" }, - { "6", "Static: 6" }, - { "7", "Static: 7" }, - { "8", "Static: 8" }, - { "9", "Static: 9" }, - { "10", "Static: 10" }, - { NULL, NULL }, - }, - "chord" + { "sensor", OPTION_VAL_SENSOR_VN }, + { "0", NULL }, + { "1", NULL }, + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { "10", NULL }, + { NULL, NULL }, + }, + "0" }, { "mgba_force_gbp", From 7441e381d599d643b5566a12cd72c27ff96dc268 Mon Sep 17 00:00:00 2001 From: TideGear Date: Thu, 29 Jan 2026 23:18:27 -0800 Subject: [PATCH 5/6] libretro: Fix Boktai 1 solar sensor 8-bar mapping MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Detect Boktai 1 by ROM code (U3IJ/U3IE/U3IP) and remap manual solar input to match its 8‑bar gauge. L3/R3 stepping now increments/decrements 0–8 bars (mapped onto the internal 0–10 lux steps), and the mgba_solar_sensor_level core option is clamped to 0–8 for Boktai 1 while leaving other games unchanged. --- src/platform/libretro/libretro.c | 91 ++++++++++++++++++++++++++++---- 1 file changed, 80 insertions(+), 11 deletions(-) diff --git a/src/platform/libretro/libretro.c b/src/platform/libretro/libretro.c index 4b05a422f6b..0e959235b08 100644 --- a/src/platform/libretro/libretro.c +++ b/src/platform/libretro/libretro.c @@ -75,6 +75,8 @@ static void _audioRateChanged(struct mAVStream*, unsigned rate); static void _setRumble(struct mRumbleIntegrator*, float level); static uint8_t _readLux(struct GBALuminanceSource* lux); static void _updateLux(struct GBALuminanceSource* lux); +static int _boktai1StepToBar(int step); +static int _boktai1BarToStep(int bar); static void _updateCamera(const uint32_t* buffer, unsigned width, unsigned height, size_t pitch); static void _startImage(struct mImageSource*, unsigned w, unsigned h, int colorFormats); static void _stopImage(struct mImageSource*); @@ -106,6 +108,7 @@ static int luxLevelIndex; static uint8_t luxLevel; static bool luxSensorEnabled; static bool luxSensorUsed; +static bool boktai1Game; static struct mLogger logger; static struct retro_camera_callback cam; static struct mImageSource imageSource; @@ -1436,6 +1439,7 @@ void retro_init(void) { envVarsUpdated = true; luxSensorUsed = false; luxSensorEnabled = false; + boktai1Game = false; luxLevelIndex = 0; luxLevel = 0; lux.readLuminance = _readLux; @@ -1613,15 +1617,31 @@ void retro_run(void) { inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3); } else { if (inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3)) { - ++luxLevelIndex; - if (luxLevelIndex > 10) { - luxLevelIndex = 10; + if (boktai1Game) { + int bar = _boktai1StepToBar(luxLevelIndex); + if (bar < 8) { + ++bar; + } + luxLevelIndex = _boktai1BarToStep(bar); + } else { + ++luxLevelIndex; + if (luxLevelIndex > 10) { + luxLevelIndex = 10; + } } wasAdjustingLux = true; } else if (inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3)) { - --luxLevelIndex; - if (luxLevelIndex < 0) { - luxLevelIndex = 0; + if (boktai1Game) { + int bar = _boktai1StepToBar(luxLevelIndex); + if (bar > 0) { + --bar; + } + luxLevelIndex = _boktai1BarToStep(bar); + } else { + --luxLevelIndex; + if (luxLevelIndex < 0) { + luxLevelIndex = 0; + } } wasAdjustingLux = true; } @@ -2088,6 +2108,22 @@ bool retro_load_game(const struct retro_game_info* game) { core->loadROM(core, rom); deferredSetup = true; + /* Boktai 1 has an 8-bar solar gauge. Detect it once per loaded game so + * manual adjustments (core option level + L3/R3) operate in 0-8 bars. */ + boktai1Game = false; +#ifdef M_CORE_GBA + if (core->platform(core) == mPLATFORM_GBA) { + struct mGameInfo info; + core->getGameInfo(core, &info); + boktai1Game = strcmp(info.code, "U3IJ") == 0 || + strcmp(info.code, "U3IE") == 0 || + strcmp(info.code, "U3IP") == 0; + } +#endif + /* Re-apply solar settings with the correct mapping for this title. */ + envVarsUpdated = true; + _updateLux(&lux); + const char* sysDir = 0; const char* biosName = 0; char biosPath[PATH_MAX]; @@ -2154,6 +2190,7 @@ void retro_unload_game(void) { if (!core) { return; } + boktai1Game = false; mCoreConfigDeinit(&core->config); core->deinit(core); mappedMemoryFree(data, dataSize); @@ -2466,6 +2503,26 @@ static void _setRumble(struct mRumbleIntegrator* rumble, float level) { rumbleCallback(0, RETRO_RUMBLE_WEAK, level * 0xFFFF); } +static int _boktai1StepToBar(int step) { + static const uint8_t map[11] = { 0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8 }; + if (step < 0) { + step = 0; + } else if (step > 10) { + step = 10; + } + return map[step]; +} + +static int _boktai1BarToStep(int bar) { + static const uint8_t map[9] = { 0, 1, 2, 3, 5, 6, 7, 8, 10 }; + if (bar < 0) { + bar = 0; + } else if (bar > 8) { + bar = 8; + } + return map[bar]; +} + static void _updateLux(struct GBALuminanceSource* lux) { UNUSED(lux); struct retro_variable var = { @@ -2492,12 +2549,24 @@ static void _updateLux(struct GBALuminanceSource* lux) { int newLuxLevelIndex = strtol(var.value, &end, 10); if (!*end) { - if (newLuxLevelIndex > 10) { - luxLevelIndex = 10; - } else if (newLuxLevelIndex < 0) { - luxLevelIndex = 0; + if (boktai1Game) { + /* Boktai 1 shows an 8-bar gauge (0-8). Clamp any user-provided + * values outside that range, then map into the internal 10-step + * lux level indices. */ + if (newLuxLevelIndex > 8) { + newLuxLevelIndex = 8; + } else if (newLuxLevelIndex < 0) { + newLuxLevelIndex = 0; + } + luxLevelIndex = _boktai1BarToStep(newLuxLevelIndex); } else { - luxLevelIndex = newLuxLevelIndex; + if (newLuxLevelIndex > 10) { + luxLevelIndex = 10; + } else if (newLuxLevelIndex < 0) { + luxLevelIndex = 0; + } else { + luxLevelIndex = newLuxLevelIndex; + } } } } From 64e1a82dd3bbb7376aacea352a063775e89ca4e7 Mon Sep 17 00:00:00 2001 From: TideGear Date: Fri, 30 Jan 2026 23:17:34 -0800 Subject: [PATCH 6/6] libretro: Add External Solar Sensor device for chord-based solar input Adds an analog stick combo input mode for the Boktai solar sensor and scans all ports for valid input when active. Updates the solar sensor option text to document the stick mapping and temporary disabling of Analog to Digital caveat. This works seamlessly with any standard connected gamepad (tested with DualSense) and/or my Ojo del Sol sensor that detects real UV/sunlight. (https://github.com/TideGear/BoktaiSensor) The existing alternative (the Brighten Solar Sensor and Darken Solar Sensor binds) requires a lot of presses to go from one end of the meter to the other, and the in-game meter can lose sync with my Ojo del Sol device (if inputs get dropped), since the device is one way. The Analog Stick Control method is fast and stays synced with my device. Note that my specific device is NOT required to use this functionality. It will still work if someone makes a better solar sensor (which I would love), and as I mentioned before, it works with just a regular controller (as long as it has analog sticks). Current mapping: Solar Meter Group (0-3) - Left Analog Up Solar Meter Group (4-7) - Left Analog Down Solar Meter Group (8-10 & 0) - Left Analog Left Solar Meter Select (0/4/8) - Right Analog Up Solar Meter Select (1/5/9) - Right Analog Down Solar Meter Select (2/6/10) - Right Analog Left Solar Meter Select (3/7/0) - Right Analog Right (Extra slot here so we'll just circle back to 0.) The player chooses one of the three groups, plus one of the four selections at the same time. Example: If a player wanted solar meter 6, that would be Left Analog Down + Right Analog Left (at the same time). --- src/platform/libretro/libretro.c | 134 ++++++++++++++---- src/platform/libretro/libretro_core_options.h | 5 +- 2 files changed, 110 insertions(+), 29 deletions(-) diff --git a/src/platform/libretro/libretro.c b/src/platform/libretro/libretro.c index 0e959235b08..de4801d3522 100644 --- a/src/platform/libretro/libretro.c +++ b/src/platform/libretro/libretro.c @@ -55,6 +55,7 @@ static unsigned targetSampleRate = GBA_RESAMPLED_RATE; #define VIDEO_WIDTH_MAX 256 #define VIDEO_HEIGHT_MAX 224 #define VIDEO_BUFF_SIZE (VIDEO_WIDTH_MAX * VIDEO_HEIGHT_MAX * sizeof(mColor)) +#define LIBRETRO_MAX_PORTS 8 static retro_environment_t environCallback; static retro_video_refresh_t videoCallback; @@ -77,6 +78,7 @@ static uint8_t _readLux(struct GBALuminanceSource* lux); static void _updateLux(struct GBALuminanceSource* lux); static int _boktai1StepToBar(int step); static int _boktai1BarToStep(int bar); +static int _analogStickSolarLevel(unsigned port); static void _updateCamera(const uint32_t* buffer, unsigned width, unsigned height, size_t pitch); static void _startImage(struct mImageSource*, unsigned w, unsigned h, int colorFormats); static void _stopImage(struct mImageSource*); @@ -108,6 +110,7 @@ static int luxLevelIndex; static uint8_t luxLevel; static bool luxSensorEnabled; static bool luxSensorUsed; +static bool luxAnalogMode; static bool boktai1Game; static struct mLogger logger; static struct retro_camera_callback cam; @@ -1611,39 +1614,60 @@ void retro_run(void) { core->setKeys(core, keys); if (!luxSensorUsed) { - static bool wasAdjustingLux = false; - if (wasAdjustingLux) { - wasAdjustingLux = inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3) || - inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3); - } else { - if (inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3)) { + if (luxAnalogMode) { + int level = -1; + unsigned port; + for (port = 0; port < LIBRETRO_MAX_PORTS; ++port) { + level = _analogStickSolarLevel(port); + if (level >= 0) { + break; + } + } + if (level >= 0) { if (boktai1Game) { - int bar = _boktai1StepToBar(luxLevelIndex); - if (bar < 8) { - ++bar; + if (level > 8) { + level = 8; } - luxLevelIndex = _boktai1BarToStep(bar); + luxLevelIndex = _boktai1BarToStep(level); } else { - ++luxLevelIndex; - if (luxLevelIndex > 10) { - luxLevelIndex = 10; - } + luxLevelIndex = level; } - wasAdjustingLux = true; - } else if (inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3)) { - if (boktai1Game) { - int bar = _boktai1StepToBar(luxLevelIndex); - if (bar > 0) { - --bar; + } + } else { + static bool wasAdjustingLux = false; + if (wasAdjustingLux) { + wasAdjustingLux = inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3) || + inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3); + } else { + if (inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3)) { + if (boktai1Game) { + int bar = _boktai1StepToBar(luxLevelIndex); + if (bar < 8) { + ++bar; + } + luxLevelIndex = _boktai1BarToStep(bar); + } else { + ++luxLevelIndex; + if (luxLevelIndex > 10) { + luxLevelIndex = 10; + } } - luxLevelIndex = _boktai1BarToStep(bar); - } else { - --luxLevelIndex; - if (luxLevelIndex < 0) { - luxLevelIndex = 0; + wasAdjustingLux = true; + } else if (inputCallback(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3)) { + if (boktai1Game) { + int bar = _boktai1StepToBar(luxLevelIndex); + if (bar > 0) { + --bar; + } + luxLevelIndex = _boktai1BarToStep(bar); + } else { + --luxLevelIndex; + if (luxLevelIndex < 0) { + luxLevelIndex = 0; + } } + wasAdjustingLux = true; } - wasAdjustingLux = true; } } } @@ -2523,6 +2547,61 @@ static int _boktai1BarToStep(int bar) { return map[bar]; } +static int _analogStickSolarLevel(unsigned port) { + const int16_t dead = 0x4000; + int16_t lx = inputCallback(port, RETRO_DEVICE_ANALOG, + RETRO_DEVICE_INDEX_ANALOG_LEFT, + RETRO_DEVICE_ID_ANALOG_X); + int16_t ly = inputCallback(port, RETRO_DEVICE_ANALOG, + RETRO_DEVICE_INDEX_ANALOG_LEFT, + RETRO_DEVICE_ID_ANALOG_Y); + int16_t rx = inputCallback(port, RETRO_DEVICE_ANALOG, + RETRO_DEVICE_INDEX_ANALOG_RIGHT, + RETRO_DEVICE_ID_ANALOG_X); + int16_t ry = inputCallback(port, RETRO_DEVICE_ANALOG, + RETRO_DEVICE_INDEX_ANALOG_RIGHT, + RETRO_DEVICE_ID_ANALOG_Y); + + int group = -1; + if (ly < -dead) { + group = 0; /* 0-3 */ + } else if (ly > dead) { + group = 1; /* 4-7 */ + } else if (lx < -dead) { + group = 2; /* 8-10 & 0 */ + } + + int select = -1; + if (ry < -dead) { + select = 0; /* 0/4/8 */ + } else if (ry > dead) { + select = 1; /* 1/5/9 */ + } else if (rx < -dead) { + select = 2; /* 2/6/10 */ + } else if (rx > dead) { + select = 3; /* 3/7/0 */ + } + + if (group < 0 || select < 0) { + return -1; + } + + if (group == 0) { + return select; + } else if (group == 1) { + return 4 + select; + } + + if (select == 0) { + return 8; + } else if (select == 1) { + return 9; + } else if (select == 2) { + return 10; + } + return 0; +} + static void _updateLux(struct GBALuminanceSource* lux) { UNUSED(lux); struct retro_variable var = { @@ -2537,6 +2616,7 @@ static void _updateLux(struct GBALuminanceSource* lux) { if (luxVarUpdated) { luxSensorUsed = strcmp(var.value, "sensor") == 0; + luxAnalogMode = strcmp(var.value, "analog") == 0; } if (luxSensorUsed) { @@ -2544,7 +2624,7 @@ static void _updateLux(struct GBALuminanceSource* lux) { float fLux = luxSensorEnabled ? sensorGetCallback(0, RETRO_SENSOR_ILLUMINANCE) : 0.0f; luxLevel = cbrtf(fLux) * 8; } else { - if (luxVarUpdated) { + if (luxVarUpdated && !luxAnalogMode) { char* end; int newLuxLevelIndex = strtol(var.value, &end, 10); diff --git a/src/platform/libretro/libretro_core_options.h b/src/platform/libretro/libretro_core_options.h index 9bd553bdf23..01a814dbd70 100644 --- a/src/platform/libretro/libretro_core_options.h +++ b/src/platform/libretro/libretro_core_options.h @@ -271,11 +271,12 @@ struct retro_core_option_v2_definition option_defs_us[] = { "mgba_solar_sensor_level", "Solar Sensor Level", NULL, - "Sets ambient sunlight intensity. Can be used by games that included a solar sensor in their cartridges, e.g: the Boktai series.", + "Sets sunlight intensity for games that include a solar sensor in their cartridge (e.g. Boktai). 'Analog Stick Control': left stick selects group (Up=0-3, Down=4-7, Left=8-10/0); right stick selects value (Up=0/4/8, Down=1/5/9, Left=2/6/10, Right=3/7/0). ASC disables Analog to Digital until restart.", NULL, "input", { - { "sensor", "Use device sensor if available" }, + { "sensor", "Use Device Sensor If Available" }, + { "analog", "Analog Stick Control" }, { "0", NULL }, { "1", NULL }, { "2", NULL },