From 73ed8cff7cb319a398bd14b8edf9c772ba301ce6 Mon Sep 17 00:00:00 2001 From: Michael Burgardt Date: Tue, 30 Nov 2021 22:14:15 +0100 Subject: [PATCH] Add automatic Crowdin synchronization (#248) --- .github/workflows/crowdin_prep.yml | 33 + .github/workflows/crowdin_translate.yml | 46 + intl/.gitignore | 4 + intl/activate.py | 70 + intl/core_option_regex.py | 95 + intl/core_option_translation.py | 620 + intl/crowdin.yaml | 13 + intl/crowdin_prep.py | 30 + intl/crowdin_source_upload.py | 93 + intl/crowdin_translate.py | 39 + intl/crowdin_translation_download.py | 93 + intl/download_workflow.py | 16 + intl/initial_sync.py | 125 + intl/remove_initial_cycle.py | 30 + intl/upload_workflow.py | 15 + intl/v1_to_v2_converter.py | 459 + src/platform/libretro/libretro_core_options.h | 48 +- .../libretro/libretro_core_options_intl.h | 15404 +++++++++++++++- 18 files changed, 16912 insertions(+), 321 deletions(-) create mode 100644 .github/workflows/crowdin_prep.yml create mode 100644 .github/workflows/crowdin_translate.yml create mode 100644 intl/.gitignore create mode 100644 intl/activate.py create mode 100644 intl/core_option_regex.py create mode 100644 intl/core_option_translation.py create mode 100644 intl/crowdin.yaml create mode 100644 intl/crowdin_prep.py create mode 100644 intl/crowdin_source_upload.py create mode 100644 intl/crowdin_translate.py create mode 100644 intl/crowdin_translation_download.py create mode 100644 intl/download_workflow.py create mode 100644 intl/initial_sync.py create mode 100644 intl/remove_initial_cycle.py create mode 100644 intl/upload_workflow.py create mode 100644 intl/v1_to_v2_converter.py diff --git a/.github/workflows/crowdin_prep.yml b/.github/workflows/crowdin_prep.yml new file mode 100644 index 000000000..7c76bc0b1 --- /dev/null +++ b/.github/workflows/crowdin_prep.yml @@ -0,0 +1,33 @@ +# Prepare source texts & upload them to Crowdin + +name: Crowdin Source Texts Upload + +# on change to the English texts +on: + push: + branches: + - master + paths: + - 'src/platform/libretro/libretro_core_options.h' + +jobs: + upload_source_file: + runs-on: ubuntu-latest + steps: + - name: Setup Java JDK + uses: actions/setup-java@v1 + with: + java-version: 1.8 + + - name: Setup Python + uses: actions/setup-python@v2 + + - name: Checkout + uses: actions/checkout@v2 + + - name: Upload Source + shell: bash + env: + CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_KEY }} + run: | + python3 intl/upload_workflow.py $CROWDIN_API_KEY "mgba" "src/platform/libretro/libretro_core_options.h" diff --git a/.github/workflows/crowdin_translate.yml b/.github/workflows/crowdin_translate.yml new file mode 100644 index 000000000..ba2924bf1 --- /dev/null +++ b/.github/workflows/crowdin_translate.yml @@ -0,0 +1,46 @@ +# Download translations form Crowdin & Recreate libretro_core_options_intl.h + +name: Crowdin Translation Integration + +on: + schedule: + # please choose a random time & weekday to avoid all repos synching at the same time + - cron: '25 16 * * 5' # Fridays at 4:25 PM, UTC + +jobs: + create_intl_file: + runs-on: ubuntu-latest + steps: + - name: Setup Java JDK + uses: actions/setup-java@v1 + with: + java-version: 1.8 + + - name: Setup Python + uses: actions/setup-python@v2 + + - name: Checkout + uses: actions/checkout@v2 + with: + persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token. + fetch-depth: 0 # otherwise, there would be errors pushing refs to the destination repository. + + - name: Create intl file + shell: bash + env: + CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_KEY }} + run: | + python3 intl/download_workflow.py $CROWDIN_API_KEY "mgba" "src/platform/libretro/libretro_core_options_intl.h" + + - name: Commit files + run: | + git config --local user.email "github-actions@github.com" + git config --local user.name "github-actions[bot]" + git add intl/*_workflow.py "src/platform/libretro/libretro_core_options_intl.h" + git commit -m "Fetch translations & Recreate libretro_core_options_intl.h" + + - name: GitHub Push + uses: ad-m/github-push-action@v0.6.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: ${{ github.ref }} diff --git a/intl/.gitignore b/intl/.gitignore new file mode 100644 index 000000000..458f3d31a --- /dev/null +++ b/intl/.gitignore @@ -0,0 +1,4 @@ +__pycache__ +crowdin-cli.jar +*.h +*.json diff --git a/intl/activate.py b/intl/activate.py new file mode 100644 index 000000000..0ef70c2a6 --- /dev/null +++ b/intl/activate.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 + +import os +import glob +import random as r + +# -------------------- MAIN -------------------- # + +if __name__ == '__main__': + DIR_PATH = os.path.dirname(os.path.realpath(__file__)) + if os.path.basename(DIR_PATH) != "intl": + raise RuntimeError("Script is not in intl folder!") + + BASE_PATH = os.path.dirname(DIR_PATH) + WORKFLOW_PATH = os.path.join(BASE_PATH, ".github", "workflows") + PREP_WF = os.path.join(WORKFLOW_PATH, "crowdin_prep.yml") + TRANSLATE_WF = os.path.join(WORKFLOW_PATH, "crowdin_translate.yml") + CORE_NAME = os.path.basename(BASE_PATH) + CORE_OP_FILE = os.path.join(BASE_PATH, "**", "libretro_core_options.h") + + core_options_hits = glob.glob(CORE_OP_FILE, recursive=True) + + if len(core_options_hits) == 0: + raise RuntimeError("libretro_core_options.h not found!") + elif len(core_options_hits) > 1: + print("More than one libretro_core_options.h file found:\n\n") + for i, file in enumerate(core_options_hits): + print(f"{i} {file}\n") + + while True: + user_choice = input("Please choose one ('q' will exit): ") + if user_choice == 'q': + exit(0) + elif user_choice.isdigit(): + core_op_file = core_options_hits[int(user_choice)] + break + else: + print("Please make a valid choice!\n\n") + else: + core_op_file = core_options_hits[0] + + core_intl_file = os.path.join(os.path.dirname(core_op_file.replace(BASE_PATH, ''))[1:], + 'libretro_core_options_intl.h') + core_op_file = os.path.join(os.path.dirname(core_op_file.replace(BASE_PATH, ''))[1:], + 'libretro_core_options.h') + minutes = r.randrange(0, 59, 5) + hour = r.randrange(0, 23) + + with open(PREP_WF, 'r') as wf_file: + prep_txt = wf_file.read() + + prep_txt = prep_txt.replace("", CORE_NAME) + prep_txt = prep_txt.replace("/libretro_core_options.h", + core_op_file) + with open(PREP_WF, 'w') as wf_file: + wf_file.write(prep_txt) + + + with open(TRANSLATE_WF, 'r') as wf_file: + translate_txt = wf_file.read() + + translate_txt = translate_txt.replace('<0-59>', f"{minutes}") + translate_txt = translate_txt.replace('<0-23>', f"{hour}") + translate_txt = translate_txt.replace('# Fridays at , UTC', + f"# Fridays at {hour%12}:{minutes} {'AM' if hour < 12 else 'PM'}, UTC") + translate_txt = translate_txt.replace("", CORE_NAME) + translate_txt = translate_txt.replace('/libretro_core_options_intl.h', + core_intl_file) + with open(TRANSLATE_WF, 'w') as wf_file: + wf_file.write(translate_txt) diff --git a/intl/core_option_regex.py b/intl/core_option_regex.py new file mode 100644 index 000000000..34a3f20a2 --- /dev/null +++ b/intl/core_option_regex.py @@ -0,0 +1,95 @@ +import re + +# 0: full struct; 1: up to & including first []; 2: content between first {} +p_struct = re.compile(r'(struct\s*[a-zA-Z0-9_\s]+\[])\s*' + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+)\s*)*' + r'=\s*' # = + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+)\s*)*' + r'{((?:.|[\r\n])*?)\{\s*NULL,\s*NULL,\s*NULL\s*(?:.|[\r\n])*?},?(?:.|[\r\n])*?};') # captures full struct, it's beginning and it's content +# 0: type name[]; 1: type; 2: name +p_type_name = re.compile(r'(retro_core_option_[a-zA-Z0-9_]+)\s*' + r'(option_cats([a-z_]{0,8})|option_defs([a-z_]{0,8}))\s*\[]') +# 0: full option; 1: key; 2: description; 3: additional info; 4: key/value pairs +p_option = re.compile(r'{\s*' # opening braces + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r'(\".*?\"|' # key start; group 1 + r'[a-zA-Z0-9_]+\s*\((?:.|[\r\n])*?\)|' + r'[a-zA-Z0-9_]+\s*\[(?:.|[\r\n])*?]|' + r'[a-zA-Z0-9_]+\s*\".*?\")\s*' # key end + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r',\s*' # comma + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r'(\".*?\")\s*' # description; group 2 + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r',\s*' # comma + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r'((?:' # group 3 + r'(?:NULL|\"(?:.|[\r\n])*?\")\s*' # description in category, info, info in category, category + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r',?\s*' # comma + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r')+)' + r'(?:' # defs only start + r'{\s*' # opening braces + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r'((?:' # key/value pairs start; group 4 + r'{\s*' # opening braces + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r'(?:NULL|\".*?\")\s*' # option key + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r',\s*' # comma + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r'(?:NULL|\".*?\")\s*' # option value + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r'}\s*' # closing braces + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r',?\s*' # comma + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r')*)' # key/value pairs end + r'}\s*' # closing braces + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r',?\s*' # comma + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r'(?:' # defaults start + r'(?:NULL|\".*?\")\s*' # default value + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r',?\s*' # comma + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r')*' # defaults end + r')?' # defs only end + r'},') # closing braces +# analyse option group 3 +p_info = re.compile(r'(NULL|\"(?:.|[\r\n])*?\")\s*' # description in category, info, info in category, category + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r',') +p_info_cat = re.compile(r'(NULL|\"(?:.|[\r\n])*?\")') +# analyse option group 4 +p_key_value = re.compile(r'{\s*' # opening braces + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r'(NULL|\".*?\")\s*' # option key; 1 + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r',\s*' # comma + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r'(NULL|\".*?\")\s*' # option value; 2 + r'(?:(?:\/\*(?:.|[\r\n])*?\*\/|\/\/.*[\r\n]+|#.*[\r\n]+)\s*)*' + r'}') + +p_masked = re.compile(r'([A-Z_][A-Z0-9_]+)\s*(\"(?:"\s*"|\\\s*|.)*\")') + +p_intl = re.compile(r'(struct retro_core_option_definition \*option_defs_intl\[RETRO_LANGUAGE_LAST]) = {' + r'((?:.|[\r\n])*?)};') +p_set = re.compile(r'static INLINE void libretro_set_core_options\(retro_environment_t environ_cb\)' + r'(?:.|[\r\n])*?};?\s*#ifdef __cplusplus\s*}\s*#endif') + +p_yaml = re.compile(r'"project_id": "[0-9]+".*\s*' + r'"api_token": "([a-zA-Z0-9]+)".*\s*' + r'"base_path": "\./intl".*\s*' + r'"base_url": "https://api\.crowdin\.com".*\s*' + r'"preserve_hierarchy": true.*\s*' + r'"files": \[\s*' + r'\{\s*' + r'"source": "/_us/\*\.json",.*\s*' + r'"translation": "/_%two_letters_code%/%original_file_name%",.*\s*' + r'"skip_untranslated_strings": true.*\s*' + r'},\s*' + r']') diff --git a/intl/core_option_translation.py b/intl/core_option_translation.py new file mode 100644 index 000000000..54a4cf9fb --- /dev/null +++ b/intl/core_option_translation.py @@ -0,0 +1,620 @@ +#!/usr/bin/env python3 + +"""Core options text extractor + +The purpose of this script is to set up & provide functions for automatic generation of 'libretro_core_options_intl.h' +from 'libretro_core_options.h' using translations from Crowdin. + +Both v1 and v2 structs are supported. It is, however, recommended to convert v1 files to v2 using the included +'v1_to_v2_converter.py'. + +Usage: +python3 path/to/core_option_translation.py "path/to/where/libretro_core_options.h & libretro_core_options_intl.h/are" "core_name" + +This script will: +1.) create key words for & extract the texts from libretro_core_options.h & save them into intl/_us/core_options.h +2.) do the same for any present translations in libretro_core_options_intl.h, saving those in their respective folder +""" +import core_option_regex as cor +import re +import os +import sys +import json +import urllib.request as req +import shutil + +# LANG_CODE_TO_R_LANG = {'_ar': 'RETRO_LANGUAGE_ARABIC', +# '_ast': 'RETRO_LANGUAGE_ASTURIAN', +# '_chs': 'RETRO_LANGUAGE_CHINESE_SIMPLIFIED', +# '_cht': 'RETRO_LANGUAGE_CHINESE_TRADITIONAL', +# '_cs': 'RETRO_LANGUAGE_CZECH', +# '_cy': 'RETRO_LANGUAGE_WELSH', +# '_da': 'RETRO_LANGUAGE_DANISH', +# '_de': 'RETRO_LANGUAGE_GERMAN', +# '_el': 'RETRO_LANGUAGE_GREEK', +# '_eo': 'RETRO_LANGUAGE_ESPERANTO', +# '_es': 'RETRO_LANGUAGE_SPANISH', +# '_fa': 'RETRO_LANGUAGE_PERSIAN', +# '_fi': 'RETRO_LANGUAGE_FINNISH', +# '_fr': 'RETRO_LANGUAGE_FRENCH', +# '_gl': 'RETRO_LANGUAGE_GALICIAN', +# '_he': 'RETRO_LANGUAGE_HEBREW', +# '_hu': 'RETRO_LANGUAGE_HUNGARIAN', +# '_id': 'RETRO_LANGUAGE_INDONESIAN', +# '_it': 'RETRO_LANGUAGE_ITALIAN', +# '_ja': 'RETRO_LANGUAGE_JAPANESE', +# '_ko': 'RETRO_LANGUAGE_KOREAN', +# '_nl': 'RETRO_LANGUAGE_DUTCH', +# '_oc': 'RETRO_LANGUAGE_OCCITAN', +# '_pl': 'RETRO_LANGUAGE_POLISH', +# '_pt_br': 'RETRO_LANGUAGE_PORTUGUESE_BRAZIL', +# '_pt_pt': 'RETRO_LANGUAGE_PORTUGUESE_PORTUGAL', +# '_ru': 'RETRO_LANGUAGE_RUSSIAN', +# '_sk': 'RETRO_LANGUAGE_SLOVAK', +# '_sv': 'RETRO_LANGUAGE_SWEDISH', +# '_tr': 'RETRO_LANGUAGE_TURKISH', +# '_uk': 'RETRO_LANGUAGE_UKRAINIAN', +# '_us': 'RETRO_LANGUAGE_ENGLISH', +# '_vn': 'RETRO_LANGUAGE_VIETNAMESE'} + +# these are handled by RetroArch directly - no need to include them in core translations +ON_OFFS = {'"enabled"', '"disabled"', '"true"', '"false"', '"on"', '"off"'} + + +def remove_special_chars(text: str, char_set=0, allow_non_ascii=False) -> str: + """Removes special characters from a text. + + :param text: String to be cleaned. + :param char_set: 0 -> remove all ASCII special chars except for '_' & 'space' (default) + 1 -> remove invalid chars from file names + :param allow_non_ascii: False -> all non-ascii characters will be removed (default) + True -> non-ascii characters will be passed through + :return: Clean text. + """ + command_chars = [chr(unicode) for unicode in tuple(range(0, 32)) + (127,)] + special_chars = ([chr(unicode) for unicode in tuple(range(33, 48)) + tuple(range(58, 65)) + tuple(range(91, 95)) + + (96,) + tuple(range(123, 127))], + ('\\', '/', ':', '*', '?', '"', '<', '>', '|', '#', '%', + '&', '{', '}', '$', '!', '¸', "'", '@', '+', '=')) + res = text if allow_non_ascii \ + else text.encode('ascii', errors='ignore').decode('unicode-escape') + + for cm in command_chars: + res = res.replace(cm, '_') + for sp in special_chars[char_set]: + res = res.replace(sp, '_') + while res.startswith('_'): + res = res[1:] + while res.endswith('_'): + res = res[:-1] + return res + + +def clean_file_name(file_name: str) -> str: + """Removes characters which might make file_name inappropriate for files on some OS. + + :param file_name: File name to be cleaned. + :return: The clean file name. + """ + file_name = remove_special_chars(file_name, 1) + file_name = re.sub(r'__+', '_', file_name.replace(' ', '_')) + return file_name + + +def get_struct_type_name(decl: str) -> tuple: + """ Returns relevant parts of the struct declaration: + type, name of the struct and the language appendix, if present. + :param decl: The struct declaration matched by cor.p_type_name. + :return: Tuple, e.g.: ('retro_core_option_definition', 'option_defs_us', '_us') + """ + struct_match = cor.p_type_name.search(decl) + if struct_match: + if struct_match.group(3): + struct_type_name = struct_match.group(1, 2, 3) + return struct_type_name + elif struct_match.group(4): + struct_type_name = struct_match.group(1, 2, 4) + return struct_type_name + else: + struct_type_name = struct_match.group(1, 2) + return struct_type_name + else: + raise ValueError(f'No or incomplete struct declaration: {decl}!\n' + 'Please make sure all structs are complete, including the type and name declaration.') + + +def is_viable_non_dupe(text: str, comparison) -> bool: + """text must be longer than 2 ('""'), not 'NULL' and not in comparison. + + :param text: String to be tested. + :param comparison: Dictionary or set to search for text in. + :return: bool + """ + return 2 < len(text) and text != 'NULL' and text not in comparison + + +def is_viable_value(text: str) -> bool: + """text must be longer than 2 ('""'), not 'NULL' and text.lower() not in + {'"enabled"', '"disabled"', '"true"', '"false"', '"on"', '"off"'}. + + :param text: String to be tested. + :return: bool + """ + return 2 < len(text) and text != 'NULL' and text.lower() not in ON_OFFS + + +def create_non_dupe(base_name: str, opt_num: int, comparison) -> str: + """Makes sure base_name is not in comparison, and if it is it's renamed. + + :param base_name: Name to check/make unique. + :param opt_num: Number of the option base_name belongs to, used in making it unique. + :param comparison: Dictionary or set to search for base_name in. + :return: Unique name. + """ + h = base_name + if h in comparison: + n = 0 + h = h + '_O' + str(opt_num) + h_end = len(h) + while h in comparison: + h = h[:h_end] + '_' + str(n) + n += 1 + return h + + +def get_texts(text: str) -> dict: + """Extracts the strings, which are to be translated/are the translations, + from text and creates macro names for them. + + :param text: The string to be parsed. + :return: Dictionary of the form { '_': { 'macro': 'string', ... }, ... }. + """ + # all structs: group(0) full struct, group(1) beginning, group(2) content + structs = cor.p_struct.finditer(text) + hash_n_string = {} + just_string = {} + for struct in structs: + struct_declaration = struct.group(1) + struct_type_name = get_struct_type_name(struct_declaration) + if 3 > len(struct_type_name): + lang = '_us' + else: + lang = struct_type_name[2] + if lang not in just_string: + hash_n_string[lang] = {} + just_string[lang] = set() + + is_v2 = False + pre_name = '' + p = cor.p_info + if 'retro_core_option_v2_definition' == struct_type_name[0]: + is_v2 = True + elif 'retro_core_option_v2_category' == struct_type_name[0]: + pre_name = 'CATEGORY_' + p = cor.p_info_cat + + struct_content = struct.group(2) + # 0: full option; 1: key; 2: description; 3: additional info; 4: key/value pairs + struct_options = cor.p_option.finditer(struct_content) + for opt, option in enumerate(struct_options): + # group 1: key + if option.group(1): + opt_name = pre_name + option.group(1) + # no special chars allowed in key + opt_name = remove_special_chars(opt_name).upper().replace(' ', '_') + else: + raise ValueError(f'No option name (key) found in struct {struct_type_name[1]} option {opt}!') + + # group 2: description0 + if option.group(2): + desc0 = option.group(2) + if is_viable_non_dupe(desc0, just_string[lang]): + just_string[lang].add(desc0) + m_h = create_non_dupe(re.sub(r'__+', '_', f'{opt_name}_LABEL'), opt, hash_n_string[lang]) + hash_n_string[lang][m_h] = desc0 + else: + raise ValueError(f'No label found in struct {struct_type_name[1]} option {option.group(1)}!') + + # group 3: desc1, info0, info1, category + if option.group(3): + infos = option.group(3) + option_info = p.finditer(infos) + if is_v2: + desc1 = next(option_info).group(1) + if is_viable_non_dupe(desc1, just_string[lang]): + just_string[lang].add(desc1) + m_h = create_non_dupe(re.sub(r'__+', '_', f'{opt_name}_LABEL_CAT'), opt, hash_n_string[lang]) + hash_n_string[lang][m_h] = desc1 + last = None + m_h = None + for j, info in enumerate(option_info): + last = info.group(1) + if is_viable_non_dupe(last, just_string[lang]): + just_string[lang].add(last) + m_h = create_non_dupe(re.sub(r'__+', '_', f'{opt_name}_INFO_{j}'), opt, + hash_n_string[lang]) + hash_n_string[lang][m_h] = last + if last in just_string[lang]: # category key should not be translated + hash_n_string[lang].pop(m_h) + just_string[lang].remove(last) + else: + for j, info in enumerate(option_info): + gr1 = info.group(1) + if is_viable_non_dupe(gr1, just_string[lang]): + just_string[lang].add(gr1) + m_h = create_non_dupe(re.sub(r'__+', '_', f'{opt_name}_INFO_{j}'), opt, + hash_n_string[lang]) + hash_n_string[lang][m_h] = gr1 + else: + raise ValueError(f'Too few arguments in struct {struct_type_name[1]} option {option.group(1)}!') + + # group 4: + if option.group(4): + for j, kv_set in enumerate(cor.p_key_value.finditer(option.group(4))): + set_key, set_value = kv_set.group(1, 2) + if not is_viable_value(set_value): + if not is_viable_value(set_key): + continue + set_value = set_key + # re.fullmatch(r'(?:[+-][0-9]+)+', value[1:-1]) + if set_value not in just_string[lang] and not re.sub(r'[+-]', '', set_value[1:-1]).isdigit(): + clean_key = set_key[1:-1] + clean_key = remove_special_chars(clean_key).upper().replace(' ', '_') + m_h = create_non_dupe(re.sub(r'__+', '_', f"OPTION_VAL_{clean_key}"), opt, hash_n_string[lang]) + hash_n_string[lang][m_h] = set_value + just_string[lang].add(set_value) + return hash_n_string + + +def create_msg_hash(intl_dir_path: str, core_name: str, keyword_string_dict: dict) -> dict: + """Creates '.h' files in 'intl/_/' containing the macro name & string combinations. + + :param intl_dir_path: Path to the intl directory. + :param core_name: Name of the core, used for the files' paths. + :param keyword_string_dict: Dictionary of the form { '_': { 'macro': 'string', ... }, ... }. + :return: Dictionary of the form { '_': 'path/to/file (./intl/_/.h)', ... }. + """ + files = {} + for localisation in keyword_string_dict: + path = os.path.join(intl_dir_path, core_name) # intl// + files[localisation] = os.path.join(path, localisation + '.h') # intl//_.h + if not os.path.exists(path): + os.makedirs(path) + with open(files[localisation], 'w', encoding='utf-8') as crowdin_file: + out_text = '' + for keyword in keyword_string_dict[localisation]: + out_text = f'{out_text}{keyword} {keyword_string_dict[localisation][keyword]}\n' + crowdin_file.write(out_text) + return files + + +def h2json(file_paths: dict) -> dict: + """Converts .h files pointed to by file_paths into .jsons. + + :param file_paths: Dictionary of the form { '_': 'path/to/file (./intl/_/.h)', ... }. + :return: Dictionary of the form { '_': 'path/to/file (./intl/_/.json)', ... }. + """ + jsons = {} + for file_lang in file_paths: + if not os.path.isfile(file_paths[file_lang]): + continue + + jsons[file_lang] = file_paths[file_lang][:-2] + '.json' + + p = cor.p_masked + + with open(file_paths[file_lang], 'r+', encoding='utf-8') as h_file: + text = h_file.read() + result = p.finditer(text) + messages = {} + for msg in result: + key, val = msg.group(1, 2) + if key not in messages: + if key and val: + # unescape & remove "\n" + messages[key] = re.sub(r'"\s*(?:(?:/\*(?:.|[\r\n])*?\*/|//.*[\r\n]+)\s*)*"', + '\\\n', val[1:-1].replace('\\\"', '"')) + else: + print(f"DUPLICATE KEY in {file_paths[file_lang]}: {key}") + with open(jsons[file_lang], 'w', encoding='utf-8') as json_file: + json.dump(messages, json_file, indent=2) + + return jsons + + +def json2h(intl_dir_path: str, file_list) -> None: + """Converts .json file in json_file_path into an .h ready to be included in C code. + + :param intl_dir_path: Path to the intl/ directory. + :param file_list: Iterator of os.DirEntry objects. Contains localisation files to convert. + :return: None + """ + + p = cor.p_masked + + def update(s_messages, s_template, s_source_messages, file_name): + translation = '' + template_messages = p.finditer(s_template) + for tp_msg in template_messages: + old_key = tp_msg.group(1) + if old_key in s_messages and s_messages[old_key] != s_source_messages[old_key]: + tl_msg_val = s_messages[old_key] + tl_msg_val = tl_msg_val.replace('"', '\\\"').replace('\n', '') # escape + translation = ''.join((translation, '#define ', old_key, file_name.upper(), f' "{tl_msg_val}"\n')) + + else: # Remove English duplicates and non-translatable strings + translation = ''.join((translation, '#define ', old_key, file_name.upper(), ' NULL\n')) + return translation + + us_h = os.path.join(intl_dir_path, '_us.h') + us_json = os.path.join(intl_dir_path, '_us.json') + + with open(us_h, 'r', encoding='utf-8') as template_file: + template = template_file.read() + with open(us_json, 'r+', encoding='utf-8') as source_json_file: + source_messages = json.load(source_json_file) + + for file in file_list: + if file.name.lower().startswith('_us') \ + or file.name.lower().endswith('.h') \ + or file.is_dir(): + continue + + with open(file.path, 'r+', encoding='utf-8') as json_file: + messages = json.load(json_file) + new_translation = update(messages, template, source_messages, os.path.splitext(file.name)[0]) + with open(os.path.splitext(file.path)[0] + '.h', 'w', encoding='utf-8') as h_file: + h_file.seek(0) + h_file.write(new_translation) + h_file.truncate() + return + + +def get_crowdin_client(dir_path: str) -> str: + """Makes sure the Crowdin CLI client is present. If it isn't, it is fetched & extracted. + + :return: The path to 'crowdin-cli.jar'. + """ + jar_name = 'crowdin-cli.jar' + jar_path = os.path.join(dir_path, jar_name) + + if not os.path.isfile(jar_path): + print('Downloading crowdin-cli.jar') + crowdin_cli_file = os.path.join(dir_path, 'crowdin-cli.zip') + crowdin_cli_url = 'https://downloads.crowdin.com/cli/v3/crowdin-cli.zip' + req.urlretrieve(crowdin_cli_url, crowdin_cli_file) + import zipfile + with zipfile.ZipFile(crowdin_cli_file, 'r') as zip_ref: + jar_dir = zip_ref.namelist()[0] + for file in zip_ref.namelist(): + if file.endswith(jar_name): + jar_file = file + break + zip_ref.extract(jar_file) + os.rename(jar_file, jar_path) + os.remove(crowdin_cli_file) + shutil.rmtree(jar_dir) + return jar_path + + +def create_intl_file(localisation_file_path: str, intl_dir_path: str, text: str, file_path: str) -> None: + """Creates 'libretro_core_options_intl.h' from Crowdin translations. + + :param localisation_file_path: Path to 'libretro_core_options_intl.h' + :param intl_dir_path: Path to the intl/ directory. + :param text: Content of the 'libretro_core_options.h' being translated. + :param file_path: Path to the '_us.h' file, containing the original English texts. + :return: None + """ + msg_dict = {} + lang_up = '' + + def replace_pair(pair_match): + """Replaces a key-value-pair of an option with the macros corresponding to the language. + + :param pair_match: The re match object representing the key-value-pair block. + :return: Replacement string. + """ + offset = pair_match.start(0) + if pair_match.group(1): # key + if pair_match.group(2) in msg_dict: # value + val = msg_dict[pair_match.group(2)] + lang_up + elif pair_match.group(1) in msg_dict: # use key if value not viable (e.g. NULL) + val = msg_dict[pair_match.group(1)] + lang_up + else: + return pair_match.group(0) + else: + return pair_match.group(0) + res = pair_match.group(0)[:pair_match.start(2) - offset] + val \ + + pair_match.group(0)[pair_match.end(2) - offset:] + return res + + def replace_info(info_match): + """Replaces the 'additional strings' of an option with the macros corresponding to the language. + + :param info_match: The re match object representing the 'additional strings' block. + :return: Replacement string. + """ + offset = info_match.start(0) + if info_match.group(1) in msg_dict: + res = info_match.group(0)[:info_match.start(1) - offset] + \ + msg_dict[info_match.group(1)] + lang_up + \ + info_match.group(0)[info_match.end(1) - offset:] + return res + else: + return info_match.group(0) + + def replace_option(option_match): + """Replaces strings within an option + '{ "opt_key", "label", "additional strings", ..., { {"key", "value"}, ... }, ... }' + within a struct with the macros corresponding to the language: + '{ "opt_key", MACRO_LABEL, MACRO_STRINGS, ..., { {"key", MACRO_VALUE}, ... }, ... }' + + :param option_match: The re match object representing the option. + :return: Replacement string. + """ + # label + offset = option_match.start(0) + if option_match.group(2): + res = option_match.group(0)[:option_match.start(2) - offset] + msg_dict[option_match.group(2)] + lang_up + else: + return option_match.group(0) + # additional block + if option_match.group(3): + res = res + option_match.group(0)[option_match.end(2) - offset:option_match.start(3) - offset] + new_info = p.sub(replace_info, option_match.group(3)) + res = res + new_info + else: + return res + option_match.group(0)[option_match.end(2) - offset:] + # key-value-pairs + if option_match.group(4): + res = res + option_match.group(0)[option_match.end(3) - offset:option_match.start(4) - offset] + new_pairs = cor.p_key_value.sub(replace_pair, option_match.group(4)) + res = res + new_pairs + option_match.group(0)[option_match.end(4) - offset:] + else: + res = res + option_match.group(0)[option_match.end(3) - offset:] + + return res + + # ------------------------------------------------------------------------------------ + + with open(file_path, 'r+', encoding='utf-8') as template: # intl//_us.h + masked_msgs = cor.p_masked.finditer(template.read()) + + for msg in masked_msgs: + msg_dict[msg.group(2)] = msg.group(1) + + # top of the file - in case there is no file to copy it from + out_txt = "#ifndef LIBRETRO_CORE_OPTIONS_INTL_H__\n" \ + "#define LIBRETRO_CORE_OPTIONS_INTL_H__\n\n" \ + "#if defined(_MSC_VER) && (_MSC_VER >= 1500 && _MSC_VER < 1900)\n" \ + "/* https://support.microsoft.com/en-us/kb/980263 */\n" \ + '#pragma execution_character_set("utf-8")\n' \ + "#pragma warning(disable:4566)\n" \ + "#endif\n\n" \ + "#include \n\n" \ + '#ifdef __cplusplus\n' \ + 'extern "C" {\n' \ + '#endif\n' + + if os.path.isfile(localisation_file_path): + # copy top of the file for re-use + with open(localisation_file_path, 'r', encoding='utf-8') as intl: # libretro_core_options_intl.h + in_text = intl.read() + intl_start = re.search(re.escape('/*\n' + ' ********************************\n' + ' * Core Option Definitions\n' + ' ********************************\n' + '*/\n'), in_text) + if intl_start: + out_txt = in_text[:intl_start.end(0)] + else: + intl_start = re.search(re.escape('#ifdef __cplusplus\n' + 'extern "C" {\n' + '#endif\n'), in_text) + if intl_start: + out_txt = in_text[:intl_start.end(0)] + + # only write to file, if there is anything worthwhile to write! + overwrite = False + + # iterate through localisation files + files = {} + for file in os.scandir(intl_dir_path): + files[file.name] = {'is_file': file.is_file(), 'path': file.path} + for file in sorted(files): # intl//_* + if files[file]['is_file'] \ + and file.startswith('_') \ + and file.endswith('.h') \ + and not file.startswith('_us'): + translation_path = files[file]['path'] # _.h + # all structs: group(0) full struct, group(1) beginning, group(2) content + struct_groups = cor.p_struct.finditer(text) + lang_low = os.path.splitext(file)[0].lower() + lang_up = lang_low.upper() + out_txt = out_txt + f'/* RETRO_LANGUAGE{lang_up} */\n\n' # /* RETRO_LANGUAGE_NM */ + + # copy adjusted translations (makros) + with open(translation_path, 'r+', encoding='utf-8') as f_in: # .h + out_txt = out_txt + f_in.read() + '\n' + # replace English texts with makros + for construct in struct_groups: + declaration = construct.group(1) + struct_type_name = get_struct_type_name(declaration) + if 3 > len(struct_type_name): # no language specifier + new_decl = re.sub(re.escape(struct_type_name[1]), struct_type_name[1] + lang_low, declaration) + else: + new_decl = re.sub(re.escape(struct_type_name[2]), lang_low, declaration) + if '_us' != struct_type_name[2]: + continue + + p = cor.p_info + if 'retro_core_option_v2_category' == struct_type_name[0]: + p = cor.p_info_cat + offset_construct = construct.start(0) + start = construct.end(1) - offset_construct + end = construct.start(2) - offset_construct + out_txt = out_txt + new_decl + construct.group(0)[start:end] + + content = construct.group(2) + new_content = cor.p_option.sub(replace_option, content) + + start = construct.end(2) - offset_construct + out_txt = out_txt + new_content + construct.group(0)[start:] + '\n' + + # for v2 + if 'retro_core_option_v2_definition' == struct_type_name[0]: + out_txt = out_txt + f'struct retro_core_options_v2 options{lang_low}' \ + ' = {\n' \ + f' option_cats{lang_low},\n' \ + f' option_defs{lang_low}\n' \ + '};\n\n' + # if it got this far, we've got something to write + overwrite = True + + # only write to file, if there is anything worthwhile to write! + if overwrite: + with open(localisation_file_path, 'w', encoding='utf-8') as intl: + intl.write(out_txt + '\n#ifdef __cplusplus\n' + '}\n#endif\n' + '\n#endif') + return + + +# -------------------- MAIN -------------------- # + +if __name__ == '__main__': + try: + if os.path.isfile(sys.argv[1]): + _temp = os.path.dirname(sys.argv[1]) + else: + _temp = sys.argv[1] + while _temp.endswith('/') or _temp.endswith('\\'): + _temp = _temp[:-1] + TARGET_DIR_PATH = _temp + except IndexError: + TARGET_DIR_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + print("No path provided, assuming parent directory:\n" + TARGET_DIR_PATH) + + CORE_NAME = clean_file_name(sys.argv[2]) + + DIR_PATH = os.path.dirname(os.path.realpath(__file__)) + H_FILE_PATH = os.path.join(TARGET_DIR_PATH, 'libretro_core_options.h') + INTL_FILE_PATH = os.path.join(TARGET_DIR_PATH, 'libretro_core_options_intl.h') + + print('Getting texts from libretro_core_options.h') + with open(H_FILE_PATH, 'r+', encoding='utf-8') as _h_file: + _main_text = _h_file.read() + _hash_n_str = get_texts(_main_text) + _files = create_msg_hash(DIR_PATH, CORE_NAME, _hash_n_str) + _source_jsons = h2json(_files) + + print('Getting texts from libretro_core_options_intl.h') + if os.path.isfile(INTL_FILE_PATH): + with open(INTL_FILE_PATH, 'r+', encoding='utf-8') as _intl_file: + _intl_text = _intl_file.read() + _hash_n_str_intl = get_texts(_intl_text) + _intl_files = create_msg_hash(DIR_PATH, CORE_NAME, _hash_n_str_intl) + _intl_jsons = h2json(_intl_files) + + print('\nAll done!') diff --git a/intl/crowdin.yaml b/intl/crowdin.yaml new file mode 100644 index 000000000..c81de7757 --- /dev/null +++ b/intl/crowdin.yaml @@ -0,0 +1,13 @@ +"project_id": "380544" +"api_token": "_secret_" +"base_url": "https://api.crowdin.com" +"preserve_hierarchy": true + +"files": + [ + { + "source": "/intl/_core_name_/_us.json", + "dest": "/_core_name_/_core_name_.json", + "translation": "/intl/_core_name_/_%two_letters_code%.json", + }, + ] diff --git a/intl/crowdin_prep.py b/intl/crowdin_prep.py new file mode 100644 index 000000000..bfc9aa907 --- /dev/null +++ b/intl/crowdin_prep.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 + +import core_option_translation as t + +if __name__ == '__main__': + try: + if t.os.path.isfile(t.sys.argv[1]): + _temp = t.os.path.dirname(t.sys.argv[1]) + else: + _temp = t.sys.argv[1] + while _temp.endswith('/') or _temp.endswith('\\'): + _temp = _temp[:-1] + TARGET_DIR_PATH = _temp + except IndexError: + TARGET_DIR_PATH = t.os.path.dirname(t.os.path.dirname(t.os.path.realpath(__file__))) + print("No path provided, assuming parent directory:\n" + TARGET_DIR_PATH) + + CORE_NAME = t.clean_file_name(t.sys.argv[2]) + DIR_PATH = t.os.path.dirname(t.os.path.realpath(__file__)) + H_FILE_PATH = t.os.path.join(TARGET_DIR_PATH, 'libretro_core_options.h') + + print('Getting texts from libretro_core_options.h') + with open(H_FILE_PATH, 'r+', encoding='utf-8') as _h_file: + _main_text = _h_file.read() + _hash_n_str = t.get_texts(_main_text) + _files = t.create_msg_hash(DIR_PATH, CORE_NAME, _hash_n_str) + + _source_jsons = t.h2json(_files) + + print('\nAll done!') diff --git a/intl/crowdin_source_upload.py b/intl/crowdin_source_upload.py new file mode 100644 index 000000000..52fb770f0 --- /dev/null +++ b/intl/crowdin_source_upload.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python3 + +import re +import os +import shutil +import subprocess +import sys +import urllib.request +import zipfile +import core_option_translation as t + +# -------------------- MAIN -------------------- # + +if __name__ == '__main__': + # Check Crowdin API Token and core name + try: + API_KEY = sys.argv[1] + CORE_NAME = t.clean_file_name(sys.argv[2]) + except IndexError as e: + print('Please provide Crowdin API Token and core name!') + raise e + + DIR_PATH = t.os.path.dirname(t.os.path.realpath(__file__)) + YAML_PATH = t.os.path.join(DIR_PATH, 'crowdin.yaml') + + # Apply Crowdin API Key + with open(YAML_PATH, 'r') as crowdin_config_file: + crowdin_config = crowdin_config_file.read() + crowdin_config = re.sub(r'"api_token": "_secret_"', + f'"api_token": "{API_KEY}"', + crowdin_config, 1) + crowdin_config = re.sub(r'/_core_name_', + f'/{CORE_NAME}' + , crowdin_config) + with open(YAML_PATH, 'w') as crowdin_config_file: + crowdin_config_file.write(crowdin_config) + + try: + # Download Crowdin CLI + jar_name = 'crowdin-cli.jar' + jar_path = t.os.path.join(DIR_PATH, jar_name) + crowdin_cli_file = 'crowdin-cli.zip' + crowdin_cli_url = 'https://downloads.crowdin.com/cli/v3/' + crowdin_cli_file + crowdin_cli_path = t.os.path.join(DIR_PATH, crowdin_cli_file) + + if not os.path.isfile(t.os.path.join(DIR_PATH, jar_name)): + print('download crowdin-cli.jar') + urllib.request.urlretrieve(crowdin_cli_url, crowdin_cli_path) + with zipfile.ZipFile(crowdin_cli_path, 'r') as zip_ref: + jar_dir = t.os.path.join(DIR_PATH, zip_ref.namelist()[0]) + for file in zip_ref.namelist(): + if file.endswith(jar_name): + jar_file = file + break + zip_ref.extract(jar_file, path=DIR_PATH) + os.rename(t.os.path.join(DIR_PATH, jar_file), jar_path) + os.remove(crowdin_cli_path) + shutil.rmtree(jar_dir) + + print('upload source *.json') + subprocess.run(['java', '-jar', jar_path, 'upload', 'sources', '--config', YAML_PATH]) + + # Reset Crowdin API Key + with open(YAML_PATH, 'r') as crowdin_config_file: + crowdin_config = crowdin_config_file.read() + crowdin_config = re.sub(r'"api_token": ".*?"', + '"api_token": "_secret_"', + crowdin_config, 1) + + # TODO this is NOT safe! + crowdin_config = re.sub(re.escape(f'/{CORE_NAME}'), + '/_core_name_', + crowdin_config) + + with open(YAML_PATH, 'w') as crowdin_config_file: + crowdin_config_file.write(crowdin_config) + + except Exception as e: + # Try really hard to reset Crowdin API Key + with open(YAML_PATH, 'r') as crowdin_config_file: + crowdin_config = crowdin_config_file.read() + crowdin_config = re.sub(r'"api_token": ".*?"', + '"api_token": "_secret_"', + crowdin_config, 1) + + # TODO this is NOT safe! + crowdin_config = re.sub(re.escape(f'/{CORE_NAME}'), + '/_core_name_', + crowdin_config) + + with open(YAML_PATH, 'w') as crowdin_config_file: + crowdin_config_file.write(crowdin_config) + raise e diff --git a/intl/crowdin_translate.py b/intl/crowdin_translate.py new file mode 100644 index 000000000..8a6660233 --- /dev/null +++ b/intl/crowdin_translate.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 + +import core_option_translation as t + +if __name__ == '__main__': + try: + if t.os.path.isfile(t.sys.argv[1]): + _temp = t.os.path.dirname(t.sys.argv[1]) + else: + _temp = t.sys.argv[1] + while _temp.endswith('/') or _temp.endswith('\\'): + _temp = _temp[:-1] + TARGET_DIR_PATH = _temp + except IndexError: + TARGET_DIR_PATH = t.os.path.dirname(t.os.path.dirname(t.os.path.realpath(__file__))) + print("No path provided, assuming parent directory:\n" + TARGET_DIR_PATH) + + CORE_NAME = t.clean_file_name(t.sys.argv[2]) + DIR_PATH = t.os.path.dirname(t.os.path.realpath(__file__)) + LOCALISATIONS_PATH = t.os.path.join(DIR_PATH, CORE_NAME) + US_FILE_PATH = t.os.path.join(LOCALISATIONS_PATH, '_us.h') + H_FILE_PATH = t.os.path.join(TARGET_DIR_PATH, 'libretro_core_options.h') + INTL_FILE_PATH = t.os.path.join(TARGET_DIR_PATH, 'libretro_core_options_intl.h') + + print('Getting texts from libretro_core_options.h') + with open(H_FILE_PATH, 'r+', encoding='utf-8') as _h_file: + _main_text = _h_file.read() + _hash_n_str = t.get_texts(_main_text) + _files = t.create_msg_hash(DIR_PATH, CORE_NAME, _hash_n_str) + _source_jsons = t.h2json(_files) + + print('Converting translations *.json to *.h:') + localisation_files = t.os.scandir(LOCALISATIONS_PATH) + t.json2h(LOCALISATIONS_PATH, localisation_files) + + print('Constructing libretro_core_options_intl.h') + t.create_intl_file(INTL_FILE_PATH, LOCALISATIONS_PATH, _main_text, _files["_us"]) + + print('\nAll done!') diff --git a/intl/crowdin_translation_download.py b/intl/crowdin_translation_download.py new file mode 100644 index 000000000..d3e7027ff --- /dev/null +++ b/intl/crowdin_translation_download.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python3 + +import re +import os +import shutil +import subprocess +import sys +import urllib.request +import zipfile +import core_option_translation as t + +# -------------------- MAIN -------------------- # + +if __name__ == '__main__': + # Check Crowdin API Token and core name + try: + API_KEY = sys.argv[1] + CORE_NAME = t.clean_file_name(sys.argv[2]) + except IndexError as e: + print('Please provide Crowdin API Token and core name!') + raise e + + DIR_PATH = t.os.path.dirname(t.os.path.realpath(__file__)) + YAML_PATH = t.os.path.join(DIR_PATH, 'crowdin.yaml') + + # Apply Crowdin API Key + with open(YAML_PATH, 'r') as crowdin_config_file: + crowdin_config = crowdin_config_file.read() + crowdin_config = re.sub(r'"api_token": "_secret_"', + f'"api_token": "{API_KEY}"', + crowdin_config, 1) + crowdin_config = re.sub(r'/_core_name_', + f'/{CORE_NAME}' + , crowdin_config) + with open(YAML_PATH, 'w') as crowdin_config_file: + crowdin_config_file.write(crowdin_config) + + try: + # Download Crowdin CLI + jar_name = 'crowdin-cli.jar' + jar_path = t.os.path.join(DIR_PATH, jar_name) + crowdin_cli_file = 'crowdin-cli.zip' + crowdin_cli_url = 'https://downloads.crowdin.com/cli/v3/' + crowdin_cli_file + crowdin_cli_path = t.os.path.join(DIR_PATH, crowdin_cli_file) + + if not os.path.isfile(t.os.path.join(DIR_PATH, jar_name)): + print('download crowdin-cli.jar') + urllib.request.urlretrieve(crowdin_cli_url, crowdin_cli_path) + with zipfile.ZipFile(crowdin_cli_path, 'r') as zip_ref: + jar_dir = t.os.path.join(DIR_PATH, zip_ref.namelist()[0]) + for file in zip_ref.namelist(): + if file.endswith(jar_name): + jar_file = file + break + zip_ref.extract(jar_file, path=DIR_PATH) + os.rename(t.os.path.join(DIR_PATH, jar_file), jar_path) + os.remove(crowdin_cli_path) + shutil.rmtree(jar_dir) + + print('download translation *.json') + subprocess.run(['java', '-jar', jar_path, 'download', '--config', YAML_PATH]) + + # Reset Crowdin API Key + with open(YAML_PATH, 'r') as crowdin_config_file: + crowdin_config = crowdin_config_file.read() + crowdin_config = re.sub(r'"api_token": ".*?"', + '"api_token": "_secret_"', + crowdin_config, 1) + + # TODO this is NOT safe! + crowdin_config = re.sub(re.escape(f'/{CORE_NAME}'), + '/_core_name_', + crowdin_config) + + with open(YAML_PATH, 'w') as crowdin_config_file: + crowdin_config_file.write(crowdin_config) + + except Exception as e: + # Try really hard to reset Crowdin API Key + with open(YAML_PATH, 'r') as crowdin_config_file: + crowdin_config = crowdin_config_file.read() + crowdin_config = re.sub(r'"api_token": ".*?"', + '"api_token": "_secret_"', + crowdin_config, 1) + + # TODO this is NOT safe! + crowdin_config = re.sub(re.escape(f'/{CORE_NAME}'), + '/_core_name_', + crowdin_config) + + with open(YAML_PATH, 'w') as crowdin_config_file: + crowdin_config_file.write(crowdin_config) + raise e diff --git a/intl/download_workflow.py b/intl/download_workflow.py new file mode 100644 index 000000000..5ce74dda9 --- /dev/null +++ b/intl/download_workflow.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 + +import sys +import subprocess + +try: + api_key = sys.argv[1] + core_name = sys.argv[2] + dir_path = sys.argv[3] +except IndexError as e: + print('Please provide path to libretro_core_options.h, Crowdin API Token and core name!') + raise e + +subprocess.run(['python3', 'intl/crowdin_prep.py', dir_path, core_name]) +subprocess.run(['python3', 'intl/crowdin_translation_download.py', api_key, core_name]) +subprocess.run(['python3', 'intl/crowdin_translate.py', dir_path, core_name]) diff --git a/intl/initial_sync.py b/intl/initial_sync.py new file mode 100644 index 000000000..1df39efc6 --- /dev/null +++ b/intl/initial_sync.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 + +import re +import os +import shutil +import subprocess +import sys +import time +import urllib.request +import zipfile +import core_option_translation as t + +# -------------------- MAIN -------------------- # + +if __name__ == '__main__': + # Check Crowdin API Token and core name + try: + API_KEY = sys.argv[1] + CORE_NAME = t.clean_file_name(sys.argv[2]) + except IndexError as e: + print('Please provide Crowdin API Token and core name!') + raise e + + DIR_PATH = os.path.dirname(os.path.realpath(__file__)) + YAML_PATH = os.path.join(DIR_PATH, 'crowdin.yaml') + + # Apply Crowdin API Key + with open(YAML_PATH, 'r') as crowdin_config_file: + crowdin_config = crowdin_config_file.read() + crowdin_config = re.sub(r'"api_token": "_secret_"', + f'"api_token": "{API_KEY}"', + crowdin_config, 1) + crowdin_config = re.sub(r'/_core_name_', + f'/{CORE_NAME}' + , crowdin_config) + with open(YAML_PATH, 'w') as crowdin_config_file: + crowdin_config_file.write(crowdin_config) + + try: + # Download Crowdin CLI + jar_name = 'crowdin-cli.jar' + jar_path = os.path.join(DIR_PATH, jar_name) + crowdin_cli_file = 'crowdin-cli.zip' + crowdin_cli_url = 'https://downloads.crowdin.com/cli/v3/' + crowdin_cli_file + crowdin_cli_path = os.path.join(DIR_PATH, crowdin_cli_file) + + if not os.path.isfile(os.path.join(DIR_PATH, jar_name)): + print('download crowdin-cli.jar') + urllib.request.urlretrieve(crowdin_cli_url, crowdin_cli_path) + with zipfile.ZipFile(crowdin_cli_path, 'r') as zip_ref: + jar_dir = os.path.join(DIR_PATH, zip_ref.namelist()[0]) + for file in zip_ref.namelist(): + if file.endswith(jar_name): + jar_file = file + break + zip_ref.extract(jar_file, path=DIR_PATH) + os.rename(os.path.join(DIR_PATH, jar_file), jar_path) + os.remove(crowdin_cli_path) + shutil.rmtree(jar_dir) + + print('upload source & translations *.json') + subprocess.run(['java', '-jar', jar_path, 'upload', 'sources', '--config', YAML_PATH]) + subprocess.run(['java', '-jar', jar_path, 'upload', 'translations', '--config', YAML_PATH]) + + print('wait for crowdin server to process data') + time.sleep(10) + + print('download translation *.json') + subprocess.run(['java', '-jar', jar_path, 'download', '--config', YAML_PATH]) + + # Reset Crowdin API Key + with open(YAML_PATH, 'r') as crowdin_config_file: + crowdin_config = crowdin_config_file.read() + crowdin_config = re.sub(r'"api_token": ".*?"', '"api_token": "_secret_"', crowdin_config, 1) + + # TODO this is NOT safe! + crowdin_config = re.sub(re.escape(f'/{CORE_NAME}'), + '/_core_name_', + crowdin_config) + + with open(YAML_PATH, 'w') as crowdin_config_file: + crowdin_config_file.write(crowdin_config) + + with open('intl/upload_workflow.py', 'r') as workflow: + workflow_config = workflow.read() + workflow_config = workflow_config.replace( + "subprocess.run(['python3', 'intl/core_option_translation.py', dir_path, core_name])", + "subprocess.run(['python3', 'intl/crowdin_prep.py', dir_path, core_name])" + ) + workflow_config = workflow_config.replace( + "subprocess.run(['python3', 'intl/initial_sync.py', api_key, core_name])", + "subprocess.run(['python3', 'intl/crowdin_source_upload.py', api_key, core_name])" + ) + with open('intl/upload_workflow.py', 'w') as workflow: + workflow.write(workflow_config) + + with open('intl/download_workflow.py', 'r') as workflow: + workflow_config = workflow.read() + workflow_config = workflow_config.replace( + "subprocess.run(['python3', 'intl/core_option_translation.py', dir_path, core_name])", + "subprocess.run(['python3', 'intl/crowdin_prep.py', dir_path, core_name])" + ) + workflow_config = workflow_config.replace( + "subprocess.run(['python3', 'intl/initial_sync.py', api_key, core_name])", + "subprocess.run(['python3', 'intl/crowdin_translation_download.py', api_key, core_name])" + ) + with open('intl/download_workflow.py', 'w') as workflow: + workflow.write(workflow_config) + + except Exception as e: + # Try really hard to reset Crowdin API Key + with open(YAML_PATH, 'r') as crowdin_config_file: + crowdin_config = crowdin_config_file.read() + crowdin_config = re.sub(r'"api_token": ".*?"', + '"api_token": "_secret_"', + crowdin_config, 1) + + # TODO this is NOT safe! + crowdin_config = re.sub(re.escape(f'/{CORE_NAME}'), + '/_core_name_', + crowdin_config) + + with open(YAML_PATH, 'w') as crowdin_config_file: + crowdin_config_file.write(crowdin_config) + raise e diff --git a/intl/remove_initial_cycle.py b/intl/remove_initial_cycle.py new file mode 100644 index 000000000..9d90a50f1 --- /dev/null +++ b/intl/remove_initial_cycle.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 + +with open('intl/upload_workflow.py', 'r') as workflow: + workflow_config = workflow.read() + +workflow_config = workflow_config.replace( + "subprocess.run(['python3', 'intl/core_option_translation.py', dir_path, core_name])", + "subprocess.run(['python3', 'intl/crowdin_prep.py', dir_path, core_name])" +) +workflow_config = workflow_config.replace( + "subprocess.run(['python3', 'intl/initial_sync.py', api_key, core_name])", + "subprocess.run(['python3', 'intl/crowdin_source_upload.py', api_key, core_name])" +) +with open('intl/upload_workflow.py', 'w') as workflow: + workflow.write(workflow_config) + + +with open('intl/download_workflow.py', 'r') as workflow: + workflow_config = workflow.read() + +workflow_config = workflow_config.replace( + "subprocess.run(['python3', 'intl/core_option_translation.py', dir_path, core_name])", + "subprocess.run(['python3', 'intl/crowdin_prep.py', dir_path, core_name])" +) +workflow_config = workflow_config.replace( + "subprocess.run(['python3', 'intl/initial_sync.py', api_key, core_name])", + "subprocess.run(['python3', 'intl/crowdin_translation_download.py', api_key, core_name])" +) +with open('intl/download_workflow.py', 'w') as workflow: + workflow.write(workflow_config) diff --git a/intl/upload_workflow.py b/intl/upload_workflow.py new file mode 100644 index 000000000..6bfff9276 --- /dev/null +++ b/intl/upload_workflow.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 + +import sys +import subprocess + +try: + api_key = sys.argv[1] + core_name = sys.argv[2] + dir_path = sys.argv[3] +except IndexError as e: + print('Please provide path to libretro_core_options.h, Crowdin API Token and core name!') + raise e + +subprocess.run(['python3', 'intl/crowdin_prep.py', dir_path, core_name]) +subprocess.run(['python3', 'intl/crowdin_source_upload.py', api_key, core_name]) diff --git a/intl/v1_to_v2_converter.py b/intl/v1_to_v2_converter.py new file mode 100644 index 000000000..caf3be5b9 --- /dev/null +++ b/intl/v1_to_v2_converter.py @@ -0,0 +1,459 @@ +#!/usr/bin/env python3 + +"""Core options v1 to v2 converter + +Just run this script as follows, to convert 'libretro_core_options.h' & 'Libretro_coreoptions_intl.h' to v2: +python3 "/path/to/v1_to_v2_converter.py" "/path/to/where/libretro_core_options.h & Libretro_coreoptions_intl.h/are" + +The original files will be preserved as *.v1 +""" +import core_option_regex as cor +import os +import sys + + +def create_v2_code_file(struct_text, file_name): + def replace_option(option_match): + _offset = option_match.start(0) + + if option_match.group(3): + res = option_match.group(0)[:option_match.end(2) - _offset] + ',\n NULL' + \ + option_match.group(0)[option_match.end(2) - _offset:option_match.end(3) - _offset] + \ + 'NULL,\n NULL,\n ' + option_match.group(0)[option_match.end(3) - _offset:] + else: + return option_match.group(0) + + return res + + comment_v1 = '/*\n' \ + ' ********************************\n' \ + ' * VERSION: 1.3\n' \ + ' ********************************\n' \ + ' *\n' \ + ' * - 1.3: Move translations to libretro_core_options_intl.h\n' \ + ' * - libretro_core_options_intl.h includes BOM and utf-8\n' \ + ' * fix for MSVC 2010-2013\n' \ + ' * - Added HAVE_NO_LANGEXTRA flag to disable translations\n' \ + ' * on platforms/compilers without BOM support\n' \ + ' * - 1.2: Use core options v1 interface when\n' \ + ' * RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION is >= 1\n' \ + ' * (previously required RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION == 1)\n' \ + ' * - 1.1: Support generation of core options v0 retro_core_option_value\n' \ + ' * arrays containing options with a single value\n' \ + ' * - 1.0: First commit\n' \ + '*/\n' + + comment_v2 = '/*\n' \ + ' ********************************\n' \ + ' * VERSION: 2.0\n' \ + ' ********************************\n' \ + ' *\n' \ + ' * - 2.0: Add support for core options v2 interface\n' \ + ' * - 1.3: Move translations to libretro_core_options_intl.h\n' \ + ' * - libretro_core_options_intl.h includes BOM and utf-8\n' \ + ' * fix for MSVC 2010-2013\n' \ + ' * - Added HAVE_NO_LANGEXTRA flag to disable translations\n' \ + ' * on platforms/compilers without BOM support\n' \ + ' * - 1.2: Use core options v1 interface when\n' \ + ' * RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION is >= 1\n' \ + ' * (previously required RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION == 1)\n' \ + ' * - 1.1: Support generation of core options v0 retro_core_option_value\n' \ + ' * arrays containing options with a single value\n' \ + ' * - 1.0: First commit\n' \ + '*/\n' + + p_intl = cor.p_intl + p_set = cor.p_set + new_set = 'static INLINE void libretro_set_core_options(retro_environment_t environ_cb,\n' \ + ' bool *categories_supported)\n' \ + '{\n' \ + ' unsigned version = 0;\n' \ + '#ifndef HAVE_NO_LANGEXTRA\n' \ + ' unsigned language = 0;\n' \ + '#endif\n' \ + '\n' \ + ' if (!environ_cb || !categories_supported)\n' \ + ' return;\n' \ + '\n' \ + ' *categories_supported = false;\n' \ + '\n' \ + ' if (!environ_cb(RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION, &version))\n' \ + ' version = 0;\n' \ + '\n' \ + ' if (version >= 2)\n' \ + ' {\n' \ + '#ifndef HAVE_NO_LANGEXTRA\n' \ + ' struct retro_core_options_v2_intl core_options_intl;\n' \ + '\n' \ + ' core_options_intl.us = &options_us;\n' \ + ' core_options_intl.local = NULL;\n' \ + '\n' \ + ' if (environ_cb(RETRO_ENVIRONMENT_GET_LANGUAGE, &language) &&\n' \ + ' (language < RETRO_LANGUAGE_LAST) && (language != RETRO_LANGUAGE_ENGLISH))\n' \ + ' core_options_intl.local = options_intl[language];\n' \ + '\n' \ + ' *categories_supported = environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2_INTL,\n' \ + ' &core_options_intl);\n' \ + '#else\n' \ + ' *categories_supported = environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2,\n' \ + ' &options_us);\n' \ + '#endif\n' \ + ' }\n' \ + ' else\n' \ + ' {\n' \ + ' size_t i, j;\n' \ + ' size_t option_index = 0;\n' \ + ' size_t num_options = 0;\n' \ + ' struct retro_core_option_definition\n' \ + ' *option_v1_defs_us = NULL;\n' \ + '#ifndef HAVE_NO_LANGEXTRA\n' \ + ' size_t num_options_intl = 0;\n' \ + ' struct retro_core_option_v2_definition\n' \ + ' *option_defs_intl = NULL;\n' \ + ' struct retro_core_option_definition\n' \ + ' *option_v1_defs_intl = NULL;\n' \ + ' struct retro_core_options_intl\n' \ + ' core_options_v1_intl;\n' \ + '#endif\n' \ + ' struct retro_variable *variables = NULL;\n' \ + ' char **values_buf = NULL;\n' \ + '\n' \ + ' /* Determine total number of options */\n' \ + ' while (true)\n' \ + ' {\n' \ + ' if (option_defs_us[num_options].key)\n' \ + ' num_options++;\n' \ + ' else\n' \ + ' break;\n' \ + ' }\n' \ + '\n' \ + ' if (version >= 1)\n' \ + ' {\n' \ + ' /* Allocate US array */\n' \ + ' option_v1_defs_us = (struct retro_core_option_definition *)\n' \ + ' calloc(num_options + 1, sizeof(struct retro_core_option_definition));\n' \ + '\n' \ + ' /* Copy parameters from option_defs_us array */\n' \ + ' for (i = 0; i < num_options; i++)\n' \ + ' {\n' \ + ' struct retro_core_option_v2_definition *option_def_us = &option_defs_us[i];\n' \ + ' struct retro_core_option_value *option_values = option_def_us->values;\n' \ + ' struct retro_core_option_definition *option_v1_def_us = &option_v1_defs_us[i];\n' \ + ' struct retro_core_option_value *option_v1_values = option_v1_def_us->values;\n' \ + '\n' \ + ' option_v1_def_us->key = option_def_us->key;\n' \ + ' option_v1_def_us->desc = option_def_us->desc;\n' \ + ' option_v1_def_us->info = option_def_us->info;\n' \ + ' option_v1_def_us->default_value = option_def_us->default_value;\n' \ + '\n' \ + ' /* Values must be copied individually... */\n' \ + ' while (option_values->value)\n' \ + ' {\n' \ + ' option_v1_values->value = option_values->value;\n' \ + ' option_v1_values->label = option_values->label;\n' \ + '\n' \ + ' option_values++;\n' \ + ' option_v1_values++;\n' \ + ' }\n' \ + ' }\n' \ + '\n' \ + '#ifndef HAVE_NO_LANGEXTRA\n' \ + ' if (environ_cb(RETRO_ENVIRONMENT_GET_LANGUAGE, &language) &&\n' \ + ' (language < RETRO_LANGUAGE_LAST) && (language != RETRO_LANGUAGE_ENGLISH) &&\n' \ + ' options_intl[language])\n' \ + ' option_defs_intl = options_intl[language]->definitions;\n' \ + '\n' \ + ' if (option_defs_intl)\n' \ + ' {\n' \ + ' /* Determine number of intl options */\n' \ + ' while (true)\n' \ + ' {\n' \ + ' if (option_defs_intl[num_options_intl].key)\n' \ + ' num_options_intl++;\n' \ + ' else\n' \ + ' break;\n' \ + ' }\n' \ + '\n' \ + ' /* Allocate intl array */\n' \ + ' option_v1_defs_intl = (struct retro_core_option_definition *)\n' \ + ' calloc(num_options_intl + 1, sizeof(struct retro_core_option_definition));\n' \ + '\n' \ + ' /* Copy parameters from option_defs_intl array */\n' \ + ' for (i = 0; i < num_options_intl; i++)\n' \ + ' {\n' \ + ' struct retro_core_option_v2_definition *option_def_intl = &option_defs_intl[i];\n' \ + ' struct retro_core_option_value *option_values = option_def_intl->values;\n' \ + ' struct retro_core_option_definition *option_v1_def_intl = &option_v1_defs_intl[i];\n' \ + ' struct retro_core_option_value *option_v1_values = option_v1_def_intl->values;\n' \ + '\n' \ + ' option_v1_def_intl->key = option_def_intl->key;\n' \ + ' option_v1_def_intl->desc = option_def_intl->desc;\n' \ + ' option_v1_def_intl->info = option_def_intl->info;\n' \ + ' option_v1_def_intl->default_value = option_def_intl->default_value;\n' \ + '\n' \ + ' /* Values must be copied individually... */\n' \ + ' while (option_values->value)\n' \ + ' {\n' \ + ' option_v1_values->value = option_values->value;\n' \ + ' option_v1_values->label = option_values->label;\n' \ + '\n' \ + ' option_values++;\n' \ + ' option_v1_values++;\n' \ + ' }\n' \ + ' }\n' \ + ' }\n' \ + '\n' \ + ' core_options_v1_intl.us = option_v1_defs_us;\n' \ + ' core_options_v1_intl.local = option_v1_defs_intl;\n' \ + '\n' \ + ' environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL, &core_options_v1_intl);\n' \ + '#else\n' \ + ' environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS, option_v1_defs_us);\n' \ + '#endif\n' \ + ' }\n' \ + ' else\n' \ + ' {\n' \ + ' /* Allocate arrays */\n' \ + ' variables = (struct retro_variable *)calloc(num_options + 1,\n' \ + ' sizeof(struct retro_variable));\n' \ + ' values_buf = (char **)calloc(num_options, sizeof(char *));\n' \ + '\n' \ + ' if (!variables || !values_buf)\n' \ + ' goto error;\n' \ + '\n' \ + ' /* Copy parameters from option_defs_us array */\n' \ + ' for (i = 0; i < num_options; i++)\n' \ + ' {\n' \ + ' const char *key = option_defs_us[i].key;\n' \ + ' const char *desc = option_defs_us[i].desc;\n' \ + ' const char *default_value = option_defs_us[i].default_value;\n' \ + ' struct retro_core_option_value *values = option_defs_us[i].values;\n' \ + ' size_t buf_len = 3;\n' \ + ' size_t default_index = 0;\n' \ + '\n' \ + ' values_buf[i] = NULL;\n' \ + '\n' \ + ' if (desc)\n' \ + ' {\n' \ + ' size_t num_values = 0;\n' \ + '\n' \ + ' /* Determine number of values */\n' \ + ' while (true)\n' \ + ' {\n' \ + ' if (values[num_values].value)\n' \ + ' {\n' \ + ' /* Check if this is the default value */\n' \ + ' if (default_value)\n' \ + ' if (strcmp(values[num_values].value, default_value) == 0)\n' \ + ' default_index = num_values;\n' \ + '\n' \ + ' buf_len += strlen(values[num_values].value);\n' \ + ' num_values++;\n' \ + ' }\n' \ + ' else\n' \ + ' break;\n' \ + ' }\n' \ + '\n' \ + ' /* Build values string */\n' \ + ' if (num_values > 0)\n' \ + ' {\n' \ + ' buf_len += num_values - 1;\n' \ + ' buf_len += strlen(desc);\n' \ + '\n' \ + ' values_buf[i] = (char *)calloc(buf_len, sizeof(char));\n' \ + ' if (!values_buf[i])\n' \ + ' goto error;\n' \ + '\n' \ + ' strcpy(values_buf[i], desc);\n' \ + ' strcat(values_buf[i], "; ");\n' \ + '\n' \ + ' /* Default value goes first */\n' \ + ' strcat(values_buf[i], values[default_index].value);\n' \ + '\n' \ + ' /* Add remaining values */\n' \ + ' for (j = 0; j < num_values; j++)\n' \ + ' {\n' \ + ' if (j != default_index)\n' \ + ' {\n' \ + ' strcat(values_buf[i], "|");\n' \ + ' strcat(values_buf[i], values[j].value);\n' \ + ' }\n' \ + ' }\n' \ + ' }\n' \ + ' }\n' \ + '\n' \ + ' variables[option_index].key = key;\n' \ + ' variables[option_index].value = values_buf[i];\n' \ + ' option_index++;\n' \ + ' }\n' \ + '\n' \ + ' /* Set variables */\n' \ + ' environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, variables);\n' \ + ' }\n' \ + '\n' \ + 'error:\n' \ + ' /* Clean up */\n' \ + '\n' \ + ' if (option_v1_defs_us)\n' \ + ' {\n' \ + ' free(option_v1_defs_us);\n' \ + ' option_v1_defs_us = NULL;\n' \ + ' }\n' \ + '\n' \ + '#ifndef HAVE_NO_LANGEXTRA\n' \ + ' if (option_v1_defs_intl)\n' \ + ' {\n' \ + ' free(option_v1_defs_intl);\n' \ + ' option_v1_defs_intl = NULL;\n' \ + ' }\n' \ + '#endif\n' \ + '\n' \ + ' if (values_buf)\n' \ + ' {\n' \ + ' for (i = 0; i < num_options; i++)\n' \ + ' {\n' \ + ' if (values_buf[i])\n' \ + ' {\n' \ + ' free(values_buf[i]);\n' \ + ' values_buf[i] = NULL;\n' \ + ' }\n' \ + ' }\n' \ + '\n' \ + ' free(values_buf);\n' \ + ' values_buf = NULL;\n' \ + ' }\n' \ + '\n' \ + ' if (variables)\n' \ + ' {\n' \ + ' free(variables);\n' \ + ' variables = NULL;\n' \ + ' }\n' \ + ' }\n' \ + '}\n' \ + '\n' \ + '#ifdef __cplusplus\n' \ + '}\n' \ + '#endif' + + struct_groups = cor.p_struct.finditer(struct_text) + out_text = struct_text + + for construct in struct_groups: + repl_text = '' + declaration = construct.group(1) + struct_match = cor.p_type_name.search(declaration) + if struct_match: + if struct_match.group(3): + struct_type_name_lang = struct_match.group(1, 2, 3) + declaration_end = declaration[struct_match.end(1):] + elif struct_match.group(4): + struct_type_name_lang = struct_match.group(1, 2, 4) + declaration_end = declaration[struct_match.end(1):] + else: + struct_type_name_lang = sum((struct_match.group(1, 2), ('_us',)), ()) + declaration_end = f'{declaration[struct_match.end(1):struct_match.end(2)]}_us' \ + f'{declaration[struct_match.end(2):]}' + else: + return -1 + + if 'retro_core_option_definition' == struct_type_name_lang[0]: + import shutil + shutil.copy(file_name, file_name + '.v1') + new_declaration = f'\nstruct retro_core_option_v2_category option_cats{struct_type_name_lang[2]}[] = ' \ + '{\n { NULL, NULL, NULL },\n' \ + '};\n\n' \ + + declaration[:struct_match.start(1)] + \ + 'retro_core_option_v2_definition' \ + + declaration_end + offset = construct.start(0) + repl_text = repl_text + cor.re.sub(cor.re.escape(declaration), new_declaration, + construct.group(0)[:construct.start(2) - offset]) + content = construct.group(2) + new_content = cor.p_option.sub(replace_option, content) + + repl_text = repl_text + new_content + cor.re.sub(r'{\s*NULL,\s*NULL,\s*NULL,\s*{\{0}},\s*NULL\s*},\s*};', + '{ NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL },\n};' + '\n\nstruct retro_core_options_v2 options' + + struct_type_name_lang[2] + ' = {\n' + f' option_cats{struct_type_name_lang[2]},\n' + f' option_defs{struct_type_name_lang[2]}\n' + '};', + construct.group(0)[construct.end(2) - offset:]) + out_text = cor.re.sub(cor.re.escape(construct.group(0)), repl_text, out_text) + else: + return -2 + with open(file_name, 'w', encoding='utf-8') as code_file: + out_text = cor.re.sub(cor.re.escape(comment_v1), comment_v2, out_text) + intl = p_intl.search(out_text) + if intl: + new_intl = out_text[:intl.start(1)] \ + + 'struct retro_core_options_v2 *options_intl[RETRO_LANGUAGE_LAST]' \ + + out_text[intl.end(1):intl.start(2)] \ + + '\n &options_us, /* RETRO_LANGUAGE_ENGLISH */\n' \ + ' &options_ja, /* RETRO_LANGUAGE_JAPANESE */\n' \ + ' &options_fr, /* RETRO_LANGUAGE_FRENCH */\n' \ + ' &options_es, /* RETRO_LANGUAGE_SPANISH */\n' \ + ' &options_de, /* RETRO_LANGUAGE_GERMAN */\n' \ + ' &options_it, /* RETRO_LANGUAGE_ITALIAN */\n' \ + ' &options_nl, /* RETRO_LANGUAGE_DUTCH */\n' \ + ' &options_pt_br, /* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */\n' \ + ' &options_pt_pt, /* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */\n' \ + ' &options_ru, /* RETRO_LANGUAGE_RUSSIAN */\n' \ + ' &options_ko, /* RETRO_LANGUAGE_KOREAN */\n' \ + ' &options_cht, /* RETRO_LANGUAGE_CHINESE_TRADITIONAL */\n' \ + ' &options_chs, /* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */\n' \ + ' &options_eo, /* RETRO_LANGUAGE_ESPERANTO */\n' \ + ' &options_pl, /* RETRO_LANGUAGE_POLISH */\n' \ + ' &options_vn, /* RETRO_LANGUAGE_VIETNAMESE */\n' \ + ' &options_ar, /* RETRO_LANGUAGE_ARABIC */\n' \ + ' &options_el, /* RETRO_LANGUAGE_GREEK */\n' \ + ' &options_tr, /* RETRO_LANGUAGE_TURKISH */\n' \ + ' &options_sv, /* RETRO_LANGUAGE_SLOVAK */\n' \ + ' &options_fa, /* RETRO_LANGUAGE_PERSIAN */\n' \ + ' &options_he, /* RETRO_LANGUAGE_HEBREW */\n' \ + ' &options_ast, /* RETRO_LANGUAGE_ASTURIAN */\n' \ + ' &options_fi, /* RETRO_LANGUAGE_FINNISH */\n' \ + + out_text[intl.end(2):] + out_text = p_set.sub(new_set, new_intl) + else: + out_text = p_set.sub(new_set, out_text) + code_file.write(out_text) + + return 1 + + +# -------------------- MAIN -------------------- # + +if __name__ == '__main__': + try: + if os.path.isfile(sys.argv[1]): + _temp = os.path.dirname(sys.argv[1]) + else: + _temp = sys.argv[1] + while _temp.endswith('/') or _temp.endswith('\\'): + _temp = _temp[:-1] + DIR_PATH = _temp + except IndexError: + DIR_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + print("No path provided, assuming parent directory:\n" + DIR_PATH) + + H_FILE_PATH = os.path.join(DIR_PATH, 'libretro_core_options.h') + INTL_FILE_PATH = os.path.join(DIR_PATH, 'libretro_core_options_intl.h') + + for file in (H_FILE_PATH, INTL_FILE_PATH): + if os.path.isfile(file): + with open(file, 'r+', encoding='utf-8') as h_file: + text = h_file.read() + try: + test = create_v2_code_file(text, file) + except Exception as e: + print(e) + test = -1 + if -1 > test: + print('Your file looks like it already is v2? (' + file + ')') + continue + if 0 > test: + print('An error occured! Please make sure to use the complete v1 struct! (' + file + ')') + continue + else: + print(file + ' not found.') diff --git a/src/platform/libretro/libretro_core_options.h b/src/platform/libretro/libretro_core_options.h index 05b8117f6..8d04b1949 100644 --- a/src/platform/libretro/libretro_core_options.h +++ b/src/platform/libretro/libretro_core_options.h @@ -72,7 +72,7 @@ struct retro_core_option_v2_category option_cats_us[] = { { "input", "Input & Auxiliary Devices", - "Configure gamepad / sensor input and gamepad rumble settings." + "Configure controller / sensor input and controller rumble settings." }, { "performance", @@ -387,29 +387,29 @@ struct retro_core_options_v2 options_us = { #ifndef HAVE_NO_LANGEXTRA struct retro_core_options_v2 *options_intl[RETRO_LANGUAGE_LAST] = { &options_us, /* RETRO_LANGUAGE_ENGLISH */ - NULL, /* RETRO_LANGUAGE_JAPANESE */ - NULL, /* RETRO_LANGUAGE_FRENCH */ - &options_es, /* RETRO_LANGUAGE_SPANISH */ - NULL, /* RETRO_LANGUAGE_GERMAN */ - &options_it, /* RETRO_LANGUAGE_ITALIAN */ - NULL, /* RETRO_LANGUAGE_DUTCH */ - NULL, /* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */ - NULL, /* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */ - NULL, /* RETRO_LANGUAGE_RUSSIAN */ - NULL, /* RETRO_LANGUAGE_KOREAN */ - NULL, /* RETRO_LANGUAGE_CHINESE_TRADITIONAL */ - NULL, /* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */ - NULL, /* RETRO_LANGUAGE_ESPERANTO */ - NULL, /* RETRO_LANGUAGE_POLISH */ - NULL, /* RETRO_LANGUAGE_VIETNAMESE */ - NULL, /* RETRO_LANGUAGE_ARABIC */ - NULL, /* RETRO_LANGUAGE_GREEK */ - &options_tr, /* RETRO_LANGUAGE_TURKISH */ - NULL, /* RETRO_LANGUAGE_SLOVAK */ - NULL, /* RETRO_LANGUAGE_PERSIAN */ - NULL, /* RETRO_LANGUAGE_HEBREW */ - NULL, /* RETRO_LANGUAGE_ASTURIAN */ - NULL, /* RETRO_LANGUAGE_FINNISH */ + &options_ja, /* RETRO_LANGUAGE_JAPANESE */ + &options_fr, /* RETRO_LANGUAGE_FRENCH */ + &options_es, /* RETRO_LANGUAGE_SPANISH */ + &options_de, /* RETRO_LANGUAGE_GERMAN */ + &options_it, /* RETRO_LANGUAGE_ITALIAN */ + &options_nl, /* RETRO_LANGUAGE_DUTCH */ + &options_pt_br, /* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */ + &options_pt_pt, /* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */ + &options_ru, /* RETRO_LANGUAGE_RUSSIAN */ + &options_ko, /* RETRO_LANGUAGE_KOREAN */ + &options_cht, /* RETRO_LANGUAGE_CHINESE_TRADITIONAL */ + &options_chs, /* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */ + &options_eo, /* RETRO_LANGUAGE_ESPERANTO */ + &options_pl, /* RETRO_LANGUAGE_POLISH */ + &options_vn, /* RETRO_LANGUAGE_VIETNAMESE */ + &options_ar, /* RETRO_LANGUAGE_ARABIC */ + &options_el, /* RETRO_LANGUAGE_GREEK */ + &options_tr, /* RETRO_LANGUAGE_TURKISH */ + &options_sv, /* RETRO_LANGUAGE_SLOVAK */ + &options_fa, /* RETRO_LANGUAGE_PERSIAN */ + &options_he, /* RETRO_LANGUAGE_HEBREW */ + &options_ast, /* RETRO_LANGUAGE_ASTURIAN */ + &options_fi, /* RETRO_LANGUAGE_FINNISH */ }; #endif diff --git a/src/platform/libretro/libretro_core_options_intl.h b/src/platform/libretro/libretro_core_options_intl.h index d3960e6e9..c9b5c7505 100644 --- a/src/platform/libretro/libretro_core_options_intl.h +++ b/src/platform/libretro/libretro_core_options_intl.h @@ -37,480 +37,15290 @@ extern "C" { * Core Option Definitions ******************************** */ +/* RETRO_LANGUAGE_AR */ -/* RETRO_LANGUAGE_JAPANESE */ +#define CATEGORY_SYSTEM_LABEL_AR NULL +#define CATEGORY_SYSTEM_INFO_0_AR NULL +#define CATEGORY_VIDEO_LABEL_AR NULL +#define CATEGORY_VIDEO_INFO_0_AR NULL +#define CATEGORY_VIDEO_INFO_1_AR NULL +#define CATEGORY_AUDIO_LABEL_AR NULL +#define CATEGORY_AUDIO_INFO_0_AR NULL +#define CATEGORY_INPUT_LABEL_AR NULL +#define CATEGORY_INPUT_INFO_0_AR NULL +#define CATEGORY_PERFORMANCE_LABEL_AR NULL +#define CATEGORY_PERFORMANCE_INFO_0_AR NULL +#define MGBA_GB_MODEL_LABEL_AR NULL +#define MGBA_GB_MODEL_INFO_0_AR NULL +#define OPTION_VAL_AUTODETECT_AR NULL +#define OPTION_VAL_GAME_BOY_AR NULL +#define OPTION_VAL_SUPER_GAME_BOY_AR NULL +#define OPTION_VAL_GAME_BOY_COLOR_AR NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_AR NULL +#define MGBA_USE_BIOS_LABEL_AR NULL +#define MGBA_USE_BIOS_INFO_0_AR NULL +#define MGBA_SKIP_BIOS_LABEL_AR NULL +#define MGBA_SKIP_BIOS_INFO_0_AR NULL +#define MGBA_GB_COLORS_LABEL_AR NULL +#define MGBA_GB_COLORS_INFO_0_AR NULL +#define OPTION_VAL_GRAYSCALE_AR NULL +#define MGBA_SGB_BORDERS_LABEL_AR NULL +#define MGBA_SGB_BORDERS_INFO_0_AR NULL +#define MGBA_COLOR_CORRECTION_LABEL_AR NULL +#define MGBA_COLOR_CORRECTION_INFO_0_AR NULL +#define OPTION_VAL_AUTO_AR NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_AR NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_AR NULL +#define OPTION_VAL_MIX_AR NULL +#define OPTION_VAL_MIX_SMART_AR NULL +#define OPTION_VAL_LCD_GHOSTING_AR NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_AR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_AR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_AR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_AR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_AR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_AR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_AR NULL +#define OPTION_VAL_5_AR NULL +#define OPTION_VAL_10_AR NULL +#define OPTION_VAL_15_AR NULL +#define OPTION_VAL_20_AR NULL +#define OPTION_VAL_25_AR NULL +#define OPTION_VAL_30_AR NULL +#define OPTION_VAL_35_AR NULL +#define OPTION_VAL_40_AR NULL +#define OPTION_VAL_45_AR NULL +#define OPTION_VAL_50_AR NULL +#define OPTION_VAL_55_AR NULL +#define OPTION_VAL_60_AR NULL +#define OPTION_VAL_65_AR NULL +#define OPTION_VAL_70_AR NULL +#define OPTION_VAL_75_AR NULL +#define OPTION_VAL_80_AR NULL +#define OPTION_VAL_85_AR NULL +#define OPTION_VAL_90_AR NULL +#define OPTION_VAL_95_AR NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_AR NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_AR NULL +#define OPTION_VAL_NO_AR NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_AR NULL +#define MGBA_FORCE_GBP_INFO_0_AR NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_AR NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_AR NULL +#define OPTION_VAL_REMOVE_KNOWN_AR NULL +#define OPTION_VAL_DETECT_AND_REMOVE_AR NULL +#define OPTION_VAL_DON_T_REMOVE_AR NULL +#define MGBA_FRAMESKIP_LABEL_AR NULL +#define MGBA_FRAMESKIP_INFO_0_AR NULL +#define OPTION_VAL_AUTO_THRESHOLD_AR NULL +#define OPTION_VAL_FIXED_INTERVAL_AR NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_AR NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_AR NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_AR NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_AR NULL -/* RETRO_LANGUAGE_FRENCH */ - -/* RETRO_LANGUAGE_SPANISH */ - -struct retro_core_option_v2_category option_cats_es[] = { +struct retro_core_option_v2_category option_cats_ar[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_AR, + CATEGORY_SYSTEM_INFO_0_AR + }, + { + "video", + CATEGORY_VIDEO_LABEL_AR, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_AR +#else + CATEGORY_VIDEO_INFO_1_AR +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_AR, + CATEGORY_AUDIO_INFO_0_AR + }, + { + "input", + CATEGORY_INPUT_LABEL_AR, + CATEGORY_INPUT_INFO_0_AR + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_AR, + CATEGORY_PERFORMANCE_INFO_0_AR + }, { NULL, NULL, NULL }, }; - -struct retro_core_option_v2_definition option_defs_es[] = { - { - "mgba_solar_sensor_level", - "Nivel del sensor solar", - NULL, - "Ajusta la intensidad de la luz solar ambiental. Para juegos que contenían un sensor solar en sus cartuchos, p. ej.: la saga Boktai.", - NULL, - NULL, - { - { "sensor", "Utilizar dispositivo sensor si está disponible" }, - { NULL, NULL }, - }, - NULL - }, - { - "mgba_allow_opposing_directions", - "Permitir entradas direccionales opuestas", - NULL, - "Permite pulsar, alternar rápidamente o mantener las direcciones hacia la izquierda y hacia la derecha (o hacia arriba y abajo) al mismo tiempo. Puede provocar defectos en el movimiento.", - NULL, - NULL, - { - { NULL, NULL }, - }, - NULL - }, +struct retro_core_option_v2_definition option_defs_ar[] = { { "mgba_gb_model", - "Modelo de Game Boy (es necesario reiniciar)", - NULL, - "Carga el contenido cargado utilizando un modelo de Game Boy específico. La opción «Autodetectar» seleccionará el modelo más adecuado para el juego actual.", + MGBA_GB_MODEL_LABEL_AR, NULL, + MGBA_GB_MODEL_INFO_0_AR, NULL, + "system", { - { "Autodetect", "Autodetectar" }, + { "Autodetect", OPTION_VAL_AUTODETECT_AR }, + { "Game Boy", OPTION_VAL_GAME_BOY_AR }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_AR }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_AR }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_AR }, { NULL, NULL }, }, - NULL + "Autodetect" }, { "mgba_use_bios", - "Utilizar BIOS en caso de encontrarla (es necesario reiniciar)", - NULL, - "Si se encuentran en el directorio de sistema de RetroArch, se utilizarán los archivos de la BIOS y el bootloader oficiales para emular el hardware.", + MGBA_USE_BIOS_LABEL_AR, NULL, + MGBA_USE_BIOS_INFO_0_AR, NULL, + "system", { + { "ON", "enabled" }, + { "OFF", "disabled" }, { NULL, NULL }, }, - NULL + "ON" }, { "mgba_skip_bios", - "Omitir introducción de la BIOS (es necesario reiniciar)", - NULL, - "Al utilizar una BIOS y bootloader oficiales, omitirá la animación del logotipo al arrancar. Esta opción será ignorada si «Utilizar BIOS en caso de encontrarla» está desactivada.", + MGBA_SKIP_BIOS_LABEL_AR, NULL, + MGBA_SKIP_BIOS_INFO_0_AR, NULL, + "system", { + { "OFF", "disabled" }, + { "ON", "enabled" }, { NULL, NULL }, }, - NULL + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_AR, + NULL, + MGBA_GB_COLORS_INFO_0_AR, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_AR }, + { NULL, NULL }, + }, + "Grayscale" }, { "mgba_sgb_borders", - "Utilizar bordes de Super Game Boy (es necesario reiniciar)", - NULL, - "Muestra los bordes de Super Game Boy al ejecutar juegos compatibles con este sistema.", + MGBA_SGB_BORDERS_LABEL_AR, NULL, + MGBA_SGB_BORDERS_INFO_0_AR, NULL, + "video", { + { "ON", "enabled" }, + { "OFF", "disabled" }, { NULL, NULL }, }, - NULL - }, - { - "mgba_idle_optimization", - "Eliminar bucle de inactividad", - NULL, - "Minimiza la carga del sistema optimizando los llamados bucles de inactividad: secciones de código en las que no ocurre nada, pero la CPU se ejecuta a máxima velocidad (como cuando un vehículo es revolucionado sin tener la marcha puesta). Mejora el rendimiento y debería activarse en hardware de bajas prestaciones.", - NULL, - NULL, - { - { "Remove Known", "Eliminar bucles conocidos" }, - { "Detect and Remove", "Detectar y eliminar" }, - { "Don't Remove", "No eliminar" }, - { NULL, NULL }, - }, - NULL - }, - { - "mgba_frameskip", - "Omisión de fotogramas", - NULL, - "Omite fotogramas para no saturar el búfer de audio (chasquidos en el sonido). Mejora el rendimiento a costa de perder fluidez visual. El valor Automática omite fotogramas según lo aconseje el front-end. El valor Automática (umbral) utiliza el ajuste Umbral de omisión de fotogramas (%). El valor «Intervalos fijos» utiliza el ajuste «Intervalo de omisión de fotogramas».", - NULL, - NULL, - { - { "disabled", "Desactivada" }, - { "auto", "Automática" }, - { "auto_threshold", "Automática (umbral)" }, - { "fixed_interval", "Intervalos fijos" }, - { NULL, NULL }, - }, - NULL - }, - { - "mgba_frameskip_threshold", - "Umbral de omisión de fotogramas (%)", - NULL, - "Cuando la omisión de fotogramas esté configurada como Automática (umbral), este ajuste especifica el umbral de ocupación del búfer de audio (en porcentaje) por el que se omitirán fotogramas si el valor es inferior. Un valor más elevado reduce el riesgo de chasquidos omitiendo fotogramas con una mayor frecuencia.", - NULL, - NULL, - { - { NULL, NULL }, - }, - NULL - }, - { - "mgba_frameskip_interval", - "Intervalo de omisión de fotogramas", - NULL, - "Cuando la omisión de fotogramas esté configurada como Intervalos fijos, el valor que se asigne aquí será el número de fotogramas omitidos una vez se haya renderizado un fotograma. Por ejemplo: «0» = 60 FPS, «1» = 30 FPS, «2» = 15 FPS, etcétera.", - NULL, - NULL, - { - { NULL, NULL }, - }, - NULL + "ON" }, #if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) { "mgba_color_correction", - "Corrección de color", - NULL, - "Ajusta los colores de la salida de imagen para que esta coincida con la que mostraría un hardware real de GBA/GBC.", + MGBA_COLOR_CORRECTION_LABEL_AR, NULL, + MGBA_COLOR_CORRECTION_INFO_0_AR, NULL, + "video", { - { "GBA", "Game Boy Advance" }, - { "GBC", "Game Boy Color" }, - { "Auto", "Automática" }, + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_AR }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_AR }, + { "Auto", OPTION_VAL_AUTO_AR }, { NULL, NULL }, }, - NULL + "OFF" }, { "mgba_interframe_blending", - "Fusión interfotograma", - NULL, - "Simula el efecto fantasma de una pantalla LCD. «Sencilla» mezcla los fotogramas previos y posteriores en un 50%. «Inteligente» intenta detectar los parpadeos de pantalla y solo lleva a cabo la fusión del 50% en los fotogramas afectados. «Efecto fantasma de LCD» imita los tiempos de respuesta naturales de una pantalla LCD combinando varios fotogramas guardados en el búfer. La fusión sencilla o inteligente es necesaria en aquellos juegos que aprovechan de forma agresiva el efecto fantasma de la pantalla LCD para los efectos de transparencia (Wave Race, Chikyuu Kaihou Gun ZAS, F-Zero, la saga Boktai...).", + MGBA_INTERFRAME_BLENDING_LABEL_AR, NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_AR, NULL, + "video", { - { "mix", "Sencilla" }, - { "mix_smart", "Inteligente" }, - { "lcd_ghosting", "Efecto fantasma de LCD (preciso)" }, - { "lcd_ghosting_fast", "Efecto fantasma de LCD (rápido)" }, + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_AR }, + { "mix_smart", OPTION_VAL_MIX_SMART_AR }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_AR }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_AR }, { NULL, NULL }, }, - NULL + "OFF" }, #endif { - "mgba_force_gbp", - "Vibración de Game Boy Player (es necesario reiniciar)", - NULL, - "Permite que aquellos juegos compatibles con el logotipo de arranque de Game Boy Player hagan vibrar el mando. Debido a el método que utilizó Nintendo, puede provocar fallos gráficos, como parpadeos o retrasos de señal en algunos de estos juegos.", - NULL, + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_AR, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_AR, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_AR, NULL, + "audio", { + { "disabled", NULL }, + { "enabled", NULL }, { NULL, NULL }, }, - NULL + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_AR, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_AR, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_AR, + NULL, + "audio", + { + { "5", OPTION_VAL_5_AR }, + { "10", OPTION_VAL_10_AR }, + { "15", OPTION_VAL_15_AR }, + { "20", OPTION_VAL_20_AR }, + { "25", OPTION_VAL_25_AR }, + { "30", OPTION_VAL_30_AR }, + { "35", OPTION_VAL_35_AR }, + { "40", OPTION_VAL_40_AR }, + { "45", OPTION_VAL_45_AR }, + { "50", OPTION_VAL_50_AR }, + { "55", OPTION_VAL_55_AR }, + { "60", OPTION_VAL_60_AR }, + { "65", OPTION_VAL_65_AR }, + { "70", OPTION_VAL_70_AR }, + { "75", OPTION_VAL_75_AR }, + { "80", OPTION_VAL_80_AR }, + { "85", OPTION_VAL_85_AR }, + { "90", OPTION_VAL_90_AR }, + { "95", OPTION_VAL_95_AR }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_AR, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_AR, + NULL, + "input", + { + { "no", OPTION_VAL_NO_AR }, + { "yes", OPTION_VAL_YES_AR }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_AR, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_AR, + NULL, + MGBA_FORCE_GBP_INFO_0_AR, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_AR, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_AR, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_AR }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_AR }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_AR }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_AR, + NULL, + MGBA_FRAMESKIP_INFO_0_AR, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_AR }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_AR }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_AR }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_AR, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_AR, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_AR, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_AR, + NULL, + "performance", + { + { "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" }, { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, }; +struct retro_core_options_v2 options_ar = { + option_cats_ar, + option_defs_ar +}; +/* RETRO_LANGUAGE_AST */ + +#define CATEGORY_SYSTEM_LABEL_AST NULL +#define CATEGORY_SYSTEM_INFO_0_AST NULL +#define CATEGORY_VIDEO_LABEL_AST NULL +#define CATEGORY_VIDEO_INFO_0_AST NULL +#define CATEGORY_VIDEO_INFO_1_AST NULL +#define CATEGORY_AUDIO_LABEL_AST NULL +#define CATEGORY_AUDIO_INFO_0_AST NULL +#define CATEGORY_INPUT_LABEL_AST NULL +#define CATEGORY_INPUT_INFO_0_AST NULL +#define CATEGORY_PERFORMANCE_LABEL_AST NULL +#define CATEGORY_PERFORMANCE_INFO_0_AST NULL +#define MGBA_GB_MODEL_LABEL_AST NULL +#define MGBA_GB_MODEL_INFO_0_AST NULL +#define OPTION_VAL_AUTODETECT_AST NULL +#define OPTION_VAL_GAME_BOY_AST NULL +#define OPTION_VAL_SUPER_GAME_BOY_AST NULL +#define OPTION_VAL_GAME_BOY_COLOR_AST NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_AST NULL +#define MGBA_USE_BIOS_LABEL_AST NULL +#define MGBA_USE_BIOS_INFO_0_AST NULL +#define MGBA_SKIP_BIOS_LABEL_AST NULL +#define MGBA_SKIP_BIOS_INFO_0_AST NULL +#define MGBA_GB_COLORS_LABEL_AST NULL +#define MGBA_GB_COLORS_INFO_0_AST NULL +#define OPTION_VAL_GRAYSCALE_AST NULL +#define MGBA_SGB_BORDERS_LABEL_AST NULL +#define MGBA_SGB_BORDERS_INFO_0_AST NULL +#define MGBA_COLOR_CORRECTION_LABEL_AST NULL +#define MGBA_COLOR_CORRECTION_INFO_0_AST NULL +#define OPTION_VAL_AUTO_AST NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_AST NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_AST NULL +#define OPTION_VAL_MIX_AST NULL +#define OPTION_VAL_MIX_SMART_AST NULL +#define OPTION_VAL_LCD_GHOSTING_AST NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_AST NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_AST NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_AST NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_AST NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_AST NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_AST NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_AST NULL +#define OPTION_VAL_5_AST NULL +#define OPTION_VAL_10_AST NULL +#define OPTION_VAL_15_AST NULL +#define OPTION_VAL_20_AST NULL +#define OPTION_VAL_25_AST NULL +#define OPTION_VAL_30_AST NULL +#define OPTION_VAL_35_AST NULL +#define OPTION_VAL_40_AST NULL +#define OPTION_VAL_45_AST NULL +#define OPTION_VAL_50_AST NULL +#define OPTION_VAL_55_AST NULL +#define OPTION_VAL_60_AST NULL +#define OPTION_VAL_65_AST NULL +#define OPTION_VAL_70_AST NULL +#define OPTION_VAL_75_AST NULL +#define OPTION_VAL_80_AST NULL +#define OPTION_VAL_85_AST NULL +#define OPTION_VAL_90_AST NULL +#define OPTION_VAL_95_AST NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_AST NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_AST NULL +#define OPTION_VAL_NO_AST NULL +#define OPTION_VAL_YES_AST NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_AST NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_AST NULL +#define OPTION_VAL_SENSOR_AST NULL +#define MGBA_FORCE_GBP_LABEL_AST NULL +#define MGBA_FORCE_GBP_INFO_0_AST NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_AST NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_AST NULL +#define OPTION_VAL_REMOVE_KNOWN_AST NULL +#define OPTION_VAL_DETECT_AND_REMOVE_AST NULL +#define OPTION_VAL_DON_T_REMOVE_AST NULL +#define MGBA_FRAMESKIP_LABEL_AST NULL +#define MGBA_FRAMESKIP_INFO_0_AST NULL +#define OPTION_VAL_AUTO_THRESHOLD_AST NULL +#define OPTION_VAL_FIXED_INTERVAL_AST NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_AST NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_AST NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_AST NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_AST NULL + +struct retro_core_option_v2_category option_cats_ast[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_AST, + CATEGORY_SYSTEM_INFO_0_AST + }, + { + "video", + CATEGORY_VIDEO_LABEL_AST, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_AST +#else + CATEGORY_VIDEO_INFO_1_AST +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_AST, + CATEGORY_AUDIO_INFO_0_AST + }, + { + "input", + CATEGORY_INPUT_LABEL_AST, + CATEGORY_INPUT_INFO_0_AST + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_AST, + CATEGORY_PERFORMANCE_INFO_0_AST + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_ast[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_AST, + NULL, + MGBA_GB_MODEL_INFO_0_AST, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_AST }, + { "Game Boy", OPTION_VAL_GAME_BOY_AST }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_AST }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_AST }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_AST }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_AST, + NULL, + MGBA_USE_BIOS_INFO_0_AST, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_AST, + NULL, + MGBA_SKIP_BIOS_INFO_0_AST, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_AST, + NULL, + MGBA_GB_COLORS_INFO_0_AST, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_AST }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_AST, + NULL, + MGBA_SGB_BORDERS_INFO_0_AST, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_AST, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_AST, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_AST }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_AST }, + { "Auto", OPTION_VAL_AUTO_AST }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_AST, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_AST, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_AST }, + { "mix_smart", OPTION_VAL_MIX_SMART_AST }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_AST }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_AST }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_AST, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_AST, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_AST, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_AST, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_AST, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_AST, + NULL, + "audio", + { + { "5", OPTION_VAL_5_AST }, + { "10", OPTION_VAL_10_AST }, + { "15", OPTION_VAL_15_AST }, + { "20", OPTION_VAL_20_AST }, + { "25", OPTION_VAL_25_AST }, + { "30", OPTION_VAL_30_AST }, + { "35", OPTION_VAL_35_AST }, + { "40", OPTION_VAL_40_AST }, + { "45", OPTION_VAL_45_AST }, + { "50", OPTION_VAL_50_AST }, + { "55", OPTION_VAL_55_AST }, + { "60", OPTION_VAL_60_AST }, + { "65", OPTION_VAL_65_AST }, + { "70", OPTION_VAL_70_AST }, + { "75", OPTION_VAL_75_AST }, + { "80", OPTION_VAL_80_AST }, + { "85", OPTION_VAL_85_AST }, + { "90", OPTION_VAL_90_AST }, + { "95", OPTION_VAL_95_AST }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_AST, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_AST, + NULL, + "input", + { + { "no", OPTION_VAL_NO_AST }, + { "yes", OPTION_VAL_YES_AST }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_AST, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_AST, + NULL, + MGBA_FORCE_GBP_INFO_0_AST, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_AST, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_AST, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_AST }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_AST }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_AST }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_AST, + NULL, + MGBA_FRAMESKIP_INFO_0_AST, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_AST }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_AST }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_AST }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_AST, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_AST, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_AST, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_AST, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_ast = { + option_cats_ast, + option_defs_ast +}; + +/* RETRO_LANGUAGE_CA */ + +#define CATEGORY_SYSTEM_LABEL_CA NULL +#define CATEGORY_SYSTEM_INFO_0_CA NULL +#define CATEGORY_VIDEO_LABEL_CA NULL +#define CATEGORY_VIDEO_INFO_0_CA NULL +#define CATEGORY_VIDEO_INFO_1_CA NULL +#define CATEGORY_AUDIO_LABEL_CA NULL +#define CATEGORY_AUDIO_INFO_0_CA NULL +#define CATEGORY_INPUT_LABEL_CA NULL +#define CATEGORY_INPUT_INFO_0_CA NULL +#define CATEGORY_PERFORMANCE_LABEL_CA NULL +#define CATEGORY_PERFORMANCE_INFO_0_CA NULL +#define MGBA_GB_MODEL_LABEL_CA NULL +#define MGBA_GB_MODEL_INFO_0_CA NULL +#define OPTION_VAL_AUTODETECT_CA NULL +#define OPTION_VAL_GAME_BOY_CA NULL +#define OPTION_VAL_SUPER_GAME_BOY_CA NULL +#define OPTION_VAL_GAME_BOY_COLOR_CA NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_CA NULL +#define MGBA_USE_BIOS_LABEL_CA NULL +#define MGBA_USE_BIOS_INFO_0_CA NULL +#define MGBA_SKIP_BIOS_LABEL_CA NULL +#define MGBA_SKIP_BIOS_INFO_0_CA NULL +#define MGBA_GB_COLORS_LABEL_CA NULL +#define MGBA_GB_COLORS_INFO_0_CA NULL +#define OPTION_VAL_GRAYSCALE_CA NULL +#define MGBA_SGB_BORDERS_LABEL_CA NULL +#define MGBA_SGB_BORDERS_INFO_0_CA NULL +#define MGBA_COLOR_CORRECTION_LABEL_CA NULL +#define MGBA_COLOR_CORRECTION_INFO_0_CA NULL +#define OPTION_VAL_AUTO_CA NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_CA NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_CA NULL +#define OPTION_VAL_MIX_CA NULL +#define OPTION_VAL_MIX_SMART_CA NULL +#define OPTION_VAL_LCD_GHOSTING_CA NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_CA NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CA NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_CA NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_CA NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CA NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_CA NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_CA NULL +#define OPTION_VAL_5_CA NULL +#define OPTION_VAL_10_CA NULL +#define OPTION_VAL_15_CA NULL +#define OPTION_VAL_20_CA NULL +#define OPTION_VAL_25_CA NULL +#define OPTION_VAL_30_CA NULL +#define OPTION_VAL_35_CA NULL +#define OPTION_VAL_40_CA NULL +#define OPTION_VAL_45_CA NULL +#define OPTION_VAL_50_CA NULL +#define OPTION_VAL_55_CA NULL +#define OPTION_VAL_60_CA NULL +#define OPTION_VAL_65_CA NULL +#define OPTION_VAL_70_CA NULL +#define OPTION_VAL_75_CA NULL +#define OPTION_VAL_80_CA NULL +#define OPTION_VAL_85_CA NULL +#define OPTION_VAL_90_CA NULL +#define OPTION_VAL_95_CA NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CA NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CA NULL +#define OPTION_VAL_NO_CA NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_CA NULL +#define MGBA_FORCE_GBP_INFO_0_CA NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_CA NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_CA NULL +#define OPTION_VAL_REMOVE_KNOWN_CA NULL +#define OPTION_VAL_DETECT_AND_REMOVE_CA NULL +#define OPTION_VAL_DON_T_REMOVE_CA NULL +#define MGBA_FRAMESKIP_LABEL_CA NULL +#define MGBA_FRAMESKIP_INFO_0_CA NULL +#define OPTION_VAL_AUTO_THRESHOLD_CA NULL +#define OPTION_VAL_FIXED_INTERVAL_CA NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_CA NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_CA NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_CA NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_CA NULL + +struct retro_core_option_v2_category option_cats_ca[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_CA, + CATEGORY_SYSTEM_INFO_0_CA + }, + { + "video", + CATEGORY_VIDEO_LABEL_CA, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_CA +#else + CATEGORY_VIDEO_INFO_1_CA +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_CA, + CATEGORY_AUDIO_INFO_0_CA + }, + { + "input", + CATEGORY_INPUT_LABEL_CA, + CATEGORY_INPUT_INFO_0_CA + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_CA, + CATEGORY_PERFORMANCE_INFO_0_CA + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_ca[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_CA, + NULL, + MGBA_GB_MODEL_INFO_0_CA, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_CA }, + { "Game Boy", OPTION_VAL_GAME_BOY_CA }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_CA }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_CA }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_CA }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_CA, + NULL, + MGBA_USE_BIOS_INFO_0_CA, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_CA, + NULL, + MGBA_SKIP_BIOS_INFO_0_CA, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_CA, + NULL, + MGBA_GB_COLORS_INFO_0_CA, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_CA }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_CA, + NULL, + MGBA_SGB_BORDERS_INFO_0_CA, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_CA, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_CA, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_CA }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_CA }, + { "Auto", OPTION_VAL_AUTO_CA }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_CA, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_CA, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_CA }, + { "mix_smart", OPTION_VAL_MIX_SMART_CA }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_CA }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_CA }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CA, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_CA, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_CA, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CA, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_CA, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_CA, + NULL, + "audio", + { + { "5", OPTION_VAL_5_CA }, + { "10", OPTION_VAL_10_CA }, + { "15", OPTION_VAL_15_CA }, + { "20", OPTION_VAL_20_CA }, + { "25", OPTION_VAL_25_CA }, + { "30", OPTION_VAL_30_CA }, + { "35", OPTION_VAL_35_CA }, + { "40", OPTION_VAL_40_CA }, + { "45", OPTION_VAL_45_CA }, + { "50", OPTION_VAL_50_CA }, + { "55", OPTION_VAL_55_CA }, + { "60", OPTION_VAL_60_CA }, + { "65", OPTION_VAL_65_CA }, + { "70", OPTION_VAL_70_CA }, + { "75", OPTION_VAL_75_CA }, + { "80", OPTION_VAL_80_CA }, + { "85", OPTION_VAL_85_CA }, + { "90", OPTION_VAL_90_CA }, + { "95", OPTION_VAL_95_CA }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CA, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CA, + NULL, + "input", + { + { "no", OPTION_VAL_NO_CA }, + { "yes", OPTION_VAL_YES_CA }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_CA, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_CA, + NULL, + MGBA_FORCE_GBP_INFO_0_CA, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_CA, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_CA, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_CA }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_CA }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_CA }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_CA, + NULL, + MGBA_FRAMESKIP_INFO_0_CA, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_CA }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_CA }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_CA }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_CA, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_CA, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_CA, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_CA, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_ca = { + option_cats_ca, + option_defs_ca +}; + +/* RETRO_LANGUAGE_CHS */ + +#define CATEGORY_SYSTEM_LABEL_CHS NULL +#define CATEGORY_SYSTEM_INFO_0_CHS NULL +#define CATEGORY_VIDEO_LABEL_CHS NULL +#define CATEGORY_VIDEO_INFO_0_CHS NULL +#define CATEGORY_VIDEO_INFO_1_CHS NULL +#define CATEGORY_AUDIO_LABEL_CHS NULL +#define CATEGORY_AUDIO_INFO_0_CHS NULL +#define CATEGORY_INPUT_LABEL_CHS NULL +#define CATEGORY_INPUT_INFO_0_CHS NULL +#define CATEGORY_PERFORMANCE_LABEL_CHS NULL +#define CATEGORY_PERFORMANCE_INFO_0_CHS NULL +#define MGBA_GB_MODEL_LABEL_CHS NULL +#define MGBA_GB_MODEL_INFO_0_CHS NULL +#define OPTION_VAL_AUTODETECT_CHS NULL +#define OPTION_VAL_GAME_BOY_CHS NULL +#define OPTION_VAL_SUPER_GAME_BOY_CHS NULL +#define OPTION_VAL_GAME_BOY_COLOR_CHS NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_CHS NULL +#define MGBA_USE_BIOS_LABEL_CHS NULL +#define MGBA_USE_BIOS_INFO_0_CHS NULL +#define MGBA_SKIP_BIOS_LABEL_CHS NULL +#define MGBA_SKIP_BIOS_INFO_0_CHS NULL +#define MGBA_GB_COLORS_LABEL_CHS NULL +#define MGBA_GB_COLORS_INFO_0_CHS NULL +#define OPTION_VAL_GRAYSCALE_CHS NULL +#define MGBA_SGB_BORDERS_LABEL_CHS NULL +#define MGBA_SGB_BORDERS_INFO_0_CHS NULL +#define MGBA_COLOR_CORRECTION_LABEL_CHS NULL +#define MGBA_COLOR_CORRECTION_INFO_0_CHS NULL +#define OPTION_VAL_AUTO_CHS NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_CHS NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_CHS NULL +#define OPTION_VAL_MIX_CHS NULL +#define OPTION_VAL_MIX_SMART_CHS NULL +#define OPTION_VAL_LCD_GHOSTING_CHS NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_CHS NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CHS NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_CHS NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_CHS NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CHS NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_CHS NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_CHS NULL +#define OPTION_VAL_5_CHS NULL +#define OPTION_VAL_10_CHS NULL +#define OPTION_VAL_15_CHS NULL +#define OPTION_VAL_20_CHS NULL +#define OPTION_VAL_25_CHS NULL +#define OPTION_VAL_30_CHS NULL +#define OPTION_VAL_35_CHS NULL +#define OPTION_VAL_40_CHS NULL +#define OPTION_VAL_45_CHS NULL +#define OPTION_VAL_50_CHS NULL +#define OPTION_VAL_55_CHS NULL +#define OPTION_VAL_60_CHS NULL +#define OPTION_VAL_65_CHS NULL +#define OPTION_VAL_70_CHS NULL +#define OPTION_VAL_75_CHS NULL +#define OPTION_VAL_80_CHS NULL +#define OPTION_VAL_85_CHS NULL +#define OPTION_VAL_90_CHS NULL +#define OPTION_VAL_95_CHS NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CHS NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CHS NULL +#define OPTION_VAL_NO_CHS NULL +#define OPTION_VAL_YES_CHS NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHS NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CHS NULL +#define OPTION_VAL_SENSOR_CHS NULL +#define MGBA_FORCE_GBP_LABEL_CHS NULL +#define MGBA_FORCE_GBP_INFO_0_CHS NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_CHS NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_CHS NULL +#define OPTION_VAL_REMOVE_KNOWN_CHS NULL +#define OPTION_VAL_DETECT_AND_REMOVE_CHS NULL +#define OPTION_VAL_DON_T_REMOVE_CHS NULL +#define MGBA_FRAMESKIP_LABEL_CHS NULL +#define MGBA_FRAMESKIP_INFO_0_CHS NULL +#define OPTION_VAL_AUTO_THRESHOLD_CHS NULL +#define OPTION_VAL_FIXED_INTERVAL_CHS NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_CHS NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_CHS NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_CHS NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_CHS NULL + +struct retro_core_option_v2_category option_cats_chs[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_CHS, + CATEGORY_SYSTEM_INFO_0_CHS + }, + { + "video", + CATEGORY_VIDEO_LABEL_CHS, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_CHS +#else + CATEGORY_VIDEO_INFO_1_CHS +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_CHS, + CATEGORY_AUDIO_INFO_0_CHS + }, + { + "input", + CATEGORY_INPUT_LABEL_CHS, + CATEGORY_INPUT_INFO_0_CHS + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_CHS, + CATEGORY_PERFORMANCE_INFO_0_CHS + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_chs[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_CHS, + NULL, + MGBA_GB_MODEL_INFO_0_CHS, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_CHS }, + { "Game Boy", OPTION_VAL_GAME_BOY_CHS }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_CHS }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_CHS }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_CHS }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_CHS, + NULL, + MGBA_USE_BIOS_INFO_0_CHS, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_CHS, + NULL, + MGBA_SKIP_BIOS_INFO_0_CHS, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_CHS, + NULL, + MGBA_GB_COLORS_INFO_0_CHS, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_CHS }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_CHS, + NULL, + MGBA_SGB_BORDERS_INFO_0_CHS, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_CHS, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_CHS, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_CHS }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_CHS }, + { "Auto", OPTION_VAL_AUTO_CHS }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_CHS, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_CHS, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_CHS }, + { "mix_smart", OPTION_VAL_MIX_SMART_CHS }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_CHS }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_CHS }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CHS, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_CHS, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_CHS, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CHS, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_CHS, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_CHS, + NULL, + "audio", + { + { "5", OPTION_VAL_5_CHS }, + { "10", OPTION_VAL_10_CHS }, + { "15", OPTION_VAL_15_CHS }, + { "20", OPTION_VAL_20_CHS }, + { "25", OPTION_VAL_25_CHS }, + { "30", OPTION_VAL_30_CHS }, + { "35", OPTION_VAL_35_CHS }, + { "40", OPTION_VAL_40_CHS }, + { "45", OPTION_VAL_45_CHS }, + { "50", OPTION_VAL_50_CHS }, + { "55", OPTION_VAL_55_CHS }, + { "60", OPTION_VAL_60_CHS }, + { "65", OPTION_VAL_65_CHS }, + { "70", OPTION_VAL_70_CHS }, + { "75", OPTION_VAL_75_CHS }, + { "80", OPTION_VAL_80_CHS }, + { "85", OPTION_VAL_85_CHS }, + { "90", OPTION_VAL_90_CHS }, + { "95", OPTION_VAL_95_CHS }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CHS, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CHS, + NULL, + "input", + { + { "no", OPTION_VAL_NO_CHS }, + { "yes", OPTION_VAL_YES_CHS }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHS, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_CHS, + NULL, + MGBA_FORCE_GBP_INFO_0_CHS, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_CHS, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_CHS, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_CHS }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_CHS }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_CHS }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_CHS, + NULL, + MGBA_FRAMESKIP_INFO_0_CHS, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_CHS }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_CHS }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_CHS }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_CHS, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_CHS, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_CHS, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_CHS, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_chs = { + option_cats_chs, + option_defs_chs +}; + +/* RETRO_LANGUAGE_CHT */ + +#define CATEGORY_SYSTEM_LABEL_CHT NULL +#define CATEGORY_SYSTEM_INFO_0_CHT NULL +#define CATEGORY_VIDEO_LABEL_CHT NULL +#define CATEGORY_VIDEO_INFO_0_CHT NULL +#define CATEGORY_VIDEO_INFO_1_CHT NULL +#define CATEGORY_AUDIO_LABEL_CHT NULL +#define CATEGORY_AUDIO_INFO_0_CHT NULL +#define CATEGORY_INPUT_LABEL_CHT NULL +#define CATEGORY_INPUT_INFO_0_CHT NULL +#define CATEGORY_PERFORMANCE_LABEL_CHT NULL +#define CATEGORY_PERFORMANCE_INFO_0_CHT NULL +#define MGBA_GB_MODEL_LABEL_CHT NULL +#define MGBA_GB_MODEL_INFO_0_CHT NULL +#define OPTION_VAL_AUTODETECT_CHT NULL +#define OPTION_VAL_GAME_BOY_CHT NULL +#define OPTION_VAL_SUPER_GAME_BOY_CHT NULL +#define OPTION_VAL_GAME_BOY_COLOR_CHT NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_CHT NULL +#define MGBA_USE_BIOS_LABEL_CHT NULL +#define MGBA_USE_BIOS_INFO_0_CHT NULL +#define MGBA_SKIP_BIOS_LABEL_CHT NULL +#define MGBA_SKIP_BIOS_INFO_0_CHT NULL +#define MGBA_GB_COLORS_LABEL_CHT NULL +#define MGBA_GB_COLORS_INFO_0_CHT NULL +#define OPTION_VAL_GRAYSCALE_CHT NULL +#define MGBA_SGB_BORDERS_LABEL_CHT NULL +#define MGBA_SGB_BORDERS_INFO_0_CHT NULL +#define MGBA_COLOR_CORRECTION_LABEL_CHT NULL +#define MGBA_COLOR_CORRECTION_INFO_0_CHT NULL +#define OPTION_VAL_AUTO_CHT NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_CHT NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_CHT NULL +#define OPTION_VAL_MIX_CHT NULL +#define OPTION_VAL_MIX_SMART_CHT NULL +#define OPTION_VAL_LCD_GHOSTING_CHT NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_CHT NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CHT NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_CHT NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_CHT NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CHT NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_CHT NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_CHT NULL +#define OPTION_VAL_5_CHT NULL +#define OPTION_VAL_10_CHT NULL +#define OPTION_VAL_15_CHT NULL +#define OPTION_VAL_20_CHT NULL +#define OPTION_VAL_25_CHT NULL +#define OPTION_VAL_30_CHT NULL +#define OPTION_VAL_35_CHT NULL +#define OPTION_VAL_40_CHT NULL +#define OPTION_VAL_45_CHT NULL +#define OPTION_VAL_50_CHT NULL +#define OPTION_VAL_55_CHT NULL +#define OPTION_VAL_60_CHT NULL +#define OPTION_VAL_65_CHT NULL +#define OPTION_VAL_70_CHT NULL +#define OPTION_VAL_75_CHT NULL +#define OPTION_VAL_80_CHT NULL +#define OPTION_VAL_85_CHT NULL +#define OPTION_VAL_90_CHT NULL +#define OPTION_VAL_95_CHT NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CHT NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CHT NULL +#define OPTION_VAL_NO_CHT NULL +#define OPTION_VAL_YES_CHT NULL +#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_FORCE_GBP_LABEL_CHT NULL +#define MGBA_FORCE_GBP_INFO_0_CHT NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_CHT NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_CHT NULL +#define OPTION_VAL_REMOVE_KNOWN_CHT NULL +#define OPTION_VAL_DETECT_AND_REMOVE_CHT NULL +#define OPTION_VAL_DON_T_REMOVE_CHT NULL +#define MGBA_FRAMESKIP_LABEL_CHT NULL +#define MGBA_FRAMESKIP_INFO_0_CHT NULL +#define OPTION_VAL_AUTO_THRESHOLD_CHT NULL +#define OPTION_VAL_FIXED_INTERVAL_CHT NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_CHT NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_CHT NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_CHT NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_CHT NULL + +struct retro_core_option_v2_category option_cats_cht[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_CHT, + CATEGORY_SYSTEM_INFO_0_CHT + }, + { + "video", + CATEGORY_VIDEO_LABEL_CHT, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_CHT +#else + CATEGORY_VIDEO_INFO_1_CHT +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_CHT, + CATEGORY_AUDIO_INFO_0_CHT + }, + { + "input", + CATEGORY_INPUT_LABEL_CHT, + CATEGORY_INPUT_INFO_0_CHT + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_CHT, + CATEGORY_PERFORMANCE_INFO_0_CHT + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_cht[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_CHT, + NULL, + MGBA_GB_MODEL_INFO_0_CHT, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_CHT }, + { "Game Boy", OPTION_VAL_GAME_BOY_CHT }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_CHT }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_CHT }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_CHT }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_CHT, + NULL, + MGBA_USE_BIOS_INFO_0_CHT, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_CHT, + NULL, + MGBA_SKIP_BIOS_INFO_0_CHT, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_CHT, + NULL, + MGBA_GB_COLORS_INFO_0_CHT, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_CHT }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_CHT, + NULL, + MGBA_SGB_BORDERS_INFO_0_CHT, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_CHT, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_CHT, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_CHT }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_CHT }, + { "Auto", OPTION_VAL_AUTO_CHT }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_CHT, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_CHT, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_CHT }, + { "mix_smart", OPTION_VAL_MIX_SMART_CHT }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_CHT }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_CHT }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CHT, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_CHT, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_CHT, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CHT, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_CHT, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_CHT, + NULL, + "audio", + { + { "5", OPTION_VAL_5_CHT }, + { "10", OPTION_VAL_10_CHT }, + { "15", OPTION_VAL_15_CHT }, + { "20", OPTION_VAL_20_CHT }, + { "25", OPTION_VAL_25_CHT }, + { "30", OPTION_VAL_30_CHT }, + { "35", OPTION_VAL_35_CHT }, + { "40", OPTION_VAL_40_CHT }, + { "45", OPTION_VAL_45_CHT }, + { "50", OPTION_VAL_50_CHT }, + { "55", OPTION_VAL_55_CHT }, + { "60", OPTION_VAL_60_CHT }, + { "65", OPTION_VAL_65_CHT }, + { "70", OPTION_VAL_70_CHT }, + { "75", OPTION_VAL_75_CHT }, + { "80", OPTION_VAL_80_CHT }, + { "85", OPTION_VAL_85_CHT }, + { "90", OPTION_VAL_90_CHT }, + { "95", OPTION_VAL_95_CHT }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CHT, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CHT, + NULL, + "input", + { + { "no", OPTION_VAL_NO_CHT }, + { "yes", OPTION_VAL_YES_CHT }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_CHT, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_CHT, + NULL, + MGBA_FORCE_GBP_INFO_0_CHT, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_CHT, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_CHT, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_CHT }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_CHT }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_CHT }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_CHT, + NULL, + MGBA_FRAMESKIP_INFO_0_CHT, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_CHT }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_CHT }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_CHT }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_CHT, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_CHT, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_CHT, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_CHT, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_cht = { + option_cats_cht, + option_defs_cht +}; + +/* RETRO_LANGUAGE_CS */ + +#define CATEGORY_SYSTEM_LABEL_CS NULL +#define CATEGORY_SYSTEM_INFO_0_CS NULL +#define CATEGORY_VIDEO_LABEL_CS NULL +#define CATEGORY_VIDEO_INFO_0_CS NULL +#define CATEGORY_VIDEO_INFO_1_CS NULL +#define CATEGORY_AUDIO_LABEL_CS NULL +#define CATEGORY_AUDIO_INFO_0_CS NULL +#define CATEGORY_INPUT_LABEL_CS NULL +#define CATEGORY_INPUT_INFO_0_CS NULL +#define CATEGORY_PERFORMANCE_LABEL_CS NULL +#define CATEGORY_PERFORMANCE_INFO_0_CS NULL +#define MGBA_GB_MODEL_LABEL_CS NULL +#define MGBA_GB_MODEL_INFO_0_CS NULL +#define OPTION_VAL_AUTODETECT_CS NULL +#define OPTION_VAL_GAME_BOY_CS NULL +#define OPTION_VAL_SUPER_GAME_BOY_CS NULL +#define OPTION_VAL_GAME_BOY_COLOR_CS NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_CS NULL +#define MGBA_USE_BIOS_LABEL_CS NULL +#define MGBA_USE_BIOS_INFO_0_CS NULL +#define MGBA_SKIP_BIOS_LABEL_CS NULL +#define MGBA_SKIP_BIOS_INFO_0_CS NULL +#define MGBA_GB_COLORS_LABEL_CS NULL +#define MGBA_GB_COLORS_INFO_0_CS NULL +#define OPTION_VAL_GRAYSCALE_CS NULL +#define MGBA_SGB_BORDERS_LABEL_CS NULL +#define MGBA_SGB_BORDERS_INFO_0_CS NULL +#define MGBA_COLOR_CORRECTION_LABEL_CS NULL +#define MGBA_COLOR_CORRECTION_INFO_0_CS NULL +#define OPTION_VAL_AUTO_CS NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_CS NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_CS NULL +#define OPTION_VAL_MIX_CS NULL +#define OPTION_VAL_MIX_SMART_CS NULL +#define OPTION_VAL_LCD_GHOSTING_CS NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_CS NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CS NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_CS NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_CS NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CS NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_CS NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_CS NULL +#define OPTION_VAL_5_CS NULL +#define OPTION_VAL_10_CS NULL +#define OPTION_VAL_15_CS NULL +#define OPTION_VAL_20_CS NULL +#define OPTION_VAL_25_CS NULL +#define OPTION_VAL_30_CS NULL +#define OPTION_VAL_35_CS NULL +#define OPTION_VAL_40_CS NULL +#define OPTION_VAL_45_CS NULL +#define OPTION_VAL_50_CS NULL +#define OPTION_VAL_55_CS NULL +#define OPTION_VAL_60_CS NULL +#define OPTION_VAL_65_CS NULL +#define OPTION_VAL_70_CS NULL +#define OPTION_VAL_75_CS NULL +#define OPTION_VAL_80_CS NULL +#define OPTION_VAL_85_CS NULL +#define OPTION_VAL_90_CS NULL +#define OPTION_VAL_95_CS NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CS NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CS NULL +#define OPTION_VAL_NO_CS NULL +#define OPTION_VAL_YES_CS NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_CS NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_CS NULL +#define OPTION_VAL_SENSOR_CS NULL +#define MGBA_FORCE_GBP_LABEL_CS NULL +#define MGBA_FORCE_GBP_INFO_0_CS NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_CS NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_CS NULL +#define OPTION_VAL_REMOVE_KNOWN_CS NULL +#define OPTION_VAL_DETECT_AND_REMOVE_CS NULL +#define OPTION_VAL_DON_T_REMOVE_CS NULL +#define MGBA_FRAMESKIP_LABEL_CS NULL +#define MGBA_FRAMESKIP_INFO_0_CS NULL +#define OPTION_VAL_AUTO_THRESHOLD_CS NULL +#define OPTION_VAL_FIXED_INTERVAL_CS NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_CS NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_CS NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_CS NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_CS NULL + +struct retro_core_option_v2_category option_cats_cs[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_CS, + CATEGORY_SYSTEM_INFO_0_CS + }, + { + "video", + CATEGORY_VIDEO_LABEL_CS, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_CS +#else + CATEGORY_VIDEO_INFO_1_CS +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_CS, + CATEGORY_AUDIO_INFO_0_CS + }, + { + "input", + CATEGORY_INPUT_LABEL_CS, + CATEGORY_INPUT_INFO_0_CS + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_CS, + CATEGORY_PERFORMANCE_INFO_0_CS + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_cs[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_CS, + NULL, + MGBA_GB_MODEL_INFO_0_CS, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_CS }, + { "Game Boy", OPTION_VAL_GAME_BOY_CS }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_CS }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_CS }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_CS }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_CS, + NULL, + MGBA_USE_BIOS_INFO_0_CS, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_CS, + NULL, + MGBA_SKIP_BIOS_INFO_0_CS, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_CS, + NULL, + MGBA_GB_COLORS_INFO_0_CS, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_CS }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_CS, + NULL, + MGBA_SGB_BORDERS_INFO_0_CS, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_CS, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_CS, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_CS }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_CS }, + { "Auto", OPTION_VAL_AUTO_CS }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_CS, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_CS, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_CS }, + { "mix_smart", OPTION_VAL_MIX_SMART_CS }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_CS }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_CS }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CS, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_CS, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_CS, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CS, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_CS, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_CS, + NULL, + "audio", + { + { "5", OPTION_VAL_5_CS }, + { "10", OPTION_VAL_10_CS }, + { "15", OPTION_VAL_15_CS }, + { "20", OPTION_VAL_20_CS }, + { "25", OPTION_VAL_25_CS }, + { "30", OPTION_VAL_30_CS }, + { "35", OPTION_VAL_35_CS }, + { "40", OPTION_VAL_40_CS }, + { "45", OPTION_VAL_45_CS }, + { "50", OPTION_VAL_50_CS }, + { "55", OPTION_VAL_55_CS }, + { "60", OPTION_VAL_60_CS }, + { "65", OPTION_VAL_65_CS }, + { "70", OPTION_VAL_70_CS }, + { "75", OPTION_VAL_75_CS }, + { "80", OPTION_VAL_80_CS }, + { "85", OPTION_VAL_85_CS }, + { "90", OPTION_VAL_90_CS }, + { "95", OPTION_VAL_95_CS }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CS, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CS, + NULL, + "input", + { + { "no", OPTION_VAL_NO_CS }, + { "yes", OPTION_VAL_YES_CS }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_CS, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_CS, + NULL, + MGBA_FORCE_GBP_INFO_0_CS, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_CS, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_CS, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_CS }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_CS }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_CS }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_CS, + NULL, + MGBA_FRAMESKIP_INFO_0_CS, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_CS }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_CS }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_CS }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_CS, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_CS, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_CS, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_CS, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_cs = { + option_cats_cs, + option_defs_cs +}; + +/* RETRO_LANGUAGE_CY */ + +#define CATEGORY_SYSTEM_LABEL_CY NULL +#define CATEGORY_SYSTEM_INFO_0_CY NULL +#define CATEGORY_VIDEO_LABEL_CY NULL +#define CATEGORY_VIDEO_INFO_0_CY NULL +#define CATEGORY_VIDEO_INFO_1_CY NULL +#define CATEGORY_AUDIO_LABEL_CY NULL +#define CATEGORY_AUDIO_INFO_0_CY NULL +#define CATEGORY_INPUT_LABEL_CY NULL +#define CATEGORY_INPUT_INFO_0_CY NULL +#define CATEGORY_PERFORMANCE_LABEL_CY NULL +#define CATEGORY_PERFORMANCE_INFO_0_CY NULL +#define MGBA_GB_MODEL_LABEL_CY NULL +#define MGBA_GB_MODEL_INFO_0_CY NULL +#define OPTION_VAL_AUTODETECT_CY NULL +#define OPTION_VAL_GAME_BOY_CY NULL +#define OPTION_VAL_SUPER_GAME_BOY_CY NULL +#define OPTION_VAL_GAME_BOY_COLOR_CY NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_CY NULL +#define MGBA_USE_BIOS_LABEL_CY NULL +#define MGBA_USE_BIOS_INFO_0_CY NULL +#define MGBA_SKIP_BIOS_LABEL_CY NULL +#define MGBA_SKIP_BIOS_INFO_0_CY NULL +#define MGBA_GB_COLORS_LABEL_CY NULL +#define MGBA_GB_COLORS_INFO_0_CY NULL +#define OPTION_VAL_GRAYSCALE_CY NULL +#define MGBA_SGB_BORDERS_LABEL_CY NULL +#define MGBA_SGB_BORDERS_INFO_0_CY NULL +#define MGBA_COLOR_CORRECTION_LABEL_CY NULL +#define MGBA_COLOR_CORRECTION_INFO_0_CY NULL +#define OPTION_VAL_AUTO_CY NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_CY NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_CY NULL +#define OPTION_VAL_MIX_CY NULL +#define OPTION_VAL_MIX_SMART_CY NULL +#define OPTION_VAL_LCD_GHOSTING_CY NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_CY NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CY NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_CY NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_CY NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CY NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_CY NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_CY NULL +#define OPTION_VAL_5_CY NULL +#define OPTION_VAL_10_CY NULL +#define OPTION_VAL_15_CY NULL +#define OPTION_VAL_20_CY NULL +#define OPTION_VAL_25_CY NULL +#define OPTION_VAL_30_CY NULL +#define OPTION_VAL_35_CY NULL +#define OPTION_VAL_40_CY NULL +#define OPTION_VAL_45_CY NULL +#define OPTION_VAL_50_CY NULL +#define OPTION_VAL_55_CY NULL +#define OPTION_VAL_60_CY NULL +#define OPTION_VAL_65_CY NULL +#define OPTION_VAL_70_CY NULL +#define OPTION_VAL_75_CY NULL +#define OPTION_VAL_80_CY NULL +#define OPTION_VAL_85_CY NULL +#define OPTION_VAL_90_CY NULL +#define OPTION_VAL_95_CY NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CY NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CY NULL +#define OPTION_VAL_NO_CY NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_CY NULL +#define MGBA_FORCE_GBP_INFO_0_CY NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_CY NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_CY NULL +#define OPTION_VAL_REMOVE_KNOWN_CY NULL +#define OPTION_VAL_DETECT_AND_REMOVE_CY NULL +#define OPTION_VAL_DON_T_REMOVE_CY NULL +#define MGBA_FRAMESKIP_LABEL_CY NULL +#define MGBA_FRAMESKIP_INFO_0_CY NULL +#define OPTION_VAL_AUTO_THRESHOLD_CY NULL +#define OPTION_VAL_FIXED_INTERVAL_CY NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_CY NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_CY NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_CY NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_CY NULL + +struct retro_core_option_v2_category option_cats_cy[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_CY, + CATEGORY_SYSTEM_INFO_0_CY + }, + { + "video", + CATEGORY_VIDEO_LABEL_CY, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_CY +#else + CATEGORY_VIDEO_INFO_1_CY +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_CY, + CATEGORY_AUDIO_INFO_0_CY + }, + { + "input", + CATEGORY_INPUT_LABEL_CY, + CATEGORY_INPUT_INFO_0_CY + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_CY, + CATEGORY_PERFORMANCE_INFO_0_CY + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_cy[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_CY, + NULL, + MGBA_GB_MODEL_INFO_0_CY, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_CY }, + { "Game Boy", OPTION_VAL_GAME_BOY_CY }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_CY }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_CY }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_CY }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_CY, + NULL, + MGBA_USE_BIOS_INFO_0_CY, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_CY, + NULL, + MGBA_SKIP_BIOS_INFO_0_CY, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_CY, + NULL, + MGBA_GB_COLORS_INFO_0_CY, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_CY }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_CY, + NULL, + MGBA_SGB_BORDERS_INFO_0_CY, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_CY, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_CY, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_CY }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_CY }, + { "Auto", OPTION_VAL_AUTO_CY }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_CY, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_CY, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_CY }, + { "mix_smart", OPTION_VAL_MIX_SMART_CY }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_CY }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_CY }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CY, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_CY, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_CY, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CY, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_CY, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_CY, + NULL, + "audio", + { + { "5", OPTION_VAL_5_CY }, + { "10", OPTION_VAL_10_CY }, + { "15", OPTION_VAL_15_CY }, + { "20", OPTION_VAL_20_CY }, + { "25", OPTION_VAL_25_CY }, + { "30", OPTION_VAL_30_CY }, + { "35", OPTION_VAL_35_CY }, + { "40", OPTION_VAL_40_CY }, + { "45", OPTION_VAL_45_CY }, + { "50", OPTION_VAL_50_CY }, + { "55", OPTION_VAL_55_CY }, + { "60", OPTION_VAL_60_CY }, + { "65", OPTION_VAL_65_CY }, + { "70", OPTION_VAL_70_CY }, + { "75", OPTION_VAL_75_CY }, + { "80", OPTION_VAL_80_CY }, + { "85", OPTION_VAL_85_CY }, + { "90", OPTION_VAL_90_CY }, + { "95", OPTION_VAL_95_CY }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_CY, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_CY, + NULL, + "input", + { + { "no", OPTION_VAL_NO_CY }, + { "yes", OPTION_VAL_YES_CY }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_CY, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_CY, + NULL, + MGBA_FORCE_GBP_INFO_0_CY, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_CY, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_CY, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_CY }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_CY }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_CY }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_CY, + NULL, + MGBA_FRAMESKIP_INFO_0_CY, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_CY }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_CY }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_CY }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_CY, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_CY, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_CY, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_CY, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_cy = { + option_cats_cy, + option_defs_cy +}; + +/* RETRO_LANGUAGE_DA */ + +#define CATEGORY_SYSTEM_LABEL_DA NULL +#define CATEGORY_SYSTEM_INFO_0_DA NULL +#define CATEGORY_VIDEO_LABEL_DA NULL +#define CATEGORY_VIDEO_INFO_0_DA NULL +#define CATEGORY_VIDEO_INFO_1_DA NULL +#define CATEGORY_AUDIO_LABEL_DA NULL +#define CATEGORY_AUDIO_INFO_0_DA NULL +#define CATEGORY_INPUT_LABEL_DA NULL +#define CATEGORY_INPUT_INFO_0_DA NULL +#define CATEGORY_PERFORMANCE_LABEL_DA NULL +#define CATEGORY_PERFORMANCE_INFO_0_DA NULL +#define MGBA_GB_MODEL_LABEL_DA NULL +#define MGBA_GB_MODEL_INFO_0_DA NULL +#define OPTION_VAL_AUTODETECT_DA NULL +#define OPTION_VAL_GAME_BOY_DA NULL +#define OPTION_VAL_SUPER_GAME_BOY_DA NULL +#define OPTION_VAL_GAME_BOY_COLOR_DA NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_DA NULL +#define MGBA_USE_BIOS_LABEL_DA NULL +#define MGBA_USE_BIOS_INFO_0_DA NULL +#define MGBA_SKIP_BIOS_LABEL_DA NULL +#define MGBA_SKIP_BIOS_INFO_0_DA NULL +#define MGBA_GB_COLORS_LABEL_DA NULL +#define MGBA_GB_COLORS_INFO_0_DA NULL +#define OPTION_VAL_GRAYSCALE_DA NULL +#define MGBA_SGB_BORDERS_LABEL_DA NULL +#define MGBA_SGB_BORDERS_INFO_0_DA NULL +#define MGBA_COLOR_CORRECTION_LABEL_DA NULL +#define MGBA_COLOR_CORRECTION_INFO_0_DA NULL +#define OPTION_VAL_AUTO_DA NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_DA NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_DA NULL +#define OPTION_VAL_MIX_DA NULL +#define OPTION_VAL_MIX_SMART_DA NULL +#define OPTION_VAL_LCD_GHOSTING_DA NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_DA NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_DA NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_DA NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_DA NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_DA NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_DA NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_DA NULL +#define OPTION_VAL_5_DA NULL +#define OPTION_VAL_10_DA NULL +#define OPTION_VAL_15_DA NULL +#define OPTION_VAL_20_DA NULL +#define OPTION_VAL_25_DA NULL +#define OPTION_VAL_30_DA NULL +#define OPTION_VAL_35_DA NULL +#define OPTION_VAL_40_DA NULL +#define OPTION_VAL_45_DA NULL +#define OPTION_VAL_50_DA NULL +#define OPTION_VAL_55_DA NULL +#define OPTION_VAL_60_DA NULL +#define OPTION_VAL_65_DA NULL +#define OPTION_VAL_70_DA NULL +#define OPTION_VAL_75_DA NULL +#define OPTION_VAL_80_DA NULL +#define OPTION_VAL_85_DA NULL +#define OPTION_VAL_90_DA NULL +#define OPTION_VAL_95_DA NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_DA NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_DA NULL +#define OPTION_VAL_NO_DA NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_DA NULL +#define MGBA_FORCE_GBP_INFO_0_DA NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_DA NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_DA NULL +#define OPTION_VAL_REMOVE_KNOWN_DA NULL +#define OPTION_VAL_DETECT_AND_REMOVE_DA NULL +#define OPTION_VAL_DON_T_REMOVE_DA NULL +#define MGBA_FRAMESKIP_LABEL_DA NULL +#define MGBA_FRAMESKIP_INFO_0_DA NULL +#define OPTION_VAL_AUTO_THRESHOLD_DA NULL +#define OPTION_VAL_FIXED_INTERVAL_DA NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_DA NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_DA NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_DA NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_DA NULL + +struct retro_core_option_v2_category option_cats_da[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_DA, + CATEGORY_SYSTEM_INFO_0_DA + }, + { + "video", + CATEGORY_VIDEO_LABEL_DA, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_DA +#else + CATEGORY_VIDEO_INFO_1_DA +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_DA, + CATEGORY_AUDIO_INFO_0_DA + }, + { + "input", + CATEGORY_INPUT_LABEL_DA, + CATEGORY_INPUT_INFO_0_DA + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_DA, + CATEGORY_PERFORMANCE_INFO_0_DA + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_da[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_DA, + NULL, + MGBA_GB_MODEL_INFO_0_DA, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_DA }, + { "Game Boy", OPTION_VAL_GAME_BOY_DA }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_DA }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_DA }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_DA }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_DA, + NULL, + MGBA_USE_BIOS_INFO_0_DA, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_DA, + NULL, + MGBA_SKIP_BIOS_INFO_0_DA, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_DA, + NULL, + MGBA_GB_COLORS_INFO_0_DA, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_DA }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_DA, + NULL, + MGBA_SGB_BORDERS_INFO_0_DA, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_DA, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_DA, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_DA }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_DA }, + { "Auto", OPTION_VAL_AUTO_DA }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_DA, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_DA, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_DA }, + { "mix_smart", OPTION_VAL_MIX_SMART_DA }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_DA }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_DA }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_DA, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_DA, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_DA, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_DA, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_DA, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_DA, + NULL, + "audio", + { + { "5", OPTION_VAL_5_DA }, + { "10", OPTION_VAL_10_DA }, + { "15", OPTION_VAL_15_DA }, + { "20", OPTION_VAL_20_DA }, + { "25", OPTION_VAL_25_DA }, + { "30", OPTION_VAL_30_DA }, + { "35", OPTION_VAL_35_DA }, + { "40", OPTION_VAL_40_DA }, + { "45", OPTION_VAL_45_DA }, + { "50", OPTION_VAL_50_DA }, + { "55", OPTION_VAL_55_DA }, + { "60", OPTION_VAL_60_DA }, + { "65", OPTION_VAL_65_DA }, + { "70", OPTION_VAL_70_DA }, + { "75", OPTION_VAL_75_DA }, + { "80", OPTION_VAL_80_DA }, + { "85", OPTION_VAL_85_DA }, + { "90", OPTION_VAL_90_DA }, + { "95", OPTION_VAL_95_DA }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_DA, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_DA, + NULL, + "input", + { + { "no", OPTION_VAL_NO_DA }, + { "yes", OPTION_VAL_YES_DA }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_DA, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_DA, + NULL, + MGBA_FORCE_GBP_INFO_0_DA, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_DA, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_DA, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_DA }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_DA }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_DA }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_DA, + NULL, + MGBA_FRAMESKIP_INFO_0_DA, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_DA }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_DA }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_DA }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_DA, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_DA, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_DA, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_DA, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_da = { + option_cats_da, + option_defs_da +}; + +/* RETRO_LANGUAGE_DE */ + +#define CATEGORY_SYSTEM_LABEL_DE NULL +#define CATEGORY_SYSTEM_INFO_0_DE NULL +#define CATEGORY_VIDEO_LABEL_DE NULL +#define CATEGORY_VIDEO_INFO_0_DE NULL +#define CATEGORY_VIDEO_INFO_1_DE NULL +#define CATEGORY_AUDIO_LABEL_DE NULL +#define CATEGORY_AUDIO_INFO_0_DE NULL +#define CATEGORY_INPUT_LABEL_DE NULL +#define CATEGORY_INPUT_INFO_0_DE NULL +#define CATEGORY_PERFORMANCE_LABEL_DE NULL +#define CATEGORY_PERFORMANCE_INFO_0_DE NULL +#define MGBA_GB_MODEL_LABEL_DE NULL +#define MGBA_GB_MODEL_INFO_0_DE NULL +#define OPTION_VAL_AUTODETECT_DE NULL +#define OPTION_VAL_GAME_BOY_DE NULL +#define OPTION_VAL_SUPER_GAME_BOY_DE NULL +#define OPTION_VAL_GAME_BOY_COLOR_DE NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_DE NULL +#define MGBA_USE_BIOS_LABEL_DE NULL +#define MGBA_USE_BIOS_INFO_0_DE NULL +#define MGBA_SKIP_BIOS_LABEL_DE NULL +#define MGBA_SKIP_BIOS_INFO_0_DE NULL +#define MGBA_GB_COLORS_LABEL_DE NULL +#define MGBA_GB_COLORS_INFO_0_DE NULL +#define OPTION_VAL_GRAYSCALE_DE NULL +#define MGBA_SGB_BORDERS_LABEL_DE NULL +#define MGBA_SGB_BORDERS_INFO_0_DE NULL +#define MGBA_COLOR_CORRECTION_LABEL_DE NULL +#define MGBA_COLOR_CORRECTION_INFO_0_DE NULL +#define OPTION_VAL_AUTO_DE NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_DE NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_DE NULL +#define OPTION_VAL_MIX_DE NULL +#define OPTION_VAL_MIX_SMART_DE NULL +#define OPTION_VAL_LCD_GHOSTING_DE NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_DE NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_DE NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_DE NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_DE NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_DE NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_DE NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_DE NULL +#define OPTION_VAL_5_DE NULL +#define OPTION_VAL_10_DE NULL +#define OPTION_VAL_15_DE NULL +#define OPTION_VAL_20_DE NULL +#define OPTION_VAL_25_DE NULL +#define OPTION_VAL_30_DE NULL +#define OPTION_VAL_35_DE NULL +#define OPTION_VAL_40_DE NULL +#define OPTION_VAL_45_DE NULL +#define OPTION_VAL_50_DE NULL +#define OPTION_VAL_55_DE NULL +#define OPTION_VAL_60_DE NULL +#define OPTION_VAL_65_DE NULL +#define OPTION_VAL_70_DE NULL +#define OPTION_VAL_75_DE NULL +#define OPTION_VAL_80_DE NULL +#define OPTION_VAL_85_DE NULL +#define OPTION_VAL_90_DE NULL +#define OPTION_VAL_95_DE NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_DE NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_DE NULL +#define OPTION_VAL_NO_DE NULL +#define OPTION_VAL_YES_DE NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_DE NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_DE NULL +#define OPTION_VAL_SENSOR_DE NULL +#define MGBA_FORCE_GBP_LABEL_DE NULL +#define MGBA_FORCE_GBP_INFO_0_DE NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_DE NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_DE NULL +#define OPTION_VAL_REMOVE_KNOWN_DE NULL +#define OPTION_VAL_DETECT_AND_REMOVE_DE NULL +#define OPTION_VAL_DON_T_REMOVE_DE NULL +#define MGBA_FRAMESKIP_LABEL_DE NULL +#define MGBA_FRAMESKIP_INFO_0_DE NULL +#define OPTION_VAL_AUTO_THRESHOLD_DE NULL +#define OPTION_VAL_FIXED_INTERVAL_DE NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_DE NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_DE NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_DE NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_DE NULL + +struct retro_core_option_v2_category option_cats_de[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_DE, + CATEGORY_SYSTEM_INFO_0_DE + }, + { + "video", + CATEGORY_VIDEO_LABEL_DE, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_DE +#else + CATEGORY_VIDEO_INFO_1_DE +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_DE, + CATEGORY_AUDIO_INFO_0_DE + }, + { + "input", + CATEGORY_INPUT_LABEL_DE, + CATEGORY_INPUT_INFO_0_DE + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_DE, + CATEGORY_PERFORMANCE_INFO_0_DE + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_de[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_DE, + NULL, + MGBA_GB_MODEL_INFO_0_DE, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_DE }, + { "Game Boy", OPTION_VAL_GAME_BOY_DE }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_DE }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_DE }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_DE }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_DE, + NULL, + MGBA_USE_BIOS_INFO_0_DE, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_DE, + NULL, + MGBA_SKIP_BIOS_INFO_0_DE, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_DE, + NULL, + MGBA_GB_COLORS_INFO_0_DE, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_DE }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_DE, + NULL, + MGBA_SGB_BORDERS_INFO_0_DE, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_DE, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_DE, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_DE }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_DE }, + { "Auto", OPTION_VAL_AUTO_DE }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_DE, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_DE, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_DE }, + { "mix_smart", OPTION_VAL_MIX_SMART_DE }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_DE }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_DE }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_DE, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_DE, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_DE, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_DE, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_DE, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_DE, + NULL, + "audio", + { + { "5", OPTION_VAL_5_DE }, + { "10", OPTION_VAL_10_DE }, + { "15", OPTION_VAL_15_DE }, + { "20", OPTION_VAL_20_DE }, + { "25", OPTION_VAL_25_DE }, + { "30", OPTION_VAL_30_DE }, + { "35", OPTION_VAL_35_DE }, + { "40", OPTION_VAL_40_DE }, + { "45", OPTION_VAL_45_DE }, + { "50", OPTION_VAL_50_DE }, + { "55", OPTION_VAL_55_DE }, + { "60", OPTION_VAL_60_DE }, + { "65", OPTION_VAL_65_DE }, + { "70", OPTION_VAL_70_DE }, + { "75", OPTION_VAL_75_DE }, + { "80", OPTION_VAL_80_DE }, + { "85", OPTION_VAL_85_DE }, + { "90", OPTION_VAL_90_DE }, + { "95", OPTION_VAL_95_DE }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_DE, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_DE, + NULL, + "input", + { + { "no", OPTION_VAL_NO_DE }, + { "yes", OPTION_VAL_YES_DE }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_DE, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_DE, + NULL, + MGBA_FORCE_GBP_INFO_0_DE, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_DE, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_DE, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_DE }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_DE }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_DE }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_DE, + NULL, + MGBA_FRAMESKIP_INFO_0_DE, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_DE }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_DE }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_DE }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_DE, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_DE, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_DE, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_DE, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_de = { + option_cats_de, + option_defs_de +}; + +/* RETRO_LANGUAGE_EL */ + +#define CATEGORY_SYSTEM_LABEL_EL NULL +#define CATEGORY_SYSTEM_INFO_0_EL NULL +#define CATEGORY_VIDEO_LABEL_EL NULL +#define CATEGORY_VIDEO_INFO_0_EL NULL +#define CATEGORY_VIDEO_INFO_1_EL NULL +#define CATEGORY_AUDIO_LABEL_EL NULL +#define CATEGORY_AUDIO_INFO_0_EL NULL +#define CATEGORY_INPUT_LABEL_EL NULL +#define CATEGORY_INPUT_INFO_0_EL NULL +#define CATEGORY_PERFORMANCE_LABEL_EL NULL +#define CATEGORY_PERFORMANCE_INFO_0_EL NULL +#define MGBA_GB_MODEL_LABEL_EL NULL +#define MGBA_GB_MODEL_INFO_0_EL NULL +#define OPTION_VAL_AUTODETECT_EL NULL +#define OPTION_VAL_GAME_BOY_EL NULL +#define OPTION_VAL_SUPER_GAME_BOY_EL NULL +#define OPTION_VAL_GAME_BOY_COLOR_EL NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_EL NULL +#define MGBA_USE_BIOS_LABEL_EL NULL +#define MGBA_USE_BIOS_INFO_0_EL NULL +#define MGBA_SKIP_BIOS_LABEL_EL NULL +#define MGBA_SKIP_BIOS_INFO_0_EL NULL +#define MGBA_GB_COLORS_LABEL_EL NULL +#define MGBA_GB_COLORS_INFO_0_EL NULL +#define OPTION_VAL_GRAYSCALE_EL NULL +#define MGBA_SGB_BORDERS_LABEL_EL NULL +#define MGBA_SGB_BORDERS_INFO_0_EL NULL +#define MGBA_COLOR_CORRECTION_LABEL_EL NULL +#define MGBA_COLOR_CORRECTION_INFO_0_EL NULL +#define OPTION_VAL_AUTO_EL NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_EL NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_EL NULL +#define OPTION_VAL_MIX_EL NULL +#define OPTION_VAL_MIX_SMART_EL NULL +#define OPTION_VAL_LCD_GHOSTING_EL NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_EL NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_EL NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_EL NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_EL NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_EL NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_EL NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_EL NULL +#define OPTION_VAL_5_EL NULL +#define OPTION_VAL_10_EL NULL +#define OPTION_VAL_15_EL NULL +#define OPTION_VAL_20_EL NULL +#define OPTION_VAL_25_EL NULL +#define OPTION_VAL_30_EL NULL +#define OPTION_VAL_35_EL NULL +#define OPTION_VAL_40_EL NULL +#define OPTION_VAL_45_EL NULL +#define OPTION_VAL_50_EL NULL +#define OPTION_VAL_55_EL NULL +#define OPTION_VAL_60_EL NULL +#define OPTION_VAL_65_EL NULL +#define OPTION_VAL_70_EL NULL +#define OPTION_VAL_75_EL NULL +#define OPTION_VAL_80_EL NULL +#define OPTION_VAL_85_EL NULL +#define OPTION_VAL_90_EL NULL +#define OPTION_VAL_95_EL NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_EL NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_EL NULL +#define OPTION_VAL_NO_EL NULL +#define OPTION_VAL_YES_EL NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_EL NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_EL NULL +#define OPTION_VAL_SENSOR_EL NULL +#define MGBA_FORCE_GBP_LABEL_EL NULL +#define MGBA_FORCE_GBP_INFO_0_EL NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_EL NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_EL NULL +#define OPTION_VAL_REMOVE_KNOWN_EL NULL +#define OPTION_VAL_DETECT_AND_REMOVE_EL NULL +#define OPTION_VAL_DON_T_REMOVE_EL NULL +#define MGBA_FRAMESKIP_LABEL_EL NULL +#define MGBA_FRAMESKIP_INFO_0_EL NULL +#define OPTION_VAL_AUTO_THRESHOLD_EL NULL +#define OPTION_VAL_FIXED_INTERVAL_EL NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_EL NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_EL NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_EL NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_EL NULL + +struct retro_core_option_v2_category option_cats_el[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_EL, + CATEGORY_SYSTEM_INFO_0_EL + }, + { + "video", + CATEGORY_VIDEO_LABEL_EL, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_EL +#else + CATEGORY_VIDEO_INFO_1_EL +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_EL, + CATEGORY_AUDIO_INFO_0_EL + }, + { + "input", + CATEGORY_INPUT_LABEL_EL, + CATEGORY_INPUT_INFO_0_EL + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_EL, + CATEGORY_PERFORMANCE_INFO_0_EL + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_el[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_EL, + NULL, + MGBA_GB_MODEL_INFO_0_EL, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_EL }, + { "Game Boy", OPTION_VAL_GAME_BOY_EL }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_EL }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_EL }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_EL }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_EL, + NULL, + MGBA_USE_BIOS_INFO_0_EL, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_EL, + NULL, + MGBA_SKIP_BIOS_INFO_0_EL, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_EL, + NULL, + MGBA_GB_COLORS_INFO_0_EL, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_EL }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_EL, + NULL, + MGBA_SGB_BORDERS_INFO_0_EL, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_EL, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_EL, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_EL }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_EL }, + { "Auto", OPTION_VAL_AUTO_EL }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_EL, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_EL, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_EL }, + { "mix_smart", OPTION_VAL_MIX_SMART_EL }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_EL }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_EL }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_EL, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_EL, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_EL, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_EL, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_EL, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_EL, + NULL, + "audio", + { + { "5", OPTION_VAL_5_EL }, + { "10", OPTION_VAL_10_EL }, + { "15", OPTION_VAL_15_EL }, + { "20", OPTION_VAL_20_EL }, + { "25", OPTION_VAL_25_EL }, + { "30", OPTION_VAL_30_EL }, + { "35", OPTION_VAL_35_EL }, + { "40", OPTION_VAL_40_EL }, + { "45", OPTION_VAL_45_EL }, + { "50", OPTION_VAL_50_EL }, + { "55", OPTION_VAL_55_EL }, + { "60", OPTION_VAL_60_EL }, + { "65", OPTION_VAL_65_EL }, + { "70", OPTION_VAL_70_EL }, + { "75", OPTION_VAL_75_EL }, + { "80", OPTION_VAL_80_EL }, + { "85", OPTION_VAL_85_EL }, + { "90", OPTION_VAL_90_EL }, + { "95", OPTION_VAL_95_EL }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_EL, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_EL, + NULL, + "input", + { + { "no", OPTION_VAL_NO_EL }, + { "yes", OPTION_VAL_YES_EL }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_EL, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_EL, + NULL, + MGBA_FORCE_GBP_INFO_0_EL, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_EL, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_EL, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_EL }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_EL }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_EL }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_EL, + NULL, + MGBA_FRAMESKIP_INFO_0_EL, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_EL }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_EL }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_EL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_EL, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_EL, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_EL, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_EL, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_el = { + option_cats_el, + option_defs_el +}; + +/* RETRO_LANGUAGE_EO */ + +#define CATEGORY_SYSTEM_LABEL_EO NULL +#define CATEGORY_SYSTEM_INFO_0_EO NULL +#define CATEGORY_VIDEO_LABEL_EO NULL +#define CATEGORY_VIDEO_INFO_0_EO NULL +#define CATEGORY_VIDEO_INFO_1_EO NULL +#define CATEGORY_AUDIO_LABEL_EO NULL +#define CATEGORY_AUDIO_INFO_0_EO NULL +#define CATEGORY_INPUT_LABEL_EO NULL +#define CATEGORY_INPUT_INFO_0_EO NULL +#define CATEGORY_PERFORMANCE_LABEL_EO NULL +#define CATEGORY_PERFORMANCE_INFO_0_EO NULL +#define MGBA_GB_MODEL_LABEL_EO NULL +#define MGBA_GB_MODEL_INFO_0_EO NULL +#define OPTION_VAL_AUTODETECT_EO NULL +#define OPTION_VAL_GAME_BOY_EO NULL +#define OPTION_VAL_SUPER_GAME_BOY_EO NULL +#define OPTION_VAL_GAME_BOY_COLOR_EO NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_EO NULL +#define MGBA_USE_BIOS_LABEL_EO NULL +#define MGBA_USE_BIOS_INFO_0_EO NULL +#define MGBA_SKIP_BIOS_LABEL_EO NULL +#define MGBA_SKIP_BIOS_INFO_0_EO NULL +#define MGBA_GB_COLORS_LABEL_EO NULL +#define MGBA_GB_COLORS_INFO_0_EO NULL +#define OPTION_VAL_GRAYSCALE_EO NULL +#define MGBA_SGB_BORDERS_LABEL_EO NULL +#define MGBA_SGB_BORDERS_INFO_0_EO NULL +#define MGBA_COLOR_CORRECTION_LABEL_EO NULL +#define MGBA_COLOR_CORRECTION_INFO_0_EO NULL +#define OPTION_VAL_AUTO_EO NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_EO NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_EO NULL +#define OPTION_VAL_MIX_EO NULL +#define OPTION_VAL_MIX_SMART_EO NULL +#define OPTION_VAL_LCD_GHOSTING_EO NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_EO NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_EO NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_EO NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_EO NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_EO NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_EO NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_EO NULL +#define OPTION_VAL_5_EO NULL +#define OPTION_VAL_10_EO NULL +#define OPTION_VAL_15_EO NULL +#define OPTION_VAL_20_EO NULL +#define OPTION_VAL_25_EO NULL +#define OPTION_VAL_30_EO NULL +#define OPTION_VAL_35_EO NULL +#define OPTION_VAL_40_EO NULL +#define OPTION_VAL_45_EO NULL +#define OPTION_VAL_50_EO NULL +#define OPTION_VAL_55_EO NULL +#define OPTION_VAL_60_EO NULL +#define OPTION_VAL_65_EO NULL +#define OPTION_VAL_70_EO NULL +#define OPTION_VAL_75_EO NULL +#define OPTION_VAL_80_EO NULL +#define OPTION_VAL_85_EO NULL +#define OPTION_VAL_90_EO NULL +#define OPTION_VAL_95_EO NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_EO NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_EO NULL +#define OPTION_VAL_NO_EO NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_EO NULL +#define MGBA_FORCE_GBP_INFO_0_EO NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_EO NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_EO NULL +#define OPTION_VAL_REMOVE_KNOWN_EO NULL +#define OPTION_VAL_DETECT_AND_REMOVE_EO NULL +#define OPTION_VAL_DON_T_REMOVE_EO NULL +#define MGBA_FRAMESKIP_LABEL_EO NULL +#define MGBA_FRAMESKIP_INFO_0_EO NULL +#define OPTION_VAL_AUTO_THRESHOLD_EO NULL +#define OPTION_VAL_FIXED_INTERVAL_EO NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_EO NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_EO NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_EO NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_EO NULL + +struct retro_core_option_v2_category option_cats_eo[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_EO, + CATEGORY_SYSTEM_INFO_0_EO + }, + { + "video", + CATEGORY_VIDEO_LABEL_EO, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_EO +#else + CATEGORY_VIDEO_INFO_1_EO +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_EO, + CATEGORY_AUDIO_INFO_0_EO + }, + { + "input", + CATEGORY_INPUT_LABEL_EO, + CATEGORY_INPUT_INFO_0_EO + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_EO, + CATEGORY_PERFORMANCE_INFO_0_EO + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_eo[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_EO, + NULL, + MGBA_GB_MODEL_INFO_0_EO, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_EO }, + { "Game Boy", OPTION_VAL_GAME_BOY_EO }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_EO }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_EO }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_EO }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_EO, + NULL, + MGBA_USE_BIOS_INFO_0_EO, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_EO, + NULL, + MGBA_SKIP_BIOS_INFO_0_EO, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_EO, + NULL, + MGBA_GB_COLORS_INFO_0_EO, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_EO }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_EO, + NULL, + MGBA_SGB_BORDERS_INFO_0_EO, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_EO, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_EO, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_EO }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_EO }, + { "Auto", OPTION_VAL_AUTO_EO }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_EO, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_EO, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_EO }, + { "mix_smart", OPTION_VAL_MIX_SMART_EO }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_EO }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_EO }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_EO, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_EO, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_EO, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_EO, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_EO, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_EO, + NULL, + "audio", + { + { "5", OPTION_VAL_5_EO }, + { "10", OPTION_VAL_10_EO }, + { "15", OPTION_VAL_15_EO }, + { "20", OPTION_VAL_20_EO }, + { "25", OPTION_VAL_25_EO }, + { "30", OPTION_VAL_30_EO }, + { "35", OPTION_VAL_35_EO }, + { "40", OPTION_VAL_40_EO }, + { "45", OPTION_VAL_45_EO }, + { "50", OPTION_VAL_50_EO }, + { "55", OPTION_VAL_55_EO }, + { "60", OPTION_VAL_60_EO }, + { "65", OPTION_VAL_65_EO }, + { "70", OPTION_VAL_70_EO }, + { "75", OPTION_VAL_75_EO }, + { "80", OPTION_VAL_80_EO }, + { "85", OPTION_VAL_85_EO }, + { "90", OPTION_VAL_90_EO }, + { "95", OPTION_VAL_95_EO }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_EO, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_EO, + NULL, + "input", + { + { "no", OPTION_VAL_NO_EO }, + { "yes", OPTION_VAL_YES_EO }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_EO, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_EO, + NULL, + MGBA_FORCE_GBP_INFO_0_EO, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_EO, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_EO, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_EO }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_EO }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_EO }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_EO, + NULL, + MGBA_FRAMESKIP_INFO_0_EO, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_EO }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_EO }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_EO }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_EO, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_EO, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_EO, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_EO, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_eo = { + option_cats_eo, + option_defs_eo +}; + +/* RETRO_LANGUAGE_ES */ + +#define CATEGORY_SYSTEM_LABEL_ES NULL +#define CATEGORY_SYSTEM_INFO_0_ES NULL +#define CATEGORY_VIDEO_LABEL_ES NULL +#define CATEGORY_VIDEO_INFO_0_ES NULL +#define CATEGORY_VIDEO_INFO_1_ES NULL +#define CATEGORY_AUDIO_LABEL_ES NULL +#define CATEGORY_AUDIO_INFO_0_ES NULL +#define CATEGORY_INPUT_LABEL_ES NULL +#define CATEGORY_INPUT_INFO_0_ES NULL +#define CATEGORY_PERFORMANCE_LABEL_ES NULL +#define CATEGORY_PERFORMANCE_INFO_0_ES NULL +#define MGBA_GB_MODEL_LABEL_ES "Modelo de Game Boy (es necesario reiniciar)" +#define MGBA_GB_MODEL_INFO_0_ES "Carga el contenido cargado utilizando un modelo de Game Boy específico. La opción «Autodetectar» seleccionará el modelo más adecuado para el juego actual." +#define OPTION_VAL_AUTODETECT_ES "Autodetectar" +#define OPTION_VAL_GAME_BOY_ES NULL +#define OPTION_VAL_SUPER_GAME_BOY_ES NULL +#define OPTION_VAL_GAME_BOY_COLOR_ES NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_ES NULL +#define MGBA_USE_BIOS_LABEL_ES "Utilizar BIOS en caso de encontrarla (es necesario reiniciar)" +#define MGBA_USE_BIOS_INFO_0_ES "Si se encuentran en el directorio de sistema de RetroArch, se utilizarán los archivos de la BIOS y el bootloader oficiales para emular el hardware." +#define MGBA_SKIP_BIOS_LABEL_ES "Omitir introducción de la BIOS (es necesario reiniciar)" +#define MGBA_SKIP_BIOS_INFO_0_ES "Al utilizar una BIOS y bootloader oficiales, omitirá la animación del logotipo al arrancar. Esta opción será ignorada si «Utilizar BIOS en caso de encontrarla» está desactivada." +#define MGBA_GB_COLORS_LABEL_ES NULL +#define MGBA_GB_COLORS_INFO_0_ES NULL +#define OPTION_VAL_GRAYSCALE_ES NULL +#define MGBA_SGB_BORDERS_LABEL_ES "Utilizar bordes de Super Game Boy (es necesario reiniciar)" +#define MGBA_SGB_BORDERS_INFO_0_ES "Muestra los bordes de Super Game Boy al ejecutar juegos compatibles con este sistema." +#define MGBA_COLOR_CORRECTION_LABEL_ES "Corrección de color" +#define MGBA_COLOR_CORRECTION_INFO_0_ES "Ajusta los colores de la salida de imagen para que esta coincida con la que mostraría un hardware real de GBA/GBC." +#define OPTION_VAL_AUTO_ES "Automática" +#define MGBA_INTERFRAME_BLENDING_LABEL_ES "Fusión interfotograma" +#define MGBA_INTERFRAME_BLENDING_INFO_0_ES "Simula el efecto fantasma de una pantalla LCD. «Sencilla» mezcla los fotogramas previos y posteriores en un 50%. «Inteligente» intenta detectar los parpadeos de pantalla y solo lleva a cabo la fusión del 50% en los fotogramas afectados. «Efecto fantasma de LCD» imita los tiempos de respuesta naturales de una pantalla LCD combinando varios fotogramas guardados en el búfer. La fusión sencilla o inteligente es necesaria en aquellos juegos que aprovechan de forma agresiva el efecto fantasma de la pantalla LCD para los efectos de transparencia (Wave Race, Chikyuu Kaihou Gun ZAS, F-Zero, la saga Boktai...)." +#define OPTION_VAL_MIX_ES "Sencilla" +#define OPTION_VAL_MIX_SMART_ES "Inteligente" +#define OPTION_VAL_LCD_GHOSTING_ES "Efecto fantasma de LCD (preciso)" +#define OPTION_VAL_LCD_GHOSTING_FAST_ES "Efecto fantasma de LCD (rápido)" +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_ES NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_ES NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_ES NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_ES NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_ES NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_ES NULL +#define OPTION_VAL_5_ES NULL +#define OPTION_VAL_10_ES NULL +#define OPTION_VAL_15_ES NULL +#define OPTION_VAL_20_ES NULL +#define OPTION_VAL_25_ES NULL +#define OPTION_VAL_30_ES NULL +#define OPTION_VAL_35_ES NULL +#define OPTION_VAL_40_ES NULL +#define OPTION_VAL_45_ES NULL +#define OPTION_VAL_50_ES NULL +#define OPTION_VAL_55_ES NULL +#define OPTION_VAL_60_ES NULL +#define OPTION_VAL_65_ES NULL +#define OPTION_VAL_70_ES NULL +#define OPTION_VAL_75_ES NULL +#define OPTION_VAL_80_ES NULL +#define OPTION_VAL_85_ES NULL +#define OPTION_VAL_90_ES NULL +#define OPTION_VAL_95_ES NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_ES "Permitir entradas direccionales opuestas" +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_ES "Permite pulsar, alternar rápidamente o mantener las direcciones hacia la izquierda y hacia la derecha (o hacia arriba y abajo) al mismo tiempo. Puede provocar defectos en el movimiento." +#define OPTION_VAL_NO_ES NULL +#define OPTION_VAL_YES_ES NULL +#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_FORCE_GBP_LABEL_ES "Vibración de Game Boy Player (es necesario reiniciar)" +#define MGBA_FORCE_GBP_INFO_0_ES "Permite que aquellos juegos compatibles con el logotipo de arranque de Game Boy Player hagan vibrar el mando. Debido a el 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" +#define MGBA_IDLE_OPTIMIZATION_INFO_0_ES "Minimiza la carga del sistema optimizando los llamados bucles de inactividad: secciones de código en las que no ocurre nada, pero la CPU se ejecuta a máxima velocidad (como cuando un vehículo es revolucionado sin tener la marcha puesta). Mejora el rendimiento y debería activarse en hardware de bajas prestaciones." +#define OPTION_VAL_REMOVE_KNOWN_ES "Eliminar bucles conocidos" +#define OPTION_VAL_DETECT_AND_REMOVE_ES "Detectar y eliminar" +#define OPTION_VAL_DON_T_REMOVE_ES "No eliminar" +#define MGBA_FRAMESKIP_LABEL_ES "Omisión de fotogramas" +#define MGBA_FRAMESKIP_INFO_0_ES "Omite fotogramas para no saturar el búfer de audio (chasquidos en el sonido). Mejora el rendimiento a costa de perder fluidez visual. El valor Automática omite fotogramas según lo aconseje el front-end. El valor Automática (umbral) utiliza el ajuste Umbral de omisión de fotogramas (%). El valor «Intervalos fijos» utiliza el ajuste «Intervalo de omisión de fotogramas»." +#define OPTION_VAL_AUTO_THRESHOLD_ES "Automática (umbral)" +#define OPTION_VAL_FIXED_INTERVAL_ES "Intervalos fijos" +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_ES "Umbral de omisión de fotogramas (%)" +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_ES "Cuando la omisión de fotogramas esté configurada como Automática (umbral), este ajuste especifica el umbral de ocupación del búfer de audio (en porcentaje) por el que se omitirán fotogramas si el valor es inferior. Un valor más elevado reduce el riesgo de chasquidos omitiendo fotogramas con una mayor frecuencia." +#define MGBA_FRAMESKIP_INTERVAL_LABEL_ES "Intervalo de omisión de fotogramas" +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_ES "Cuando la omisión de fotogramas esté configurada como Intervalos fijos, el valor que se asigne aquí será el número de fotogramas omitidos una vez se haya renderizado un fotograma. Por ejemplo: «0» = 60 FPS, «1» = 30 FPS, «2» = 15 FPS, etcétera." + +struct retro_core_option_v2_category option_cats_es[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_ES, + CATEGORY_SYSTEM_INFO_0_ES + }, + { + "video", + CATEGORY_VIDEO_LABEL_ES, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_ES +#else + CATEGORY_VIDEO_INFO_1_ES +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_ES, + CATEGORY_AUDIO_INFO_0_ES + }, + { + "input", + CATEGORY_INPUT_LABEL_ES, + CATEGORY_INPUT_INFO_0_ES + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_ES, + CATEGORY_PERFORMANCE_INFO_0_ES + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_es[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_ES, + NULL, + MGBA_GB_MODEL_INFO_0_ES, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_ES }, + { "Game Boy", OPTION_VAL_GAME_BOY_ES }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_ES }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_ES }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_ES }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_ES, + NULL, + MGBA_USE_BIOS_INFO_0_ES, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_ES, + NULL, + MGBA_SKIP_BIOS_INFO_0_ES, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_ES, + NULL, + MGBA_GB_COLORS_INFO_0_ES, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_ES }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_ES, + NULL, + MGBA_SGB_BORDERS_INFO_0_ES, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_ES, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_ES, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_ES }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_ES }, + { "Auto", OPTION_VAL_AUTO_ES }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_ES, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_ES, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_ES }, + { "mix_smart", OPTION_VAL_MIX_SMART_ES }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_ES }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_ES }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_ES, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_ES, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_ES, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_ES, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_ES, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_ES, + NULL, + "audio", + { + { "5", OPTION_VAL_5_ES }, + { "10", OPTION_VAL_10_ES }, + { "15", OPTION_VAL_15_ES }, + { "20", OPTION_VAL_20_ES }, + { "25", OPTION_VAL_25_ES }, + { "30", OPTION_VAL_30_ES }, + { "35", OPTION_VAL_35_ES }, + { "40", OPTION_VAL_40_ES }, + { "45", OPTION_VAL_45_ES }, + { "50", OPTION_VAL_50_ES }, + { "55", OPTION_VAL_55_ES }, + { "60", OPTION_VAL_60_ES }, + { "65", OPTION_VAL_65_ES }, + { "70", OPTION_VAL_70_ES }, + { "75", OPTION_VAL_75_ES }, + { "80", OPTION_VAL_80_ES }, + { "85", OPTION_VAL_85_ES }, + { "90", OPTION_VAL_90_ES }, + { "95", OPTION_VAL_95_ES }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_ES, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_ES, + NULL, + "input", + { + { "no", OPTION_VAL_NO_ES }, + { "yes", OPTION_VAL_YES_ES }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_ES, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_ES, + NULL, + MGBA_FORCE_GBP_INFO_0_ES, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_ES, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_ES, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_ES }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_ES }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_ES }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_ES, + NULL, + MGBA_FRAMESKIP_INFO_0_ES, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_ES }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_ES }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_ES }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_ES, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_ES, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_ES, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_ES, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; struct retro_core_options_v2 options_es = { option_cats_es, option_defs_es }; -/* RETRO_LANGUAGE_GERMAN */ +/* RETRO_LANGUAGE_FA */ -/* RETRO_LANGUAGE_ITALIAN */ +#define CATEGORY_SYSTEM_LABEL_FA NULL +#define CATEGORY_SYSTEM_INFO_0_FA NULL +#define CATEGORY_VIDEO_LABEL_FA NULL +#define CATEGORY_VIDEO_INFO_0_FA NULL +#define CATEGORY_VIDEO_INFO_1_FA NULL +#define CATEGORY_AUDIO_LABEL_FA NULL +#define CATEGORY_AUDIO_INFO_0_FA NULL +#define CATEGORY_INPUT_LABEL_FA NULL +#define CATEGORY_INPUT_INFO_0_FA NULL +#define CATEGORY_PERFORMANCE_LABEL_FA NULL +#define CATEGORY_PERFORMANCE_INFO_0_FA NULL +#define MGBA_GB_MODEL_LABEL_FA NULL +#define MGBA_GB_MODEL_INFO_0_FA NULL +#define OPTION_VAL_AUTODETECT_FA NULL +#define OPTION_VAL_GAME_BOY_FA NULL +#define OPTION_VAL_SUPER_GAME_BOY_FA NULL +#define OPTION_VAL_GAME_BOY_COLOR_FA NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_FA NULL +#define MGBA_USE_BIOS_LABEL_FA NULL +#define MGBA_USE_BIOS_INFO_0_FA NULL +#define MGBA_SKIP_BIOS_LABEL_FA NULL +#define MGBA_SKIP_BIOS_INFO_0_FA NULL +#define MGBA_GB_COLORS_LABEL_FA NULL +#define MGBA_GB_COLORS_INFO_0_FA NULL +#define OPTION_VAL_GRAYSCALE_FA NULL +#define MGBA_SGB_BORDERS_LABEL_FA NULL +#define MGBA_SGB_BORDERS_INFO_0_FA NULL +#define MGBA_COLOR_CORRECTION_LABEL_FA NULL +#define MGBA_COLOR_CORRECTION_INFO_0_FA NULL +#define OPTION_VAL_AUTO_FA NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_FA NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_FA NULL +#define OPTION_VAL_MIX_FA NULL +#define OPTION_VAL_MIX_SMART_FA NULL +#define OPTION_VAL_LCD_GHOSTING_FA NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_FA NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_FA NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_FA NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_FA NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_FA NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_FA NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_FA NULL +#define OPTION_VAL_5_FA NULL +#define OPTION_VAL_10_FA NULL +#define OPTION_VAL_15_FA NULL +#define OPTION_VAL_20_FA NULL +#define OPTION_VAL_25_FA NULL +#define OPTION_VAL_30_FA NULL +#define OPTION_VAL_35_FA NULL +#define OPTION_VAL_40_FA NULL +#define OPTION_VAL_45_FA NULL +#define OPTION_VAL_50_FA NULL +#define OPTION_VAL_55_FA NULL +#define OPTION_VAL_60_FA NULL +#define OPTION_VAL_65_FA NULL +#define OPTION_VAL_70_FA NULL +#define OPTION_VAL_75_FA NULL +#define OPTION_VAL_80_FA NULL +#define OPTION_VAL_85_FA NULL +#define OPTION_VAL_90_FA NULL +#define OPTION_VAL_95_FA NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_FA NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_FA NULL +#define OPTION_VAL_NO_FA NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_FA NULL +#define MGBA_FORCE_GBP_INFO_0_FA NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_FA NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_FA NULL +#define OPTION_VAL_REMOVE_KNOWN_FA NULL +#define OPTION_VAL_DETECT_AND_REMOVE_FA NULL +#define OPTION_VAL_DON_T_REMOVE_FA NULL +#define MGBA_FRAMESKIP_LABEL_FA NULL +#define MGBA_FRAMESKIP_INFO_0_FA NULL +#define OPTION_VAL_AUTO_THRESHOLD_FA NULL +#define OPTION_VAL_FIXED_INTERVAL_FA NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_FA NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_FA NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_FA NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_FA NULL -struct retro_core_option_v2_category option_cats_it[] = { +struct retro_core_option_v2_category option_cats_fa[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_FA, + CATEGORY_SYSTEM_INFO_0_FA + }, + { + "video", + CATEGORY_VIDEO_LABEL_FA, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_FA +#else + CATEGORY_VIDEO_INFO_1_FA +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_FA, + CATEGORY_AUDIO_INFO_0_FA + }, + { + "input", + CATEGORY_INPUT_LABEL_FA, + CATEGORY_INPUT_INFO_0_FA + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_FA, + CATEGORY_PERFORMANCE_INFO_0_FA + }, { NULL, NULL, NULL }, }; - -struct retro_core_option_v2_definition option_defs_it[] = { - { - "mgba_solar_sensor_level", - "Livello Sensore Solare", - NULL, - "Imposta l'intensità solare dell'ambiente. Può essere usato dai giochi che includono un sensore solare nelle loro cartucce, es.: la serie Boktai.", - NULL, - NULL, - { - { NULL, NULL }, - }, - NULL - }, - { - "mgba_allow_opposing_directions", - "Permetti Input Direzionali Opposti", - NULL, - "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.", - NULL, - NULL, - { - { NULL, NULL }, - }, - NULL - }, +struct retro_core_option_v2_definition option_defs_fa[] = { { "mgba_gb_model", - "Modello Game Boy (richiede riavvio)", - NULL, - "Esegue il contenuto caricato con un modello specifico di Game Boy. 'Rivela Automaticamente' selezionerà il modello più appropriato per il gioco attuale.", + MGBA_GB_MODEL_LABEL_FA, NULL, + MGBA_GB_MODEL_INFO_0_FA, NULL, + "system", { - { "Autodetect", "Rivela Automaticamente" }, + { "Autodetect", OPTION_VAL_AUTODETECT_FA }, + { "Game Boy", OPTION_VAL_GAME_BOY_FA }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_FA }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_FA }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_FA }, { NULL, NULL }, }, - NULL + "Autodetect" }, { "mgba_use_bios", - "Usa il File BIOS se Presente (richiede riavvio)", - NULL, - "Usa il BIOS/bootloader ufficiale per hardware emulato, se presente nella cartella di sistema di RetroArch.", + MGBA_USE_BIOS_LABEL_FA, NULL, + MGBA_USE_BIOS_INFO_0_FA, NULL, + "system", { + { "ON", "enabled" }, + { "OFF", "disabled" }, { NULL, NULL }, }, - NULL + "ON" }, { "mgba_skip_bios", - "Salta Intro BIOS (richiede riavvio)", - NULL, - "Salta il filmato del logo di avvio se si usa un BIOS/bootloader ufficiale. Questa impostazione è ignorata se 'Usa il file BIOS se presente' è disabilitato.", + MGBA_SKIP_BIOS_LABEL_FA, NULL, + MGBA_SKIP_BIOS_INFO_0_FA, NULL, + "system", { + { "OFF", "disabled" }, + { "ON", "enabled" }, { NULL, NULL }, }, - NULL + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_FA, + NULL, + MGBA_GB_COLORS_INFO_0_FA, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_FA }, + { NULL, NULL }, + }, + "Grayscale" }, { "mgba_sgb_borders", - "Utilizza i Bordi Super Game Boy (richiede riavvio)", - NULL, - "Visualizza i bordi del Super Game Boy quando apri un gioco potenziato dal Super Game Boy.", + MGBA_SGB_BORDERS_LABEL_FA, NULL, + MGBA_SGB_BORDERS_INFO_0_FA, NULL, + "video", { + { "ON", "enabled" }, + { "OFF", "disabled" }, { NULL, NULL }, }, - NULL - }, - { - "mgba_idle_optimization", - "Rimozione Idle Loop", - NULL, - "Riduce il carico del sistema ottimizzando gli 'idle-loops' - sezione del codice dove non accade nulla, ma la CPU lavora a velocità massima. Migliora le prestazioni, è consigliato abilitarlo su hardware di bassa fascia.", - NULL, - NULL, - { - { "Remove Known", "Rimuovi Conosciuti" }, - { "Detect and Remove", "Rileva e Rimuovi" }, - { "Don't Remove", "Non Rimuovere" }, - { NULL, NULL }, - }, - NULL - }, - { - "mgba_frameskip", - "Salta Frame", - NULL, - "Salta dei frame per migliorare le prestazioni a costo della fluidità dell'immagine. Il valore impostato qui è il numero dei frame rimosso dopo che un frame sia stato renderizzato - ovvero '0' = 60fps, '1' = 30fps, '2' = 15fps, ecc.", - NULL, - NULL, - { - { NULL, NULL }, - }, - NULL + "ON" }, #if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) { "mgba_color_correction", - "Correzione Colore", - NULL, - "Regola i colori per corrispondere lo schermo di GBA/GBC reali.", + MGBA_COLOR_CORRECTION_LABEL_FA, NULL, + MGBA_COLOR_CORRECTION_INFO_0_FA, NULL, + "video", { - { "GBA", "Game Boy Advance" }, - { "GBC", "Game Boy Color" }, + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_FA }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_FA }, + { "Auto", OPTION_VAL_AUTO_FA }, { NULL, NULL }, }, - NULL + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_FA, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_FA, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_FA }, + { "mix_smart", OPTION_VAL_MIX_SMART_FA }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_FA }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_FA }, + { NULL, NULL }, + }, + "OFF" }, #endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_FA, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_FA, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_FA, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_FA, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_FA, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_FA, + NULL, + "audio", + { + { "5", OPTION_VAL_5_FA }, + { "10", OPTION_VAL_10_FA }, + { "15", OPTION_VAL_15_FA }, + { "20", OPTION_VAL_20_FA }, + { "25", OPTION_VAL_25_FA }, + { "30", OPTION_VAL_30_FA }, + { "35", OPTION_VAL_35_FA }, + { "40", OPTION_VAL_40_FA }, + { "45", OPTION_VAL_45_FA }, + { "50", OPTION_VAL_50_FA }, + { "55", OPTION_VAL_55_FA }, + { "60", OPTION_VAL_60_FA }, + { "65", OPTION_VAL_65_FA }, + { "70", OPTION_VAL_70_FA }, + { "75", OPTION_VAL_75_FA }, + { "80", OPTION_VAL_80_FA }, + { "85", OPTION_VAL_85_FA }, + { "90", OPTION_VAL_90_FA }, + { "95", OPTION_VAL_95_FA }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_FA, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_FA, + NULL, + "input", + { + { "no", OPTION_VAL_NO_FA }, + { "yes", OPTION_VAL_YES_FA }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_FA, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_FA, + NULL, + MGBA_FORCE_GBP_INFO_0_FA, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_FA, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_FA, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_FA }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_FA }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_FA }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_FA, + NULL, + MGBA_FRAMESKIP_INFO_0_FA, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_FA }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_FA }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_FA }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_FA, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_FA, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_FA, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_FA, + NULL, + "performance", + { + { "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" + }, { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, }; +struct retro_core_options_v2 options_fa = { + option_cats_fa, + option_defs_fa +}; +/* RETRO_LANGUAGE_FI */ + +#define CATEGORY_SYSTEM_LABEL_FI NULL +#define CATEGORY_SYSTEM_INFO_0_FI NULL +#define CATEGORY_VIDEO_LABEL_FI NULL +#define CATEGORY_VIDEO_INFO_0_FI NULL +#define CATEGORY_VIDEO_INFO_1_FI NULL +#define CATEGORY_AUDIO_LABEL_FI NULL +#define CATEGORY_AUDIO_INFO_0_FI NULL +#define CATEGORY_INPUT_LABEL_FI NULL +#define CATEGORY_INPUT_INFO_0_FI NULL +#define CATEGORY_PERFORMANCE_LABEL_FI NULL +#define CATEGORY_PERFORMANCE_INFO_0_FI NULL +#define MGBA_GB_MODEL_LABEL_FI NULL +#define MGBA_GB_MODEL_INFO_0_FI NULL +#define OPTION_VAL_AUTODETECT_FI NULL +#define OPTION_VAL_GAME_BOY_FI NULL +#define OPTION_VAL_SUPER_GAME_BOY_FI NULL +#define OPTION_VAL_GAME_BOY_COLOR_FI NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_FI NULL +#define MGBA_USE_BIOS_LABEL_FI NULL +#define MGBA_USE_BIOS_INFO_0_FI NULL +#define MGBA_SKIP_BIOS_LABEL_FI NULL +#define MGBA_SKIP_BIOS_INFO_0_FI NULL +#define MGBA_GB_COLORS_LABEL_FI NULL +#define MGBA_GB_COLORS_INFO_0_FI NULL +#define OPTION_VAL_GRAYSCALE_FI NULL +#define MGBA_SGB_BORDERS_LABEL_FI NULL +#define MGBA_SGB_BORDERS_INFO_0_FI NULL +#define MGBA_COLOR_CORRECTION_LABEL_FI NULL +#define MGBA_COLOR_CORRECTION_INFO_0_FI NULL +#define OPTION_VAL_AUTO_FI NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_FI NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_FI NULL +#define OPTION_VAL_MIX_FI NULL +#define OPTION_VAL_MIX_SMART_FI NULL +#define OPTION_VAL_LCD_GHOSTING_FI NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_FI NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_FI NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_FI NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_FI NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_FI NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_FI NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_FI NULL +#define OPTION_VAL_5_FI NULL +#define OPTION_VAL_10_FI NULL +#define OPTION_VAL_15_FI NULL +#define OPTION_VAL_20_FI NULL +#define OPTION_VAL_25_FI NULL +#define OPTION_VAL_30_FI NULL +#define OPTION_VAL_35_FI NULL +#define OPTION_VAL_40_FI NULL +#define OPTION_VAL_45_FI NULL +#define OPTION_VAL_50_FI NULL +#define OPTION_VAL_55_FI NULL +#define OPTION_VAL_60_FI NULL +#define OPTION_VAL_65_FI NULL +#define OPTION_VAL_70_FI NULL +#define OPTION_VAL_75_FI NULL +#define OPTION_VAL_80_FI NULL +#define OPTION_VAL_85_FI NULL +#define OPTION_VAL_90_FI NULL +#define OPTION_VAL_95_FI NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_FI NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_FI NULL +#define OPTION_VAL_NO_FI NULL +#define OPTION_VAL_YES_FI NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FI NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FI NULL +#define OPTION_VAL_SENSOR_FI NULL +#define MGBA_FORCE_GBP_LABEL_FI NULL +#define MGBA_FORCE_GBP_INFO_0_FI NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_FI NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_FI NULL +#define OPTION_VAL_REMOVE_KNOWN_FI NULL +#define OPTION_VAL_DETECT_AND_REMOVE_FI NULL +#define OPTION_VAL_DON_T_REMOVE_FI NULL +#define MGBA_FRAMESKIP_LABEL_FI NULL +#define MGBA_FRAMESKIP_INFO_0_FI NULL +#define OPTION_VAL_AUTO_THRESHOLD_FI NULL +#define OPTION_VAL_FIXED_INTERVAL_FI NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_FI NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_FI NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_FI NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_FI NULL + +struct retro_core_option_v2_category option_cats_fi[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_FI, + CATEGORY_SYSTEM_INFO_0_FI + }, + { + "video", + CATEGORY_VIDEO_LABEL_FI, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_FI +#else + CATEGORY_VIDEO_INFO_1_FI +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_FI, + CATEGORY_AUDIO_INFO_0_FI + }, + { + "input", + CATEGORY_INPUT_LABEL_FI, + CATEGORY_INPUT_INFO_0_FI + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_FI, + CATEGORY_PERFORMANCE_INFO_0_FI + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_fi[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_FI, + NULL, + MGBA_GB_MODEL_INFO_0_FI, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_FI }, + { "Game Boy", OPTION_VAL_GAME_BOY_FI }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_FI }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_FI }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_FI }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_FI, + NULL, + MGBA_USE_BIOS_INFO_0_FI, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_FI, + NULL, + MGBA_SKIP_BIOS_INFO_0_FI, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_FI, + NULL, + MGBA_GB_COLORS_INFO_0_FI, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_FI }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_FI, + NULL, + MGBA_SGB_BORDERS_INFO_0_FI, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_FI, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_FI, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_FI }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_FI }, + { "Auto", OPTION_VAL_AUTO_FI }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_FI, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_FI, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_FI }, + { "mix_smart", OPTION_VAL_MIX_SMART_FI }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_FI }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_FI }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_FI, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_FI, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_FI, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_FI, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_FI, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_FI, + NULL, + "audio", + { + { "5", OPTION_VAL_5_FI }, + { "10", OPTION_VAL_10_FI }, + { "15", OPTION_VAL_15_FI }, + { "20", OPTION_VAL_20_FI }, + { "25", OPTION_VAL_25_FI }, + { "30", OPTION_VAL_30_FI }, + { "35", OPTION_VAL_35_FI }, + { "40", OPTION_VAL_40_FI }, + { "45", OPTION_VAL_45_FI }, + { "50", OPTION_VAL_50_FI }, + { "55", OPTION_VAL_55_FI }, + { "60", OPTION_VAL_60_FI }, + { "65", OPTION_VAL_65_FI }, + { "70", OPTION_VAL_70_FI }, + { "75", OPTION_VAL_75_FI }, + { "80", OPTION_VAL_80_FI }, + { "85", OPTION_VAL_85_FI }, + { "90", OPTION_VAL_90_FI }, + { "95", OPTION_VAL_95_FI }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_FI, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_FI, + NULL, + "input", + { + { "no", OPTION_VAL_NO_FI }, + { "yes", OPTION_VAL_YES_FI }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_FI, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_FI, + NULL, + MGBA_FORCE_GBP_INFO_0_FI, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_FI, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_FI, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_FI }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_FI }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_FI }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_FI, + NULL, + MGBA_FRAMESKIP_INFO_0_FI, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_FI }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_FI }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_FI }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_FI, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_FI, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_FI, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_FI, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_fi = { + option_cats_fi, + option_defs_fi +}; + +/* RETRO_LANGUAGE_FR */ + +#define CATEGORY_SYSTEM_LABEL_FR NULL +#define CATEGORY_SYSTEM_INFO_0_FR NULL +#define CATEGORY_VIDEO_LABEL_FR NULL +#define CATEGORY_VIDEO_INFO_0_FR NULL +#define CATEGORY_VIDEO_INFO_1_FR NULL +#define CATEGORY_AUDIO_LABEL_FR NULL +#define CATEGORY_AUDIO_INFO_0_FR NULL +#define CATEGORY_INPUT_LABEL_FR NULL +#define CATEGORY_INPUT_INFO_0_FR NULL +#define CATEGORY_PERFORMANCE_LABEL_FR NULL +#define CATEGORY_PERFORMANCE_INFO_0_FR NULL +#define MGBA_GB_MODEL_LABEL_FR NULL +#define MGBA_GB_MODEL_INFO_0_FR NULL +#define OPTION_VAL_AUTODETECT_FR NULL +#define OPTION_VAL_GAME_BOY_FR NULL +#define OPTION_VAL_SUPER_GAME_BOY_FR NULL +#define OPTION_VAL_GAME_BOY_COLOR_FR NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_FR NULL +#define MGBA_USE_BIOS_LABEL_FR NULL +#define MGBA_USE_BIOS_INFO_0_FR NULL +#define MGBA_SKIP_BIOS_LABEL_FR NULL +#define MGBA_SKIP_BIOS_INFO_0_FR NULL +#define MGBA_GB_COLORS_LABEL_FR NULL +#define MGBA_GB_COLORS_INFO_0_FR NULL +#define OPTION_VAL_GRAYSCALE_FR NULL +#define MGBA_SGB_BORDERS_LABEL_FR NULL +#define MGBA_SGB_BORDERS_INFO_0_FR NULL +#define MGBA_COLOR_CORRECTION_LABEL_FR NULL +#define MGBA_COLOR_CORRECTION_INFO_0_FR NULL +#define OPTION_VAL_AUTO_FR NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_FR NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_FR NULL +#define OPTION_VAL_MIX_FR NULL +#define OPTION_VAL_MIX_SMART_FR NULL +#define OPTION_VAL_LCD_GHOSTING_FR NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_FR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_FR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_FR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_FR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_FR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_FR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_FR NULL +#define OPTION_VAL_5_FR NULL +#define OPTION_VAL_10_FR NULL +#define OPTION_VAL_15_FR NULL +#define OPTION_VAL_20_FR NULL +#define OPTION_VAL_25_FR NULL +#define OPTION_VAL_30_FR NULL +#define OPTION_VAL_35_FR NULL +#define OPTION_VAL_40_FR NULL +#define OPTION_VAL_45_FR NULL +#define OPTION_VAL_50_FR NULL +#define OPTION_VAL_55_FR NULL +#define OPTION_VAL_60_FR NULL +#define OPTION_VAL_65_FR NULL +#define OPTION_VAL_70_FR NULL +#define OPTION_VAL_75_FR NULL +#define OPTION_VAL_80_FR NULL +#define OPTION_VAL_85_FR NULL +#define OPTION_VAL_90_FR NULL +#define OPTION_VAL_95_FR NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_FR NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_FR NULL +#define OPTION_VAL_NO_FR NULL +#define OPTION_VAL_YES_FR NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_FR NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_FR NULL +#define OPTION_VAL_SENSOR_FR NULL +#define MGBA_FORCE_GBP_LABEL_FR NULL +#define MGBA_FORCE_GBP_INFO_0_FR NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_FR NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_FR NULL +#define OPTION_VAL_REMOVE_KNOWN_FR NULL +#define OPTION_VAL_DETECT_AND_REMOVE_FR NULL +#define OPTION_VAL_DON_T_REMOVE_FR NULL +#define MGBA_FRAMESKIP_LABEL_FR NULL +#define MGBA_FRAMESKIP_INFO_0_FR NULL +#define OPTION_VAL_AUTO_THRESHOLD_FR NULL +#define OPTION_VAL_FIXED_INTERVAL_FR NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_FR NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_FR NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_FR NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_FR NULL + +struct retro_core_option_v2_category option_cats_fr[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_FR, + CATEGORY_SYSTEM_INFO_0_FR + }, + { + "video", + CATEGORY_VIDEO_LABEL_FR, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_FR +#else + CATEGORY_VIDEO_INFO_1_FR +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_FR, + CATEGORY_AUDIO_INFO_0_FR + }, + { + "input", + CATEGORY_INPUT_LABEL_FR, + CATEGORY_INPUT_INFO_0_FR + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_FR, + CATEGORY_PERFORMANCE_INFO_0_FR + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_fr[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_FR, + NULL, + MGBA_GB_MODEL_INFO_0_FR, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_FR }, + { "Game Boy", OPTION_VAL_GAME_BOY_FR }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_FR }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_FR }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_FR }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_FR, + NULL, + MGBA_USE_BIOS_INFO_0_FR, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_FR, + NULL, + MGBA_SKIP_BIOS_INFO_0_FR, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_FR, + NULL, + MGBA_GB_COLORS_INFO_0_FR, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_FR }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_FR, + NULL, + MGBA_SGB_BORDERS_INFO_0_FR, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_FR, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_FR, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_FR }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_FR }, + { "Auto", OPTION_VAL_AUTO_FR }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_FR, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_FR, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_FR }, + { "mix_smart", OPTION_VAL_MIX_SMART_FR }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_FR }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_FR }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_FR, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_FR, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_FR, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_FR, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_FR, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_FR, + NULL, + "audio", + { + { "5", OPTION_VAL_5_FR }, + { "10", OPTION_VAL_10_FR }, + { "15", OPTION_VAL_15_FR }, + { "20", OPTION_VAL_20_FR }, + { "25", OPTION_VAL_25_FR }, + { "30", OPTION_VAL_30_FR }, + { "35", OPTION_VAL_35_FR }, + { "40", OPTION_VAL_40_FR }, + { "45", OPTION_VAL_45_FR }, + { "50", OPTION_VAL_50_FR }, + { "55", OPTION_VAL_55_FR }, + { "60", OPTION_VAL_60_FR }, + { "65", OPTION_VAL_65_FR }, + { "70", OPTION_VAL_70_FR }, + { "75", OPTION_VAL_75_FR }, + { "80", OPTION_VAL_80_FR }, + { "85", OPTION_VAL_85_FR }, + { "90", OPTION_VAL_90_FR }, + { "95", OPTION_VAL_95_FR }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_FR, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_FR, + NULL, + "input", + { + { "no", OPTION_VAL_NO_FR }, + { "yes", OPTION_VAL_YES_FR }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_FR, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_FR, + NULL, + MGBA_FORCE_GBP_INFO_0_FR, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_FR, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_FR, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_FR }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_FR }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_FR }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_FR, + NULL, + MGBA_FRAMESKIP_INFO_0_FR, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_FR }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_FR }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_FR }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_FR, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_FR, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_FR, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_FR, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_fr = { + option_cats_fr, + option_defs_fr +}; + +/* RETRO_LANGUAGE_GL */ + +#define CATEGORY_SYSTEM_LABEL_GL NULL +#define CATEGORY_SYSTEM_INFO_0_GL NULL +#define CATEGORY_VIDEO_LABEL_GL NULL +#define CATEGORY_VIDEO_INFO_0_GL NULL +#define CATEGORY_VIDEO_INFO_1_GL NULL +#define CATEGORY_AUDIO_LABEL_GL NULL +#define CATEGORY_AUDIO_INFO_0_GL NULL +#define CATEGORY_INPUT_LABEL_GL NULL +#define CATEGORY_INPUT_INFO_0_GL NULL +#define CATEGORY_PERFORMANCE_LABEL_GL NULL +#define CATEGORY_PERFORMANCE_INFO_0_GL NULL +#define MGBA_GB_MODEL_LABEL_GL NULL +#define MGBA_GB_MODEL_INFO_0_GL NULL +#define OPTION_VAL_AUTODETECT_GL NULL +#define OPTION_VAL_GAME_BOY_GL NULL +#define OPTION_VAL_SUPER_GAME_BOY_GL NULL +#define OPTION_VAL_GAME_BOY_COLOR_GL NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_GL NULL +#define MGBA_USE_BIOS_LABEL_GL NULL +#define MGBA_USE_BIOS_INFO_0_GL NULL +#define MGBA_SKIP_BIOS_LABEL_GL NULL +#define MGBA_SKIP_BIOS_INFO_0_GL NULL +#define MGBA_GB_COLORS_LABEL_GL NULL +#define MGBA_GB_COLORS_INFO_0_GL NULL +#define OPTION_VAL_GRAYSCALE_GL NULL +#define MGBA_SGB_BORDERS_LABEL_GL NULL +#define MGBA_SGB_BORDERS_INFO_0_GL NULL +#define MGBA_COLOR_CORRECTION_LABEL_GL NULL +#define MGBA_COLOR_CORRECTION_INFO_0_GL NULL +#define OPTION_VAL_AUTO_GL NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_GL NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_GL NULL +#define OPTION_VAL_MIX_GL NULL +#define OPTION_VAL_MIX_SMART_GL NULL +#define OPTION_VAL_LCD_GHOSTING_GL NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_GL NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_GL NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_GL NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_GL NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_GL NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_GL NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_GL NULL +#define OPTION_VAL_5_GL NULL +#define OPTION_VAL_10_GL NULL +#define OPTION_VAL_15_GL NULL +#define OPTION_VAL_20_GL NULL +#define OPTION_VAL_25_GL NULL +#define OPTION_VAL_30_GL NULL +#define OPTION_VAL_35_GL NULL +#define OPTION_VAL_40_GL NULL +#define OPTION_VAL_45_GL NULL +#define OPTION_VAL_50_GL NULL +#define OPTION_VAL_55_GL NULL +#define OPTION_VAL_60_GL NULL +#define OPTION_VAL_65_GL NULL +#define OPTION_VAL_70_GL NULL +#define OPTION_VAL_75_GL NULL +#define OPTION_VAL_80_GL NULL +#define OPTION_VAL_85_GL NULL +#define OPTION_VAL_90_GL NULL +#define OPTION_VAL_95_GL NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_GL NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_GL NULL +#define OPTION_VAL_NO_GL NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_GL NULL +#define MGBA_FORCE_GBP_INFO_0_GL NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_GL NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_GL NULL +#define OPTION_VAL_REMOVE_KNOWN_GL NULL +#define OPTION_VAL_DETECT_AND_REMOVE_GL NULL +#define OPTION_VAL_DON_T_REMOVE_GL NULL +#define MGBA_FRAMESKIP_LABEL_GL NULL +#define MGBA_FRAMESKIP_INFO_0_GL NULL +#define OPTION_VAL_AUTO_THRESHOLD_GL NULL +#define OPTION_VAL_FIXED_INTERVAL_GL NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_GL NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_GL NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_GL NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_GL NULL + +struct retro_core_option_v2_category option_cats_gl[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_GL, + CATEGORY_SYSTEM_INFO_0_GL + }, + { + "video", + CATEGORY_VIDEO_LABEL_GL, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_GL +#else + CATEGORY_VIDEO_INFO_1_GL +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_GL, + CATEGORY_AUDIO_INFO_0_GL + }, + { + "input", + CATEGORY_INPUT_LABEL_GL, + CATEGORY_INPUT_INFO_0_GL + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_GL, + CATEGORY_PERFORMANCE_INFO_0_GL + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_gl[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_GL, + NULL, + MGBA_GB_MODEL_INFO_0_GL, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_GL }, + { "Game Boy", OPTION_VAL_GAME_BOY_GL }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_GL }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_GL }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_GL }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_GL, + NULL, + MGBA_USE_BIOS_INFO_0_GL, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_GL, + NULL, + MGBA_SKIP_BIOS_INFO_0_GL, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_GL, + NULL, + MGBA_GB_COLORS_INFO_0_GL, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_GL }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_GL, + NULL, + MGBA_SGB_BORDERS_INFO_0_GL, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_GL, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_GL, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_GL }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_GL }, + { "Auto", OPTION_VAL_AUTO_GL }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_GL, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_GL, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_GL }, + { "mix_smart", OPTION_VAL_MIX_SMART_GL }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_GL }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_GL }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_GL, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_GL, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_GL, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_GL, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_GL, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_GL, + NULL, + "audio", + { + { "5", OPTION_VAL_5_GL }, + { "10", OPTION_VAL_10_GL }, + { "15", OPTION_VAL_15_GL }, + { "20", OPTION_VAL_20_GL }, + { "25", OPTION_VAL_25_GL }, + { "30", OPTION_VAL_30_GL }, + { "35", OPTION_VAL_35_GL }, + { "40", OPTION_VAL_40_GL }, + { "45", OPTION_VAL_45_GL }, + { "50", OPTION_VAL_50_GL }, + { "55", OPTION_VAL_55_GL }, + { "60", OPTION_VAL_60_GL }, + { "65", OPTION_VAL_65_GL }, + { "70", OPTION_VAL_70_GL }, + { "75", OPTION_VAL_75_GL }, + { "80", OPTION_VAL_80_GL }, + { "85", OPTION_VAL_85_GL }, + { "90", OPTION_VAL_90_GL }, + { "95", OPTION_VAL_95_GL }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_GL, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_GL, + NULL, + "input", + { + { "no", OPTION_VAL_NO_GL }, + { "yes", OPTION_VAL_YES_GL }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_GL, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_GL, + NULL, + MGBA_FORCE_GBP_INFO_0_GL, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_GL, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_GL, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_GL }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_GL }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_GL }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_GL, + NULL, + MGBA_FRAMESKIP_INFO_0_GL, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_GL }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_GL }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_GL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_GL, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_GL, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_GL, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_GL, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_gl = { + option_cats_gl, + option_defs_gl +}; + +/* RETRO_LANGUAGE_HE */ + +#define CATEGORY_SYSTEM_LABEL_HE NULL +#define CATEGORY_SYSTEM_INFO_0_HE NULL +#define CATEGORY_VIDEO_LABEL_HE NULL +#define CATEGORY_VIDEO_INFO_0_HE NULL +#define CATEGORY_VIDEO_INFO_1_HE NULL +#define CATEGORY_AUDIO_LABEL_HE NULL +#define CATEGORY_AUDIO_INFO_0_HE NULL +#define CATEGORY_INPUT_LABEL_HE NULL +#define CATEGORY_INPUT_INFO_0_HE NULL +#define CATEGORY_PERFORMANCE_LABEL_HE NULL +#define CATEGORY_PERFORMANCE_INFO_0_HE NULL +#define MGBA_GB_MODEL_LABEL_HE NULL +#define MGBA_GB_MODEL_INFO_0_HE NULL +#define OPTION_VAL_AUTODETECT_HE NULL +#define OPTION_VAL_GAME_BOY_HE NULL +#define OPTION_VAL_SUPER_GAME_BOY_HE NULL +#define OPTION_VAL_GAME_BOY_COLOR_HE NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_HE NULL +#define MGBA_USE_BIOS_LABEL_HE NULL +#define MGBA_USE_BIOS_INFO_0_HE NULL +#define MGBA_SKIP_BIOS_LABEL_HE NULL +#define MGBA_SKIP_BIOS_INFO_0_HE NULL +#define MGBA_GB_COLORS_LABEL_HE NULL +#define MGBA_GB_COLORS_INFO_0_HE NULL +#define OPTION_VAL_GRAYSCALE_HE NULL +#define MGBA_SGB_BORDERS_LABEL_HE NULL +#define MGBA_SGB_BORDERS_INFO_0_HE NULL +#define MGBA_COLOR_CORRECTION_LABEL_HE NULL +#define MGBA_COLOR_CORRECTION_INFO_0_HE NULL +#define OPTION_VAL_AUTO_HE NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_HE NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_HE NULL +#define OPTION_VAL_MIX_HE NULL +#define OPTION_VAL_MIX_SMART_HE NULL +#define OPTION_VAL_LCD_GHOSTING_HE NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_HE NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_HE NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_HE NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_HE NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_HE NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_HE NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_HE NULL +#define OPTION_VAL_5_HE NULL +#define OPTION_VAL_10_HE NULL +#define OPTION_VAL_15_HE NULL +#define OPTION_VAL_20_HE NULL +#define OPTION_VAL_25_HE NULL +#define OPTION_VAL_30_HE NULL +#define OPTION_VAL_35_HE NULL +#define OPTION_VAL_40_HE NULL +#define OPTION_VAL_45_HE NULL +#define OPTION_VAL_50_HE NULL +#define OPTION_VAL_55_HE NULL +#define OPTION_VAL_60_HE NULL +#define OPTION_VAL_65_HE NULL +#define OPTION_VAL_70_HE NULL +#define OPTION_VAL_75_HE NULL +#define OPTION_VAL_80_HE NULL +#define OPTION_VAL_85_HE NULL +#define OPTION_VAL_90_HE NULL +#define OPTION_VAL_95_HE NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_HE NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_HE NULL +#define OPTION_VAL_NO_HE NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_HE NULL +#define MGBA_FORCE_GBP_INFO_0_HE NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_HE NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_HE NULL +#define OPTION_VAL_REMOVE_KNOWN_HE NULL +#define OPTION_VAL_DETECT_AND_REMOVE_HE NULL +#define OPTION_VAL_DON_T_REMOVE_HE NULL +#define MGBA_FRAMESKIP_LABEL_HE NULL +#define MGBA_FRAMESKIP_INFO_0_HE NULL +#define OPTION_VAL_AUTO_THRESHOLD_HE NULL +#define OPTION_VAL_FIXED_INTERVAL_HE NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_HE NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_HE NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_HE NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_HE NULL + +struct retro_core_option_v2_category option_cats_he[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_HE, + CATEGORY_SYSTEM_INFO_0_HE + }, + { + "video", + CATEGORY_VIDEO_LABEL_HE, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_HE +#else + CATEGORY_VIDEO_INFO_1_HE +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_HE, + CATEGORY_AUDIO_INFO_0_HE + }, + { + "input", + CATEGORY_INPUT_LABEL_HE, + CATEGORY_INPUT_INFO_0_HE + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_HE, + CATEGORY_PERFORMANCE_INFO_0_HE + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_he[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_HE, + NULL, + MGBA_GB_MODEL_INFO_0_HE, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_HE }, + { "Game Boy", OPTION_VAL_GAME_BOY_HE }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_HE }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_HE }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_HE }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_HE, + NULL, + MGBA_USE_BIOS_INFO_0_HE, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_HE, + NULL, + MGBA_SKIP_BIOS_INFO_0_HE, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_HE, + NULL, + MGBA_GB_COLORS_INFO_0_HE, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_HE }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_HE, + NULL, + MGBA_SGB_BORDERS_INFO_0_HE, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_HE, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_HE, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_HE }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_HE }, + { "Auto", OPTION_VAL_AUTO_HE }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_HE, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_HE, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_HE }, + { "mix_smart", OPTION_VAL_MIX_SMART_HE }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_HE }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_HE }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_HE, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_HE, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_HE, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_HE, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_HE, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_HE, + NULL, + "audio", + { + { "5", OPTION_VAL_5_HE }, + { "10", OPTION_VAL_10_HE }, + { "15", OPTION_VAL_15_HE }, + { "20", OPTION_VAL_20_HE }, + { "25", OPTION_VAL_25_HE }, + { "30", OPTION_VAL_30_HE }, + { "35", OPTION_VAL_35_HE }, + { "40", OPTION_VAL_40_HE }, + { "45", OPTION_VAL_45_HE }, + { "50", OPTION_VAL_50_HE }, + { "55", OPTION_VAL_55_HE }, + { "60", OPTION_VAL_60_HE }, + { "65", OPTION_VAL_65_HE }, + { "70", OPTION_VAL_70_HE }, + { "75", OPTION_VAL_75_HE }, + { "80", OPTION_VAL_80_HE }, + { "85", OPTION_VAL_85_HE }, + { "90", OPTION_VAL_90_HE }, + { "95", OPTION_VAL_95_HE }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_HE, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_HE, + NULL, + "input", + { + { "no", OPTION_VAL_NO_HE }, + { "yes", OPTION_VAL_YES_HE }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_HE, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_HE, + NULL, + MGBA_FORCE_GBP_INFO_0_HE, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_HE, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_HE, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_HE }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_HE }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_HE }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_HE, + NULL, + MGBA_FRAMESKIP_INFO_0_HE, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_HE }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_HE }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_HE }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_HE, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_HE, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_HE, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_HE, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_he = { + option_cats_he, + option_defs_he +}; + +/* RETRO_LANGUAGE_HU */ + +#define CATEGORY_SYSTEM_LABEL_HU NULL +#define CATEGORY_SYSTEM_INFO_0_HU NULL +#define CATEGORY_VIDEO_LABEL_HU NULL +#define CATEGORY_VIDEO_INFO_0_HU NULL +#define CATEGORY_VIDEO_INFO_1_HU NULL +#define CATEGORY_AUDIO_LABEL_HU NULL +#define CATEGORY_AUDIO_INFO_0_HU NULL +#define CATEGORY_INPUT_LABEL_HU NULL +#define CATEGORY_INPUT_INFO_0_HU NULL +#define CATEGORY_PERFORMANCE_LABEL_HU NULL +#define CATEGORY_PERFORMANCE_INFO_0_HU NULL +#define MGBA_GB_MODEL_LABEL_HU NULL +#define MGBA_GB_MODEL_INFO_0_HU NULL +#define OPTION_VAL_AUTODETECT_HU NULL +#define OPTION_VAL_GAME_BOY_HU NULL +#define OPTION_VAL_SUPER_GAME_BOY_HU NULL +#define OPTION_VAL_GAME_BOY_COLOR_HU NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_HU NULL +#define MGBA_USE_BIOS_LABEL_HU NULL +#define MGBA_USE_BIOS_INFO_0_HU NULL +#define MGBA_SKIP_BIOS_LABEL_HU NULL +#define MGBA_SKIP_BIOS_INFO_0_HU NULL +#define MGBA_GB_COLORS_LABEL_HU NULL +#define MGBA_GB_COLORS_INFO_0_HU NULL +#define OPTION_VAL_GRAYSCALE_HU NULL +#define MGBA_SGB_BORDERS_LABEL_HU NULL +#define MGBA_SGB_BORDERS_INFO_0_HU NULL +#define MGBA_COLOR_CORRECTION_LABEL_HU NULL +#define MGBA_COLOR_CORRECTION_INFO_0_HU NULL +#define OPTION_VAL_AUTO_HU NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_HU NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_HU NULL +#define OPTION_VAL_MIX_HU NULL +#define OPTION_VAL_MIX_SMART_HU NULL +#define OPTION_VAL_LCD_GHOSTING_HU NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_HU NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_HU NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_HU NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_HU NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_HU NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_HU NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_HU NULL +#define OPTION_VAL_5_HU NULL +#define OPTION_VAL_10_HU NULL +#define OPTION_VAL_15_HU NULL +#define OPTION_VAL_20_HU NULL +#define OPTION_VAL_25_HU NULL +#define OPTION_VAL_30_HU NULL +#define OPTION_VAL_35_HU NULL +#define OPTION_VAL_40_HU NULL +#define OPTION_VAL_45_HU NULL +#define OPTION_VAL_50_HU NULL +#define OPTION_VAL_55_HU NULL +#define OPTION_VAL_60_HU NULL +#define OPTION_VAL_65_HU NULL +#define OPTION_VAL_70_HU NULL +#define OPTION_VAL_75_HU NULL +#define OPTION_VAL_80_HU NULL +#define OPTION_VAL_85_HU NULL +#define OPTION_VAL_90_HU NULL +#define OPTION_VAL_95_HU NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_HU NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_HU NULL +#define OPTION_VAL_NO_HU NULL +#define OPTION_VAL_YES_HU NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_HU NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_HU NULL +#define OPTION_VAL_SENSOR_HU NULL +#define MGBA_FORCE_GBP_LABEL_HU NULL +#define MGBA_FORCE_GBP_INFO_0_HU NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_HU NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_HU NULL +#define OPTION_VAL_REMOVE_KNOWN_HU NULL +#define OPTION_VAL_DETECT_AND_REMOVE_HU NULL +#define OPTION_VAL_DON_T_REMOVE_HU NULL +#define MGBA_FRAMESKIP_LABEL_HU NULL +#define MGBA_FRAMESKIP_INFO_0_HU NULL +#define OPTION_VAL_AUTO_THRESHOLD_HU NULL +#define OPTION_VAL_FIXED_INTERVAL_HU NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_HU NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_HU NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_HU NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_HU NULL + +struct retro_core_option_v2_category option_cats_hu[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_HU, + CATEGORY_SYSTEM_INFO_0_HU + }, + { + "video", + CATEGORY_VIDEO_LABEL_HU, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_HU +#else + CATEGORY_VIDEO_INFO_1_HU +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_HU, + CATEGORY_AUDIO_INFO_0_HU + }, + { + "input", + CATEGORY_INPUT_LABEL_HU, + CATEGORY_INPUT_INFO_0_HU + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_HU, + CATEGORY_PERFORMANCE_INFO_0_HU + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_hu[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_HU, + NULL, + MGBA_GB_MODEL_INFO_0_HU, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_HU }, + { "Game Boy", OPTION_VAL_GAME_BOY_HU }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_HU }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_HU }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_HU }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_HU, + NULL, + MGBA_USE_BIOS_INFO_0_HU, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_HU, + NULL, + MGBA_SKIP_BIOS_INFO_0_HU, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_HU, + NULL, + MGBA_GB_COLORS_INFO_0_HU, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_HU }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_HU, + NULL, + MGBA_SGB_BORDERS_INFO_0_HU, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_HU, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_HU, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_HU }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_HU }, + { "Auto", OPTION_VAL_AUTO_HU }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_HU, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_HU, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_HU }, + { "mix_smart", OPTION_VAL_MIX_SMART_HU }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_HU }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_HU }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_HU, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_HU, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_HU, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_HU, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_HU, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_HU, + NULL, + "audio", + { + { "5", OPTION_VAL_5_HU }, + { "10", OPTION_VAL_10_HU }, + { "15", OPTION_VAL_15_HU }, + { "20", OPTION_VAL_20_HU }, + { "25", OPTION_VAL_25_HU }, + { "30", OPTION_VAL_30_HU }, + { "35", OPTION_VAL_35_HU }, + { "40", OPTION_VAL_40_HU }, + { "45", OPTION_VAL_45_HU }, + { "50", OPTION_VAL_50_HU }, + { "55", OPTION_VAL_55_HU }, + { "60", OPTION_VAL_60_HU }, + { "65", OPTION_VAL_65_HU }, + { "70", OPTION_VAL_70_HU }, + { "75", OPTION_VAL_75_HU }, + { "80", OPTION_VAL_80_HU }, + { "85", OPTION_VAL_85_HU }, + { "90", OPTION_VAL_90_HU }, + { "95", OPTION_VAL_95_HU }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_HU, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_HU, + NULL, + "input", + { + { "no", OPTION_VAL_NO_HU }, + { "yes", OPTION_VAL_YES_HU }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_HU, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_HU, + NULL, + MGBA_FORCE_GBP_INFO_0_HU, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_HU, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_HU, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_HU }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_HU }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_HU }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_HU, + NULL, + MGBA_FRAMESKIP_INFO_0_HU, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_HU }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_HU }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_HU }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_HU, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_HU, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_HU, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_HU, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_hu = { + option_cats_hu, + option_defs_hu +}; + +/* RETRO_LANGUAGE_ID */ + +#define CATEGORY_SYSTEM_LABEL_ID NULL +#define CATEGORY_SYSTEM_INFO_0_ID NULL +#define CATEGORY_VIDEO_LABEL_ID NULL +#define CATEGORY_VIDEO_INFO_0_ID NULL +#define CATEGORY_VIDEO_INFO_1_ID NULL +#define CATEGORY_AUDIO_LABEL_ID NULL +#define CATEGORY_AUDIO_INFO_0_ID NULL +#define CATEGORY_INPUT_LABEL_ID NULL +#define CATEGORY_INPUT_INFO_0_ID NULL +#define CATEGORY_PERFORMANCE_LABEL_ID NULL +#define CATEGORY_PERFORMANCE_INFO_0_ID NULL +#define MGBA_GB_MODEL_LABEL_ID NULL +#define MGBA_GB_MODEL_INFO_0_ID NULL +#define OPTION_VAL_AUTODETECT_ID NULL +#define OPTION_VAL_GAME_BOY_ID NULL +#define OPTION_VAL_SUPER_GAME_BOY_ID NULL +#define OPTION_VAL_GAME_BOY_COLOR_ID NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_ID NULL +#define MGBA_USE_BIOS_LABEL_ID NULL +#define MGBA_USE_BIOS_INFO_0_ID NULL +#define MGBA_SKIP_BIOS_LABEL_ID NULL +#define MGBA_SKIP_BIOS_INFO_0_ID NULL +#define MGBA_GB_COLORS_LABEL_ID NULL +#define MGBA_GB_COLORS_INFO_0_ID NULL +#define OPTION_VAL_GRAYSCALE_ID NULL +#define MGBA_SGB_BORDERS_LABEL_ID NULL +#define MGBA_SGB_BORDERS_INFO_0_ID NULL +#define MGBA_COLOR_CORRECTION_LABEL_ID NULL +#define MGBA_COLOR_CORRECTION_INFO_0_ID NULL +#define OPTION_VAL_AUTO_ID NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_ID NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_ID NULL +#define OPTION_VAL_MIX_ID NULL +#define OPTION_VAL_MIX_SMART_ID NULL +#define OPTION_VAL_LCD_GHOSTING_ID NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_ID NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_ID NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_ID NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_ID NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_ID NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_ID NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_ID NULL +#define OPTION_VAL_5_ID NULL +#define OPTION_VAL_10_ID NULL +#define OPTION_VAL_15_ID NULL +#define OPTION_VAL_20_ID NULL +#define OPTION_VAL_25_ID NULL +#define OPTION_VAL_30_ID NULL +#define OPTION_VAL_35_ID NULL +#define OPTION_VAL_40_ID NULL +#define OPTION_VAL_45_ID NULL +#define OPTION_VAL_50_ID NULL +#define OPTION_VAL_55_ID NULL +#define OPTION_VAL_60_ID NULL +#define OPTION_VAL_65_ID NULL +#define OPTION_VAL_70_ID NULL +#define OPTION_VAL_75_ID NULL +#define OPTION_VAL_80_ID NULL +#define OPTION_VAL_85_ID NULL +#define OPTION_VAL_90_ID NULL +#define OPTION_VAL_95_ID NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_ID NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_ID NULL +#define OPTION_VAL_NO_ID NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_ID NULL +#define MGBA_FORCE_GBP_INFO_0_ID NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_ID NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_ID NULL +#define OPTION_VAL_REMOVE_KNOWN_ID NULL +#define OPTION_VAL_DETECT_AND_REMOVE_ID NULL +#define OPTION_VAL_DON_T_REMOVE_ID NULL +#define MGBA_FRAMESKIP_LABEL_ID NULL +#define MGBA_FRAMESKIP_INFO_0_ID NULL +#define OPTION_VAL_AUTO_THRESHOLD_ID NULL +#define OPTION_VAL_FIXED_INTERVAL_ID NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_ID NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_ID NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_ID NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_ID NULL + +struct retro_core_option_v2_category option_cats_id[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_ID, + CATEGORY_SYSTEM_INFO_0_ID + }, + { + "video", + CATEGORY_VIDEO_LABEL_ID, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_ID +#else + CATEGORY_VIDEO_INFO_1_ID +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_ID, + CATEGORY_AUDIO_INFO_0_ID + }, + { + "input", + CATEGORY_INPUT_LABEL_ID, + CATEGORY_INPUT_INFO_0_ID + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_ID, + CATEGORY_PERFORMANCE_INFO_0_ID + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_id[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_ID, + NULL, + MGBA_GB_MODEL_INFO_0_ID, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_ID }, + { "Game Boy", OPTION_VAL_GAME_BOY_ID }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_ID }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_ID }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_ID }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_ID, + NULL, + MGBA_USE_BIOS_INFO_0_ID, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_ID, + NULL, + MGBA_SKIP_BIOS_INFO_0_ID, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_ID, + NULL, + MGBA_GB_COLORS_INFO_0_ID, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_ID }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_ID, + NULL, + MGBA_SGB_BORDERS_INFO_0_ID, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_ID, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_ID, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_ID }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_ID }, + { "Auto", OPTION_VAL_AUTO_ID }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_ID, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_ID, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_ID }, + { "mix_smart", OPTION_VAL_MIX_SMART_ID }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_ID }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_ID }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_ID, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_ID, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_ID, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_ID, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_ID, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_ID, + NULL, + "audio", + { + { "5", OPTION_VAL_5_ID }, + { "10", OPTION_VAL_10_ID }, + { "15", OPTION_VAL_15_ID }, + { "20", OPTION_VAL_20_ID }, + { "25", OPTION_VAL_25_ID }, + { "30", OPTION_VAL_30_ID }, + { "35", OPTION_VAL_35_ID }, + { "40", OPTION_VAL_40_ID }, + { "45", OPTION_VAL_45_ID }, + { "50", OPTION_VAL_50_ID }, + { "55", OPTION_VAL_55_ID }, + { "60", OPTION_VAL_60_ID }, + { "65", OPTION_VAL_65_ID }, + { "70", OPTION_VAL_70_ID }, + { "75", OPTION_VAL_75_ID }, + { "80", OPTION_VAL_80_ID }, + { "85", OPTION_VAL_85_ID }, + { "90", OPTION_VAL_90_ID }, + { "95", OPTION_VAL_95_ID }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_ID, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_ID, + NULL, + "input", + { + { "no", OPTION_VAL_NO_ID }, + { "yes", OPTION_VAL_YES_ID }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_ID, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_ID, + NULL, + MGBA_FORCE_GBP_INFO_0_ID, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_ID, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_ID, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_ID }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_ID }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_ID }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_ID, + NULL, + MGBA_FRAMESKIP_INFO_0_ID, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_ID }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_ID }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_ID }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_ID, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_ID, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_ID, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_ID, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_id = { + option_cats_id, + option_defs_id +}; + +/* RETRO_LANGUAGE_IT */ + +#define CATEGORY_SYSTEM_LABEL_IT NULL +#define CATEGORY_SYSTEM_INFO_0_IT NULL +#define CATEGORY_VIDEO_LABEL_IT NULL +#define CATEGORY_VIDEO_INFO_0_IT NULL +#define CATEGORY_VIDEO_INFO_1_IT NULL +#define CATEGORY_AUDIO_LABEL_IT NULL +#define CATEGORY_AUDIO_INFO_0_IT NULL +#define CATEGORY_INPUT_LABEL_IT NULL +#define CATEGORY_INPUT_INFO_0_IT NULL +#define CATEGORY_PERFORMANCE_LABEL_IT NULL +#define CATEGORY_PERFORMANCE_INFO_0_IT NULL +#define MGBA_GB_MODEL_LABEL_IT "Modello Game Boy (richiede riavvio)" +#define MGBA_GB_MODEL_INFO_0_IT "Esegue il contenuto caricato con un modello specifico di Game Boy. 'Rivela Automaticamente' selezionerà il modello più appropriato per il gioco attuale." +#define OPTION_VAL_AUTODETECT_IT "Rivela Automaticamente" +#define OPTION_VAL_GAME_BOY_IT NULL +#define OPTION_VAL_SUPER_GAME_BOY_IT NULL +#define OPTION_VAL_GAME_BOY_COLOR_IT NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_IT NULL +#define MGBA_USE_BIOS_LABEL_IT "Usa il File BIOS se Presente (richiede riavvio)" +#define MGBA_USE_BIOS_INFO_0_IT "Usa il BIOS/bootloader ufficiale per hardware emulato, se presente nella cartella di sistema di RetroArch." +#define MGBA_SKIP_BIOS_LABEL_IT "Salta Intro BIOS (richiede riavvio)" +#define MGBA_SKIP_BIOS_INFO_0_IT "Salta il filmato del logo di avvio se si usa un BIOS/bootloader ufficiale. Questa impostazione è ignorata se 'Usa il file BIOS se presente' è disabilitato." +#define MGBA_GB_COLORS_LABEL_IT NULL +#define MGBA_GB_COLORS_INFO_0_IT NULL +#define OPTION_VAL_GRAYSCALE_IT NULL +#define MGBA_SGB_BORDERS_LABEL_IT "Utilizza i Bordi Super Game Boy (richiede riavvio)" +#define MGBA_SGB_BORDERS_INFO_0_IT "Visualizza i bordi del Super Game Boy quando apri un gioco potenziato dal Super Game Boy." +#define MGBA_COLOR_CORRECTION_LABEL_IT "Correzione Colore" +#define MGBA_COLOR_CORRECTION_INFO_0_IT "Regola i colori per corrispondere lo schermo di GBA/GBC reali." +#define OPTION_VAL_AUTO_IT NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_IT NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_IT NULL +#define OPTION_VAL_MIX_IT NULL +#define OPTION_VAL_MIX_SMART_IT NULL +#define OPTION_VAL_LCD_GHOSTING_IT NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_IT NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_IT NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_IT NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_IT NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_IT NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_IT NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_IT NULL +#define OPTION_VAL_5_IT NULL +#define OPTION_VAL_10_IT NULL +#define OPTION_VAL_15_IT NULL +#define OPTION_VAL_20_IT NULL +#define OPTION_VAL_25_IT NULL +#define OPTION_VAL_30_IT NULL +#define OPTION_VAL_35_IT NULL +#define OPTION_VAL_40_IT NULL +#define OPTION_VAL_45_IT NULL +#define OPTION_VAL_50_IT NULL +#define OPTION_VAL_55_IT NULL +#define OPTION_VAL_60_IT NULL +#define OPTION_VAL_65_IT NULL +#define OPTION_VAL_70_IT NULL +#define OPTION_VAL_75_IT NULL +#define OPTION_VAL_80_IT NULL +#define OPTION_VAL_85_IT NULL +#define OPTION_VAL_90_IT NULL +#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 OPTION_VAL_NO_IT NULL +#define OPTION_VAL_YES_IT NULL +#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 NULL +#define MGBA_FORCE_GBP_LABEL_IT NULL +#define MGBA_FORCE_GBP_INFO_0_IT NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_IT "Rimozione Idle Loop" +#define MGBA_IDLE_OPTIMIZATION_INFO_0_IT "Riduce il carico del sistema ottimizzando gli 'idle-loops' - sezione del codice dove non accade nulla, ma la CPU lavora a velocità massima. Migliora le prestazioni, è consigliato abilitarlo su hardware di bassa fascia." +#define OPTION_VAL_REMOVE_KNOWN_IT "Rimuovi Conosciuti" +#define OPTION_VAL_DETECT_AND_REMOVE_IT "Rileva e Rimuovi" +#define OPTION_VAL_DON_T_REMOVE_IT "Non Rimuovere" +#define MGBA_FRAMESKIP_LABEL_IT "Salta Frame" +#define MGBA_FRAMESKIP_INFO_0_IT "Salta dei frame per migliorare le prestazioni a costo della fluidità dell'immagine. Il valore impostato qui è il numero dei frame rimosso dopo che un frame sia stato renderizzato - ovvero '0' = 60fps, '1' = 30fps, '2' = 15fps, ecc." +#define OPTION_VAL_AUTO_THRESHOLD_IT NULL +#define OPTION_VAL_FIXED_INTERVAL_IT NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_IT NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_IT NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_IT NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_IT NULL + +struct retro_core_option_v2_category option_cats_it[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_IT, + CATEGORY_SYSTEM_INFO_0_IT + }, + { + "video", + CATEGORY_VIDEO_LABEL_IT, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_IT +#else + CATEGORY_VIDEO_INFO_1_IT +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_IT, + CATEGORY_AUDIO_INFO_0_IT + }, + { + "input", + CATEGORY_INPUT_LABEL_IT, + CATEGORY_INPUT_INFO_0_IT + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_IT, + CATEGORY_PERFORMANCE_INFO_0_IT + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_it[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_IT, + NULL, + MGBA_GB_MODEL_INFO_0_IT, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_IT }, + { "Game Boy", OPTION_VAL_GAME_BOY_IT }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_IT }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_IT }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_IT }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_IT, + NULL, + MGBA_USE_BIOS_INFO_0_IT, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_IT, + NULL, + MGBA_SKIP_BIOS_INFO_0_IT, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_IT, + NULL, + MGBA_GB_COLORS_INFO_0_IT, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_IT }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_IT, + NULL, + MGBA_SGB_BORDERS_INFO_0_IT, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_IT, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_IT, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_IT }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_IT }, + { "Auto", OPTION_VAL_AUTO_IT }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_IT, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_IT, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_IT }, + { "mix_smart", OPTION_VAL_MIX_SMART_IT }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_IT }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_IT }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_IT, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_IT, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_IT, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_IT, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_IT, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_IT, + NULL, + "audio", + { + { "5", OPTION_VAL_5_IT }, + { "10", OPTION_VAL_10_IT }, + { "15", OPTION_VAL_15_IT }, + { "20", OPTION_VAL_20_IT }, + { "25", OPTION_VAL_25_IT }, + { "30", OPTION_VAL_30_IT }, + { "35", OPTION_VAL_35_IT }, + { "40", OPTION_VAL_40_IT }, + { "45", OPTION_VAL_45_IT }, + { "50", OPTION_VAL_50_IT }, + { "55", OPTION_VAL_55_IT }, + { "60", OPTION_VAL_60_IT }, + { "65", OPTION_VAL_65_IT }, + { "70", OPTION_VAL_70_IT }, + { "75", OPTION_VAL_75_IT }, + { "80", OPTION_VAL_80_IT }, + { "85", OPTION_VAL_85_IT }, + { "90", OPTION_VAL_90_IT }, + { "95", OPTION_VAL_95_IT }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_IT, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_IT, + NULL, + "input", + { + { "no", OPTION_VAL_NO_IT }, + { "yes", OPTION_VAL_YES_IT }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_IT, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_IT, + NULL, + MGBA_FORCE_GBP_INFO_0_IT, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_IT, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_IT, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_IT }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_IT }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_IT }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_IT, + NULL, + MGBA_FRAMESKIP_INFO_0_IT, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_IT }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_IT }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_IT }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_IT, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_IT, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_IT, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_IT, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; struct retro_core_options_v2 options_it = { option_cats_it, option_defs_it }; -/* RETRO_LANGUAGE_DUTCH */ +/* RETRO_LANGUAGE_JA */ -/* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */ +#define CATEGORY_SYSTEM_LABEL_JA NULL +#define CATEGORY_SYSTEM_INFO_0_JA NULL +#define CATEGORY_VIDEO_LABEL_JA NULL +#define CATEGORY_VIDEO_INFO_0_JA NULL +#define CATEGORY_VIDEO_INFO_1_JA NULL +#define CATEGORY_AUDIO_LABEL_JA NULL +#define CATEGORY_AUDIO_INFO_0_JA NULL +#define CATEGORY_INPUT_LABEL_JA NULL +#define CATEGORY_INPUT_INFO_0_JA NULL +#define CATEGORY_PERFORMANCE_LABEL_JA NULL +#define CATEGORY_PERFORMANCE_INFO_0_JA NULL +#define MGBA_GB_MODEL_LABEL_JA NULL +#define MGBA_GB_MODEL_INFO_0_JA NULL +#define OPTION_VAL_AUTODETECT_JA NULL +#define OPTION_VAL_GAME_BOY_JA NULL +#define OPTION_VAL_SUPER_GAME_BOY_JA NULL +#define OPTION_VAL_GAME_BOY_COLOR_JA NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_JA NULL +#define MGBA_USE_BIOS_LABEL_JA NULL +#define MGBA_USE_BIOS_INFO_0_JA NULL +#define MGBA_SKIP_BIOS_LABEL_JA NULL +#define MGBA_SKIP_BIOS_INFO_0_JA NULL +#define MGBA_GB_COLORS_LABEL_JA NULL +#define MGBA_GB_COLORS_INFO_0_JA NULL +#define OPTION_VAL_GRAYSCALE_JA NULL +#define MGBA_SGB_BORDERS_LABEL_JA NULL +#define MGBA_SGB_BORDERS_INFO_0_JA NULL +#define MGBA_COLOR_CORRECTION_LABEL_JA NULL +#define MGBA_COLOR_CORRECTION_INFO_0_JA NULL +#define OPTION_VAL_AUTO_JA NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_JA NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_JA NULL +#define OPTION_VAL_MIX_JA NULL +#define OPTION_VAL_MIX_SMART_JA NULL +#define OPTION_VAL_LCD_GHOSTING_JA NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_JA NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_JA NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_JA NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_JA NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_JA NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_JA NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_JA NULL +#define OPTION_VAL_5_JA NULL +#define OPTION_VAL_10_JA NULL +#define OPTION_VAL_15_JA NULL +#define OPTION_VAL_20_JA NULL +#define OPTION_VAL_25_JA NULL +#define OPTION_VAL_30_JA NULL +#define OPTION_VAL_35_JA NULL +#define OPTION_VAL_40_JA NULL +#define OPTION_VAL_45_JA NULL +#define OPTION_VAL_50_JA NULL +#define OPTION_VAL_55_JA NULL +#define OPTION_VAL_60_JA NULL +#define OPTION_VAL_65_JA NULL +#define OPTION_VAL_70_JA NULL +#define OPTION_VAL_75_JA NULL +#define OPTION_VAL_80_JA NULL +#define OPTION_VAL_85_JA NULL +#define OPTION_VAL_90_JA NULL +#define OPTION_VAL_95_JA NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_JA NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_JA NULL +#define OPTION_VAL_NO_JA NULL +#define OPTION_VAL_YES_JA NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_JA NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_JA NULL +#define OPTION_VAL_SENSOR_JA NULL +#define MGBA_FORCE_GBP_LABEL_JA NULL +#define MGBA_FORCE_GBP_INFO_0_JA NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_JA NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_JA NULL +#define OPTION_VAL_REMOVE_KNOWN_JA NULL +#define OPTION_VAL_DETECT_AND_REMOVE_JA NULL +#define OPTION_VAL_DON_T_REMOVE_JA NULL +#define MGBA_FRAMESKIP_LABEL_JA NULL +#define MGBA_FRAMESKIP_INFO_0_JA NULL +#define OPTION_VAL_AUTO_THRESHOLD_JA NULL +#define OPTION_VAL_FIXED_INTERVAL_JA NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_JA NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_JA NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_JA NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_JA NULL -/* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */ - -/* RETRO_LANGUAGE_RUSSIAN */ - -/* RETRO_LANGUAGE_KOREAN */ - -/* RETRO_LANGUAGE_CHINESE_TRADITIONAL */ - -/* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */ - -/* RETRO_LANGUAGE_ESPERANTO */ - -/* RETRO_LANGUAGE_POLISH */ - -/* RETRO_LANGUAGE_VIETNAMESE */ - -/* RETRO_LANGUAGE_ARABIC */ - -/* RETRO_LANGUAGE_GREEK */ - -/* RETRO_LANGUAGE_TURKISH */ - -struct retro_core_option_v2_category option_cats_tr[] = { +struct retro_core_option_v2_category option_cats_ja[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_JA, + CATEGORY_SYSTEM_INFO_0_JA + }, + { + "video", + CATEGORY_VIDEO_LABEL_JA, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_JA +#else + CATEGORY_VIDEO_INFO_1_JA +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_JA, + CATEGORY_AUDIO_INFO_0_JA + }, + { + "input", + CATEGORY_INPUT_LABEL_JA, + CATEGORY_INPUT_INFO_0_JA + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_JA, + CATEGORY_PERFORMANCE_INFO_0_JA + }, { NULL, NULL, NULL }, }; - -struct retro_core_option_v2_definition option_defs_tr[] = { - { - "mgba_solar_sensor_level", - "Güneş Sensörü Seviyesi", - NULL, - "Ortam güneş ışığının yoğunluğunu ayarlar. Boktai serisi, kartuşlarına güneş sensörü içeren oyunlar tarafından kullanılabilir.", - NULL, - NULL, - { - { "sensor", "Sensörü" }, - { NULL, NULL }, - }, - NULL - }, - { - "mgba_allow_opposing_directions", - "Karşı Yönlü Girdiye Çıkmaya İzin Ver", - NULL, - "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.", - NULL, - NULL, - { - { NULL, NULL }, - }, - NULL - }, +struct retro_core_option_v2_definition option_defs_ja[] = { { "mgba_gb_model", - "Game Boy Modeli (yeniden başlatma gerektirir)", - NULL, - "Yüklenen içeriği belirli bir Game Boy modeliyle çalıştırır. 'Otomatik Tespit' mevcut oyun için en uygun modeli seçecektir.", + MGBA_GB_MODEL_LABEL_JA, NULL, + MGBA_GB_MODEL_INFO_0_JA, NULL, + "system", { - { "Autodetect", "Otomatik Tespit" }, + { "Autodetect", OPTION_VAL_AUTODETECT_JA }, + { "Game Boy", OPTION_VAL_GAME_BOY_JA }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_JA }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_JA }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_JA }, { NULL, NULL }, }, - NULL + "Autodetect" }, { "mgba_use_bios", - "Bulunursa BIOS Dosyasını kullanın (yeniden başlatma gerektirir)", - NULL, - "RetroArch'ın sistem dizininde varsa, öykünülmüş donanım için resmi BIOS/önyükleyici kullanır.", + MGBA_USE_BIOS_LABEL_JA, NULL, + MGBA_USE_BIOS_INFO_0_JA, NULL, + "system", { + { "ON", "enabled" }, + { "OFF", "disabled" }, { NULL, NULL }, }, - NULL + "ON" }, { "mgba_skip_bios", - "BIOS Girişini Atla (yeniden başlatma gerektirir)", - NULL, - "Resmi bir BIOS / önyükleyici kullanırken, başlangıç logosu animasyonunu atlayın. Bu ayar, 'Bulunursa BIOS Dosyasını Kullan' devre dışı bırakıldığında geçersiz sayılır.", + MGBA_SKIP_BIOS_LABEL_JA, NULL, + MGBA_SKIP_BIOS_INFO_0_JA, NULL, + "system", { + { "OFF", "disabled" }, + { "ON", "enabled" }, { NULL, NULL }, }, - NULL + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_JA, + NULL, + MGBA_GB_COLORS_INFO_0_JA, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_JA }, + { NULL, NULL }, + }, + "Grayscale" }, { "mgba_sgb_borders", - "Super Game Boy Sınırlarını kullanın (yeniden başlatma gerekir)", - NULL, - "Super Game Boy gelişmiş oyunlarını çalıştırırken Super Game Boy sınırlarını görüntüleR.", + MGBA_SGB_BORDERS_LABEL_JA, NULL, + MGBA_SGB_BORDERS_INFO_0_JA, NULL, + "video", { + { "ON", "enabled" }, + { "OFF", "disabled" }, { NULL, NULL }, }, - NULL - }, - { - "mgba_idle_optimization", - "Boşta Döngü Kaldırma", - NULL, - "'Boşta döngüler' denilen sistemi optimize ederek sistem yükünü azaltın - hiçbir şeyin olmadığı koddaki bölümler için, CPU tam hızda çalıştırır (boşa dönen bir araba gibi). Performansı arttırır ve düşük kaliteli donanımlarda etkinleştirilmesi gerekir.", - NULL, - NULL, - { - { "Remove Known", "Bilinenleri Kaldır" }, - { "Detect and Remove", "Algıla ve Kaldır" }, - { "Don't Remove", "Kaldırma" }, - { NULL, NULL }, - }, - NULL + "ON" }, #if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) { "mgba_color_correction", - "Renk Düzeltmesi", - NULL, - "Çıktı renklerini gerçek GBA / GBC donanımının görüntüsüyle eşleşecek şekilde ayarlar.", + MGBA_COLOR_CORRECTION_LABEL_JA, NULL, + MGBA_COLOR_CORRECTION_INFO_0_JA, NULL, + "video", { - { "GBA", "Game Boy Advance" }, - { "GBC", "Game Boy Color" }, - { "Auto", "Otomatik" }, + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_JA }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_JA }, + { "Auto", OPTION_VAL_AUTO_JA }, { NULL, NULL }, }, - NULL + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_JA, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_JA, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_JA }, + { "mix_smart", OPTION_VAL_MIX_SMART_JA }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_JA }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_JA }, + { NULL, NULL }, + }, + "OFF" }, #endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_JA, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_JA, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_JA, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_JA, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_JA, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_JA, + NULL, + "audio", + { + { "5", OPTION_VAL_5_JA }, + { "10", OPTION_VAL_10_JA }, + { "15", OPTION_VAL_15_JA }, + { "20", OPTION_VAL_20_JA }, + { "25", OPTION_VAL_25_JA }, + { "30", OPTION_VAL_30_JA }, + { "35", OPTION_VAL_35_JA }, + { "40", OPTION_VAL_40_JA }, + { "45", OPTION_VAL_45_JA }, + { "50", OPTION_VAL_50_JA }, + { "55", OPTION_VAL_55_JA }, + { "60", OPTION_VAL_60_JA }, + { "65", OPTION_VAL_65_JA }, + { "70", OPTION_VAL_70_JA }, + { "75", OPTION_VAL_75_JA }, + { "80", OPTION_VAL_80_JA }, + { "85", OPTION_VAL_85_JA }, + { "90", OPTION_VAL_90_JA }, + { "95", OPTION_VAL_95_JA }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_JA, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_JA, + NULL, + "input", + { + { "no", OPTION_VAL_NO_JA }, + { "yes", OPTION_VAL_YES_JA }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_JA, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_JA, + NULL, + MGBA_FORCE_GBP_INFO_0_JA, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_JA, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_JA, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_JA }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_JA }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_JA }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_JA, + NULL, + MGBA_FRAMESKIP_INFO_0_JA, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_JA }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_JA }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_JA }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_JA, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_JA, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_JA, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_JA, + NULL, + "performance", + { + { "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" + }, { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, }; +struct retro_core_options_v2 options_ja = { + option_cats_ja, + option_defs_ja +}; +/* RETRO_LANGUAGE_KO */ + +#define CATEGORY_SYSTEM_LABEL_KO NULL +#define CATEGORY_SYSTEM_INFO_0_KO NULL +#define CATEGORY_VIDEO_LABEL_KO NULL +#define CATEGORY_VIDEO_INFO_0_KO NULL +#define CATEGORY_VIDEO_INFO_1_KO NULL +#define CATEGORY_AUDIO_LABEL_KO NULL +#define CATEGORY_AUDIO_INFO_0_KO NULL +#define CATEGORY_INPUT_LABEL_KO NULL +#define CATEGORY_INPUT_INFO_0_KO NULL +#define CATEGORY_PERFORMANCE_LABEL_KO NULL +#define CATEGORY_PERFORMANCE_INFO_0_KO NULL +#define MGBA_GB_MODEL_LABEL_KO NULL +#define MGBA_GB_MODEL_INFO_0_KO NULL +#define OPTION_VAL_AUTODETECT_KO NULL +#define OPTION_VAL_GAME_BOY_KO NULL +#define OPTION_VAL_SUPER_GAME_BOY_KO NULL +#define OPTION_VAL_GAME_BOY_COLOR_KO NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_KO NULL +#define MGBA_USE_BIOS_LABEL_KO NULL +#define MGBA_USE_BIOS_INFO_0_KO NULL +#define MGBA_SKIP_BIOS_LABEL_KO NULL +#define MGBA_SKIP_BIOS_INFO_0_KO NULL +#define MGBA_GB_COLORS_LABEL_KO NULL +#define MGBA_GB_COLORS_INFO_0_KO NULL +#define OPTION_VAL_GRAYSCALE_KO NULL +#define MGBA_SGB_BORDERS_LABEL_KO NULL +#define MGBA_SGB_BORDERS_INFO_0_KO NULL +#define MGBA_COLOR_CORRECTION_LABEL_KO NULL +#define MGBA_COLOR_CORRECTION_INFO_0_KO NULL +#define OPTION_VAL_AUTO_KO NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_KO NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_KO NULL +#define OPTION_VAL_MIX_KO NULL +#define OPTION_VAL_MIX_SMART_KO NULL +#define OPTION_VAL_LCD_GHOSTING_KO NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_KO NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_KO NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_KO NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_KO NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_KO NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_KO NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_KO NULL +#define OPTION_VAL_5_KO NULL +#define OPTION_VAL_10_KO NULL +#define OPTION_VAL_15_KO NULL +#define OPTION_VAL_20_KO NULL +#define OPTION_VAL_25_KO NULL +#define OPTION_VAL_30_KO NULL +#define OPTION_VAL_35_KO NULL +#define OPTION_VAL_40_KO NULL +#define OPTION_VAL_45_KO NULL +#define OPTION_VAL_50_KO NULL +#define OPTION_VAL_55_KO NULL +#define OPTION_VAL_60_KO NULL +#define OPTION_VAL_65_KO NULL +#define OPTION_VAL_70_KO NULL +#define OPTION_VAL_75_KO NULL +#define OPTION_VAL_80_KO NULL +#define OPTION_VAL_85_KO NULL +#define OPTION_VAL_90_KO NULL +#define OPTION_VAL_95_KO NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_KO NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_KO NULL +#define OPTION_VAL_NO_KO NULL +#define OPTION_VAL_YES_KO NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_KO NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_KO NULL +#define OPTION_VAL_SENSOR_KO NULL +#define MGBA_FORCE_GBP_LABEL_KO NULL +#define MGBA_FORCE_GBP_INFO_0_KO NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_KO NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_KO NULL +#define OPTION_VAL_REMOVE_KNOWN_KO NULL +#define OPTION_VAL_DETECT_AND_REMOVE_KO NULL +#define OPTION_VAL_DON_T_REMOVE_KO NULL +#define MGBA_FRAMESKIP_LABEL_KO NULL +#define MGBA_FRAMESKIP_INFO_0_KO NULL +#define OPTION_VAL_AUTO_THRESHOLD_KO NULL +#define OPTION_VAL_FIXED_INTERVAL_KO NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_KO NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_KO NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_KO NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_KO NULL + +struct retro_core_option_v2_category option_cats_ko[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_KO, + CATEGORY_SYSTEM_INFO_0_KO + }, + { + "video", + CATEGORY_VIDEO_LABEL_KO, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_KO +#else + CATEGORY_VIDEO_INFO_1_KO +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_KO, + CATEGORY_AUDIO_INFO_0_KO + }, + { + "input", + CATEGORY_INPUT_LABEL_KO, + CATEGORY_INPUT_INFO_0_KO + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_KO, + CATEGORY_PERFORMANCE_INFO_0_KO + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_ko[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_KO, + NULL, + MGBA_GB_MODEL_INFO_0_KO, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_KO }, + { "Game Boy", OPTION_VAL_GAME_BOY_KO }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_KO }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_KO }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_KO }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_KO, + NULL, + MGBA_USE_BIOS_INFO_0_KO, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_KO, + NULL, + MGBA_SKIP_BIOS_INFO_0_KO, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_KO, + NULL, + MGBA_GB_COLORS_INFO_0_KO, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_KO }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_KO, + NULL, + MGBA_SGB_BORDERS_INFO_0_KO, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_KO, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_KO, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_KO }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_KO }, + { "Auto", OPTION_VAL_AUTO_KO }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_KO, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_KO, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_KO }, + { "mix_smart", OPTION_VAL_MIX_SMART_KO }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_KO }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_KO }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_KO, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_KO, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_KO, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_KO, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_KO, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_KO, + NULL, + "audio", + { + { "5", OPTION_VAL_5_KO }, + { "10", OPTION_VAL_10_KO }, + { "15", OPTION_VAL_15_KO }, + { "20", OPTION_VAL_20_KO }, + { "25", OPTION_VAL_25_KO }, + { "30", OPTION_VAL_30_KO }, + { "35", OPTION_VAL_35_KO }, + { "40", OPTION_VAL_40_KO }, + { "45", OPTION_VAL_45_KO }, + { "50", OPTION_VAL_50_KO }, + { "55", OPTION_VAL_55_KO }, + { "60", OPTION_VAL_60_KO }, + { "65", OPTION_VAL_65_KO }, + { "70", OPTION_VAL_70_KO }, + { "75", OPTION_VAL_75_KO }, + { "80", OPTION_VAL_80_KO }, + { "85", OPTION_VAL_85_KO }, + { "90", OPTION_VAL_90_KO }, + { "95", OPTION_VAL_95_KO }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_KO, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_KO, + NULL, + "input", + { + { "no", OPTION_VAL_NO_KO }, + { "yes", OPTION_VAL_YES_KO }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_KO, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_KO, + NULL, + MGBA_FORCE_GBP_INFO_0_KO, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_KO, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_KO, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_KO }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_KO }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_KO }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_KO, + NULL, + MGBA_FRAMESKIP_INFO_0_KO, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_KO }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_KO }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_KO }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_KO, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_KO, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_KO, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_KO, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_ko = { + option_cats_ko, + option_defs_ko +}; + +/* RETRO_LANGUAGE_MT */ + +#define CATEGORY_SYSTEM_LABEL_MT NULL +#define CATEGORY_SYSTEM_INFO_0_MT NULL +#define CATEGORY_VIDEO_LABEL_MT NULL +#define CATEGORY_VIDEO_INFO_0_MT NULL +#define CATEGORY_VIDEO_INFO_1_MT NULL +#define CATEGORY_AUDIO_LABEL_MT NULL +#define CATEGORY_AUDIO_INFO_0_MT NULL +#define CATEGORY_INPUT_LABEL_MT NULL +#define CATEGORY_INPUT_INFO_0_MT NULL +#define CATEGORY_PERFORMANCE_LABEL_MT NULL +#define CATEGORY_PERFORMANCE_INFO_0_MT NULL +#define MGBA_GB_MODEL_LABEL_MT NULL +#define MGBA_GB_MODEL_INFO_0_MT NULL +#define OPTION_VAL_AUTODETECT_MT NULL +#define OPTION_VAL_GAME_BOY_MT NULL +#define OPTION_VAL_SUPER_GAME_BOY_MT NULL +#define OPTION_VAL_GAME_BOY_COLOR_MT NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_MT NULL +#define MGBA_USE_BIOS_LABEL_MT NULL +#define MGBA_USE_BIOS_INFO_0_MT NULL +#define MGBA_SKIP_BIOS_LABEL_MT NULL +#define MGBA_SKIP_BIOS_INFO_0_MT NULL +#define MGBA_GB_COLORS_LABEL_MT NULL +#define MGBA_GB_COLORS_INFO_0_MT NULL +#define OPTION_VAL_GRAYSCALE_MT NULL +#define MGBA_SGB_BORDERS_LABEL_MT NULL +#define MGBA_SGB_BORDERS_INFO_0_MT NULL +#define MGBA_COLOR_CORRECTION_LABEL_MT NULL +#define MGBA_COLOR_CORRECTION_INFO_0_MT NULL +#define OPTION_VAL_AUTO_MT NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_MT NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_MT NULL +#define OPTION_VAL_MIX_MT NULL +#define OPTION_VAL_MIX_SMART_MT NULL +#define OPTION_VAL_LCD_GHOSTING_MT NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_MT NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_MT NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_MT NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_MT NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_MT NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_MT NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_MT NULL +#define OPTION_VAL_5_MT NULL +#define OPTION_VAL_10_MT NULL +#define OPTION_VAL_15_MT NULL +#define OPTION_VAL_20_MT NULL +#define OPTION_VAL_25_MT NULL +#define OPTION_VAL_30_MT NULL +#define OPTION_VAL_35_MT NULL +#define OPTION_VAL_40_MT NULL +#define OPTION_VAL_45_MT NULL +#define OPTION_VAL_50_MT NULL +#define OPTION_VAL_55_MT NULL +#define OPTION_VAL_60_MT NULL +#define OPTION_VAL_65_MT NULL +#define OPTION_VAL_70_MT NULL +#define OPTION_VAL_75_MT NULL +#define OPTION_VAL_80_MT NULL +#define OPTION_VAL_85_MT NULL +#define OPTION_VAL_90_MT NULL +#define OPTION_VAL_95_MT NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_MT NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_MT NULL +#define OPTION_VAL_NO_MT NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_MT NULL +#define MGBA_FORCE_GBP_INFO_0_MT NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_MT NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_MT NULL +#define OPTION_VAL_REMOVE_KNOWN_MT NULL +#define OPTION_VAL_DETECT_AND_REMOVE_MT NULL +#define OPTION_VAL_DON_T_REMOVE_MT NULL +#define MGBA_FRAMESKIP_LABEL_MT NULL +#define MGBA_FRAMESKIP_INFO_0_MT NULL +#define OPTION_VAL_AUTO_THRESHOLD_MT NULL +#define OPTION_VAL_FIXED_INTERVAL_MT NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_MT NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_MT NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_MT NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_MT NULL + +struct retro_core_option_v2_category option_cats_mt[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_MT, + CATEGORY_SYSTEM_INFO_0_MT + }, + { + "video", + CATEGORY_VIDEO_LABEL_MT, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_MT +#else + CATEGORY_VIDEO_INFO_1_MT +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_MT, + CATEGORY_AUDIO_INFO_0_MT + }, + { + "input", + CATEGORY_INPUT_LABEL_MT, + CATEGORY_INPUT_INFO_0_MT + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_MT, + CATEGORY_PERFORMANCE_INFO_0_MT + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_mt[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_MT, + NULL, + MGBA_GB_MODEL_INFO_0_MT, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_MT }, + { "Game Boy", OPTION_VAL_GAME_BOY_MT }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_MT }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_MT }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_MT }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_MT, + NULL, + MGBA_USE_BIOS_INFO_0_MT, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_MT, + NULL, + MGBA_SKIP_BIOS_INFO_0_MT, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_MT, + NULL, + MGBA_GB_COLORS_INFO_0_MT, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_MT }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_MT, + NULL, + MGBA_SGB_BORDERS_INFO_0_MT, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_MT, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_MT, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_MT }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_MT }, + { "Auto", OPTION_VAL_AUTO_MT }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_MT, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_MT, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_MT }, + { "mix_smart", OPTION_VAL_MIX_SMART_MT }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_MT }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_MT }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_MT, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_MT, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_MT, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_MT, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_MT, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_MT, + NULL, + "audio", + { + { "5", OPTION_VAL_5_MT }, + { "10", OPTION_VAL_10_MT }, + { "15", OPTION_VAL_15_MT }, + { "20", OPTION_VAL_20_MT }, + { "25", OPTION_VAL_25_MT }, + { "30", OPTION_VAL_30_MT }, + { "35", OPTION_VAL_35_MT }, + { "40", OPTION_VAL_40_MT }, + { "45", OPTION_VAL_45_MT }, + { "50", OPTION_VAL_50_MT }, + { "55", OPTION_VAL_55_MT }, + { "60", OPTION_VAL_60_MT }, + { "65", OPTION_VAL_65_MT }, + { "70", OPTION_VAL_70_MT }, + { "75", OPTION_VAL_75_MT }, + { "80", OPTION_VAL_80_MT }, + { "85", OPTION_VAL_85_MT }, + { "90", OPTION_VAL_90_MT }, + { "95", OPTION_VAL_95_MT }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_MT, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_MT, + NULL, + "input", + { + { "no", OPTION_VAL_NO_MT }, + { "yes", OPTION_VAL_YES_MT }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_MT, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_MT, + NULL, + MGBA_FORCE_GBP_INFO_0_MT, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_MT, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_MT, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_MT }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_MT }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_MT }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_MT, + NULL, + MGBA_FRAMESKIP_INFO_0_MT, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_MT }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_MT }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_MT }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_MT, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_MT, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_MT, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_MT, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_mt = { + option_cats_mt, + option_defs_mt +}; + +/* RETRO_LANGUAGE_NL */ + +#define CATEGORY_SYSTEM_LABEL_NL NULL +#define CATEGORY_SYSTEM_INFO_0_NL NULL +#define CATEGORY_VIDEO_LABEL_NL NULL +#define CATEGORY_VIDEO_INFO_0_NL NULL +#define CATEGORY_VIDEO_INFO_1_NL NULL +#define CATEGORY_AUDIO_LABEL_NL NULL +#define CATEGORY_AUDIO_INFO_0_NL NULL +#define CATEGORY_INPUT_LABEL_NL NULL +#define CATEGORY_INPUT_INFO_0_NL NULL +#define CATEGORY_PERFORMANCE_LABEL_NL NULL +#define CATEGORY_PERFORMANCE_INFO_0_NL NULL +#define MGBA_GB_MODEL_LABEL_NL NULL +#define MGBA_GB_MODEL_INFO_0_NL NULL +#define OPTION_VAL_AUTODETECT_NL NULL +#define OPTION_VAL_GAME_BOY_NL NULL +#define OPTION_VAL_SUPER_GAME_BOY_NL NULL +#define OPTION_VAL_GAME_BOY_COLOR_NL NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_NL NULL +#define MGBA_USE_BIOS_LABEL_NL NULL +#define MGBA_USE_BIOS_INFO_0_NL NULL +#define MGBA_SKIP_BIOS_LABEL_NL NULL +#define MGBA_SKIP_BIOS_INFO_0_NL NULL +#define MGBA_GB_COLORS_LABEL_NL NULL +#define MGBA_GB_COLORS_INFO_0_NL NULL +#define OPTION_VAL_GRAYSCALE_NL NULL +#define MGBA_SGB_BORDERS_LABEL_NL NULL +#define MGBA_SGB_BORDERS_INFO_0_NL NULL +#define MGBA_COLOR_CORRECTION_LABEL_NL NULL +#define MGBA_COLOR_CORRECTION_INFO_0_NL NULL +#define OPTION_VAL_AUTO_NL NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_NL NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_NL NULL +#define OPTION_VAL_MIX_NL NULL +#define OPTION_VAL_MIX_SMART_NL NULL +#define OPTION_VAL_LCD_GHOSTING_NL NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_NL NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_NL NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_NL NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_NL NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_NL NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_NL NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_NL NULL +#define OPTION_VAL_5_NL NULL +#define OPTION_VAL_10_NL NULL +#define OPTION_VAL_15_NL NULL +#define OPTION_VAL_20_NL NULL +#define OPTION_VAL_25_NL NULL +#define OPTION_VAL_30_NL NULL +#define OPTION_VAL_35_NL NULL +#define OPTION_VAL_40_NL NULL +#define OPTION_VAL_45_NL NULL +#define OPTION_VAL_50_NL NULL +#define OPTION_VAL_55_NL NULL +#define OPTION_VAL_60_NL NULL +#define OPTION_VAL_65_NL NULL +#define OPTION_VAL_70_NL NULL +#define OPTION_VAL_75_NL NULL +#define OPTION_VAL_80_NL NULL +#define OPTION_VAL_85_NL NULL +#define OPTION_VAL_90_NL NULL +#define OPTION_VAL_95_NL NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_NL NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_NL NULL +#define OPTION_VAL_NO_NL NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_NL NULL +#define MGBA_FORCE_GBP_INFO_0_NL NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_NL NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_NL NULL +#define OPTION_VAL_REMOVE_KNOWN_NL NULL +#define OPTION_VAL_DETECT_AND_REMOVE_NL NULL +#define OPTION_VAL_DON_T_REMOVE_NL NULL +#define MGBA_FRAMESKIP_LABEL_NL NULL +#define MGBA_FRAMESKIP_INFO_0_NL NULL +#define OPTION_VAL_AUTO_THRESHOLD_NL NULL +#define OPTION_VAL_FIXED_INTERVAL_NL NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_NL NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_NL NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_NL NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_NL NULL + +struct retro_core_option_v2_category option_cats_nl[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_NL, + CATEGORY_SYSTEM_INFO_0_NL + }, + { + "video", + CATEGORY_VIDEO_LABEL_NL, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_NL +#else + CATEGORY_VIDEO_INFO_1_NL +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_NL, + CATEGORY_AUDIO_INFO_0_NL + }, + { + "input", + CATEGORY_INPUT_LABEL_NL, + CATEGORY_INPUT_INFO_0_NL + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_NL, + CATEGORY_PERFORMANCE_INFO_0_NL + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_nl[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_NL, + NULL, + MGBA_GB_MODEL_INFO_0_NL, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_NL }, + { "Game Boy", OPTION_VAL_GAME_BOY_NL }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_NL }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_NL }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_NL }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_NL, + NULL, + MGBA_USE_BIOS_INFO_0_NL, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_NL, + NULL, + MGBA_SKIP_BIOS_INFO_0_NL, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_NL, + NULL, + MGBA_GB_COLORS_INFO_0_NL, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_NL }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_NL, + NULL, + MGBA_SGB_BORDERS_INFO_0_NL, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_NL, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_NL, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_NL }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_NL }, + { "Auto", OPTION_VAL_AUTO_NL }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_NL, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_NL, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_NL }, + { "mix_smart", OPTION_VAL_MIX_SMART_NL }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_NL }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_NL }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_NL, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_NL, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_NL, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_NL, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_NL, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_NL, + NULL, + "audio", + { + { "5", OPTION_VAL_5_NL }, + { "10", OPTION_VAL_10_NL }, + { "15", OPTION_VAL_15_NL }, + { "20", OPTION_VAL_20_NL }, + { "25", OPTION_VAL_25_NL }, + { "30", OPTION_VAL_30_NL }, + { "35", OPTION_VAL_35_NL }, + { "40", OPTION_VAL_40_NL }, + { "45", OPTION_VAL_45_NL }, + { "50", OPTION_VAL_50_NL }, + { "55", OPTION_VAL_55_NL }, + { "60", OPTION_VAL_60_NL }, + { "65", OPTION_VAL_65_NL }, + { "70", OPTION_VAL_70_NL }, + { "75", OPTION_VAL_75_NL }, + { "80", OPTION_VAL_80_NL }, + { "85", OPTION_VAL_85_NL }, + { "90", OPTION_VAL_90_NL }, + { "95", OPTION_VAL_95_NL }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_NL, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_NL, + NULL, + "input", + { + { "no", OPTION_VAL_NO_NL }, + { "yes", OPTION_VAL_YES_NL }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_NL, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_NL, + NULL, + MGBA_FORCE_GBP_INFO_0_NL, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_NL, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_NL, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_NL }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_NL }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_NL }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_NL, + NULL, + MGBA_FRAMESKIP_INFO_0_NL, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_NL }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_NL }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_NL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_NL, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_NL, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_NL, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_NL, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_nl = { + option_cats_nl, + option_defs_nl +}; + +/* RETRO_LANGUAGE_OC */ + +#define CATEGORY_SYSTEM_LABEL_OC NULL +#define CATEGORY_SYSTEM_INFO_0_OC NULL +#define CATEGORY_VIDEO_LABEL_OC NULL +#define CATEGORY_VIDEO_INFO_0_OC NULL +#define CATEGORY_VIDEO_INFO_1_OC NULL +#define CATEGORY_AUDIO_LABEL_OC NULL +#define CATEGORY_AUDIO_INFO_0_OC NULL +#define CATEGORY_INPUT_LABEL_OC NULL +#define CATEGORY_INPUT_INFO_0_OC NULL +#define CATEGORY_PERFORMANCE_LABEL_OC NULL +#define CATEGORY_PERFORMANCE_INFO_0_OC NULL +#define MGBA_GB_MODEL_LABEL_OC NULL +#define MGBA_GB_MODEL_INFO_0_OC NULL +#define OPTION_VAL_AUTODETECT_OC NULL +#define OPTION_VAL_GAME_BOY_OC NULL +#define OPTION_VAL_SUPER_GAME_BOY_OC NULL +#define OPTION_VAL_GAME_BOY_COLOR_OC NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_OC NULL +#define MGBA_USE_BIOS_LABEL_OC NULL +#define MGBA_USE_BIOS_INFO_0_OC NULL +#define MGBA_SKIP_BIOS_LABEL_OC NULL +#define MGBA_SKIP_BIOS_INFO_0_OC NULL +#define MGBA_GB_COLORS_LABEL_OC NULL +#define MGBA_GB_COLORS_INFO_0_OC NULL +#define OPTION_VAL_GRAYSCALE_OC NULL +#define MGBA_SGB_BORDERS_LABEL_OC NULL +#define MGBA_SGB_BORDERS_INFO_0_OC NULL +#define MGBA_COLOR_CORRECTION_LABEL_OC NULL +#define MGBA_COLOR_CORRECTION_INFO_0_OC NULL +#define OPTION_VAL_AUTO_OC NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_OC NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_OC NULL +#define OPTION_VAL_MIX_OC NULL +#define OPTION_VAL_MIX_SMART_OC NULL +#define OPTION_VAL_LCD_GHOSTING_OC NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_OC NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_OC NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_OC NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_OC NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_OC NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_OC NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_OC NULL +#define OPTION_VAL_5_OC NULL +#define OPTION_VAL_10_OC NULL +#define OPTION_VAL_15_OC NULL +#define OPTION_VAL_20_OC NULL +#define OPTION_VAL_25_OC NULL +#define OPTION_VAL_30_OC NULL +#define OPTION_VAL_35_OC NULL +#define OPTION_VAL_40_OC NULL +#define OPTION_VAL_45_OC NULL +#define OPTION_VAL_50_OC NULL +#define OPTION_VAL_55_OC NULL +#define OPTION_VAL_60_OC NULL +#define OPTION_VAL_65_OC NULL +#define OPTION_VAL_70_OC NULL +#define OPTION_VAL_75_OC NULL +#define OPTION_VAL_80_OC NULL +#define OPTION_VAL_85_OC NULL +#define OPTION_VAL_90_OC NULL +#define OPTION_VAL_95_OC NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_OC NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_OC NULL +#define OPTION_VAL_NO_OC NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_OC NULL +#define MGBA_FORCE_GBP_INFO_0_OC NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_OC NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_OC NULL +#define OPTION_VAL_REMOVE_KNOWN_OC NULL +#define OPTION_VAL_DETECT_AND_REMOVE_OC NULL +#define OPTION_VAL_DON_T_REMOVE_OC NULL +#define MGBA_FRAMESKIP_LABEL_OC NULL +#define MGBA_FRAMESKIP_INFO_0_OC NULL +#define OPTION_VAL_AUTO_THRESHOLD_OC NULL +#define OPTION_VAL_FIXED_INTERVAL_OC NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_OC NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_OC NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_OC NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_OC NULL + +struct retro_core_option_v2_category option_cats_oc[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_OC, + CATEGORY_SYSTEM_INFO_0_OC + }, + { + "video", + CATEGORY_VIDEO_LABEL_OC, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_OC +#else + CATEGORY_VIDEO_INFO_1_OC +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_OC, + CATEGORY_AUDIO_INFO_0_OC + }, + { + "input", + CATEGORY_INPUT_LABEL_OC, + CATEGORY_INPUT_INFO_0_OC + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_OC, + CATEGORY_PERFORMANCE_INFO_0_OC + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_oc[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_OC, + NULL, + MGBA_GB_MODEL_INFO_0_OC, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_OC }, + { "Game Boy", OPTION_VAL_GAME_BOY_OC }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_OC }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_OC }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_OC }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_OC, + NULL, + MGBA_USE_BIOS_INFO_0_OC, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_OC, + NULL, + MGBA_SKIP_BIOS_INFO_0_OC, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_OC, + NULL, + MGBA_GB_COLORS_INFO_0_OC, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_OC }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_OC, + NULL, + MGBA_SGB_BORDERS_INFO_0_OC, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_OC, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_OC, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_OC }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_OC }, + { "Auto", OPTION_VAL_AUTO_OC }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_OC, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_OC, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_OC }, + { "mix_smart", OPTION_VAL_MIX_SMART_OC }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_OC }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_OC }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_OC, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_OC, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_OC, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_OC, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_OC, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_OC, + NULL, + "audio", + { + { "5", OPTION_VAL_5_OC }, + { "10", OPTION_VAL_10_OC }, + { "15", OPTION_VAL_15_OC }, + { "20", OPTION_VAL_20_OC }, + { "25", OPTION_VAL_25_OC }, + { "30", OPTION_VAL_30_OC }, + { "35", OPTION_VAL_35_OC }, + { "40", OPTION_VAL_40_OC }, + { "45", OPTION_VAL_45_OC }, + { "50", OPTION_VAL_50_OC }, + { "55", OPTION_VAL_55_OC }, + { "60", OPTION_VAL_60_OC }, + { "65", OPTION_VAL_65_OC }, + { "70", OPTION_VAL_70_OC }, + { "75", OPTION_VAL_75_OC }, + { "80", OPTION_VAL_80_OC }, + { "85", OPTION_VAL_85_OC }, + { "90", OPTION_VAL_90_OC }, + { "95", OPTION_VAL_95_OC }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_OC, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_OC, + NULL, + "input", + { + { "no", OPTION_VAL_NO_OC }, + { "yes", OPTION_VAL_YES_OC }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_OC, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_OC, + NULL, + MGBA_FORCE_GBP_INFO_0_OC, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_OC, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_OC, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_OC }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_OC }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_OC }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_OC, + NULL, + MGBA_FRAMESKIP_INFO_0_OC, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_OC }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_OC }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_OC }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_OC, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_OC, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_OC, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_OC, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_oc = { + option_cats_oc, + option_defs_oc +}; + +/* RETRO_LANGUAGE_PL */ + +#define CATEGORY_SYSTEM_LABEL_PL NULL +#define CATEGORY_SYSTEM_INFO_0_PL NULL +#define CATEGORY_VIDEO_LABEL_PL NULL +#define CATEGORY_VIDEO_INFO_0_PL NULL +#define CATEGORY_VIDEO_INFO_1_PL NULL +#define CATEGORY_AUDIO_LABEL_PL NULL +#define CATEGORY_AUDIO_INFO_0_PL NULL +#define CATEGORY_INPUT_LABEL_PL NULL +#define CATEGORY_INPUT_INFO_0_PL NULL +#define CATEGORY_PERFORMANCE_LABEL_PL NULL +#define CATEGORY_PERFORMANCE_INFO_0_PL NULL +#define MGBA_GB_MODEL_LABEL_PL NULL +#define MGBA_GB_MODEL_INFO_0_PL NULL +#define OPTION_VAL_AUTODETECT_PL NULL +#define OPTION_VAL_GAME_BOY_PL NULL +#define OPTION_VAL_SUPER_GAME_BOY_PL NULL +#define OPTION_VAL_GAME_BOY_COLOR_PL NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_PL NULL +#define MGBA_USE_BIOS_LABEL_PL NULL +#define MGBA_USE_BIOS_INFO_0_PL NULL +#define MGBA_SKIP_BIOS_LABEL_PL NULL +#define MGBA_SKIP_BIOS_INFO_0_PL NULL +#define MGBA_GB_COLORS_LABEL_PL NULL +#define MGBA_GB_COLORS_INFO_0_PL NULL +#define OPTION_VAL_GRAYSCALE_PL NULL +#define MGBA_SGB_BORDERS_LABEL_PL NULL +#define MGBA_SGB_BORDERS_INFO_0_PL NULL +#define MGBA_COLOR_CORRECTION_LABEL_PL NULL +#define MGBA_COLOR_CORRECTION_INFO_0_PL NULL +#define OPTION_VAL_AUTO_PL NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_PL NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_PL NULL +#define OPTION_VAL_MIX_PL NULL +#define OPTION_VAL_MIX_SMART_PL NULL +#define OPTION_VAL_LCD_GHOSTING_PL NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_PL NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_PL NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_PL NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_PL NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_PL NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_PL NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_PL NULL +#define OPTION_VAL_5_PL NULL +#define OPTION_VAL_10_PL NULL +#define OPTION_VAL_15_PL NULL +#define OPTION_VAL_20_PL NULL +#define OPTION_VAL_25_PL NULL +#define OPTION_VAL_30_PL NULL +#define OPTION_VAL_35_PL NULL +#define OPTION_VAL_40_PL NULL +#define OPTION_VAL_45_PL NULL +#define OPTION_VAL_50_PL NULL +#define OPTION_VAL_55_PL NULL +#define OPTION_VAL_60_PL NULL +#define OPTION_VAL_65_PL NULL +#define OPTION_VAL_70_PL NULL +#define OPTION_VAL_75_PL NULL +#define OPTION_VAL_80_PL NULL +#define OPTION_VAL_85_PL NULL +#define OPTION_VAL_90_PL NULL +#define OPTION_VAL_95_PL NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_PL NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_PL NULL +#define OPTION_VAL_NO_PL NULL +#define OPTION_VAL_YES_PL NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PL NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PL NULL +#define OPTION_VAL_SENSOR_PL NULL +#define MGBA_FORCE_GBP_LABEL_PL NULL +#define MGBA_FORCE_GBP_INFO_0_PL NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_PL NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_PL NULL +#define OPTION_VAL_REMOVE_KNOWN_PL NULL +#define OPTION_VAL_DETECT_AND_REMOVE_PL NULL +#define OPTION_VAL_DON_T_REMOVE_PL NULL +#define MGBA_FRAMESKIP_LABEL_PL NULL +#define MGBA_FRAMESKIP_INFO_0_PL NULL +#define OPTION_VAL_AUTO_THRESHOLD_PL NULL +#define OPTION_VAL_FIXED_INTERVAL_PL NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_PL NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_PL NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_PL NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_PL NULL + +struct retro_core_option_v2_category option_cats_pl[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_PL, + CATEGORY_SYSTEM_INFO_0_PL + }, + { + "video", + CATEGORY_VIDEO_LABEL_PL, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_PL +#else + CATEGORY_VIDEO_INFO_1_PL +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_PL, + CATEGORY_AUDIO_INFO_0_PL + }, + { + "input", + CATEGORY_INPUT_LABEL_PL, + CATEGORY_INPUT_INFO_0_PL + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_PL, + CATEGORY_PERFORMANCE_INFO_0_PL + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_pl[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_PL, + NULL, + MGBA_GB_MODEL_INFO_0_PL, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_PL }, + { "Game Boy", OPTION_VAL_GAME_BOY_PL }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_PL }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_PL }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_PL }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_PL, + NULL, + MGBA_USE_BIOS_INFO_0_PL, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_PL, + NULL, + MGBA_SKIP_BIOS_INFO_0_PL, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_PL, + NULL, + MGBA_GB_COLORS_INFO_0_PL, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_PL }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_PL, + NULL, + MGBA_SGB_BORDERS_INFO_0_PL, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_PL, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_PL, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_PL }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_PL }, + { "Auto", OPTION_VAL_AUTO_PL }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_PL, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_PL, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_PL }, + { "mix_smart", OPTION_VAL_MIX_SMART_PL }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_PL }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_PL }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_PL, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_PL, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_PL, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_PL, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_PL, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_PL, + NULL, + "audio", + { + { "5", OPTION_VAL_5_PL }, + { "10", OPTION_VAL_10_PL }, + { "15", OPTION_VAL_15_PL }, + { "20", OPTION_VAL_20_PL }, + { "25", OPTION_VAL_25_PL }, + { "30", OPTION_VAL_30_PL }, + { "35", OPTION_VAL_35_PL }, + { "40", OPTION_VAL_40_PL }, + { "45", OPTION_VAL_45_PL }, + { "50", OPTION_VAL_50_PL }, + { "55", OPTION_VAL_55_PL }, + { "60", OPTION_VAL_60_PL }, + { "65", OPTION_VAL_65_PL }, + { "70", OPTION_VAL_70_PL }, + { "75", OPTION_VAL_75_PL }, + { "80", OPTION_VAL_80_PL }, + { "85", OPTION_VAL_85_PL }, + { "90", OPTION_VAL_90_PL }, + { "95", OPTION_VAL_95_PL }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_PL, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_PL, + NULL, + "input", + { + { "no", OPTION_VAL_NO_PL }, + { "yes", OPTION_VAL_YES_PL }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_PL, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_PL, + NULL, + MGBA_FORCE_GBP_INFO_0_PL, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_PL, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_PL, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_PL }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_PL }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_PL }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_PL, + NULL, + MGBA_FRAMESKIP_INFO_0_PL, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_PL }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_PL }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_PL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_PL, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_PL, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_PL, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_PL, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_pl = { + option_cats_pl, + option_defs_pl +}; + +/* RETRO_LANGUAGE_PT_BR */ + +#define CATEGORY_SYSTEM_LABEL_PT_BR NULL +#define CATEGORY_SYSTEM_INFO_0_PT_BR NULL +#define CATEGORY_VIDEO_LABEL_PT_BR NULL +#define CATEGORY_VIDEO_INFO_0_PT_BR NULL +#define CATEGORY_VIDEO_INFO_1_PT_BR NULL +#define CATEGORY_AUDIO_LABEL_PT_BR NULL +#define CATEGORY_AUDIO_INFO_0_PT_BR NULL +#define CATEGORY_INPUT_LABEL_PT_BR NULL +#define CATEGORY_INPUT_INFO_0_PT_BR NULL +#define CATEGORY_PERFORMANCE_LABEL_PT_BR NULL +#define CATEGORY_PERFORMANCE_INFO_0_PT_BR NULL +#define MGBA_GB_MODEL_LABEL_PT_BR NULL +#define MGBA_GB_MODEL_INFO_0_PT_BR NULL +#define OPTION_VAL_AUTODETECT_PT_BR NULL +#define OPTION_VAL_GAME_BOY_PT_BR NULL +#define OPTION_VAL_SUPER_GAME_BOY_PT_BR NULL +#define OPTION_VAL_GAME_BOY_COLOR_PT_BR NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_PT_BR NULL +#define MGBA_USE_BIOS_LABEL_PT_BR NULL +#define MGBA_USE_BIOS_INFO_0_PT_BR NULL +#define MGBA_SKIP_BIOS_LABEL_PT_BR NULL +#define MGBA_SKIP_BIOS_INFO_0_PT_BR NULL +#define MGBA_GB_COLORS_LABEL_PT_BR NULL +#define MGBA_GB_COLORS_INFO_0_PT_BR NULL +#define OPTION_VAL_GRAYSCALE_PT_BR NULL +#define MGBA_SGB_BORDERS_LABEL_PT_BR NULL +#define MGBA_SGB_BORDERS_INFO_0_PT_BR NULL +#define MGBA_COLOR_CORRECTION_LABEL_PT_BR NULL +#define MGBA_COLOR_CORRECTION_INFO_0_PT_BR NULL +#define OPTION_VAL_AUTO_PT_BR NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_PT_BR NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_PT_BR NULL +#define OPTION_VAL_MIX_PT_BR NULL +#define OPTION_VAL_MIX_SMART_PT_BR NULL +#define OPTION_VAL_LCD_GHOSTING_PT_BR NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_PT_BR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_PT_BR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_PT_BR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_PT_BR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_PT_BR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_PT_BR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_PT_BR NULL +#define OPTION_VAL_5_PT_BR NULL +#define OPTION_VAL_10_PT_BR NULL +#define OPTION_VAL_15_PT_BR NULL +#define OPTION_VAL_20_PT_BR NULL +#define OPTION_VAL_25_PT_BR NULL +#define OPTION_VAL_30_PT_BR NULL +#define OPTION_VAL_35_PT_BR NULL +#define OPTION_VAL_40_PT_BR NULL +#define OPTION_VAL_45_PT_BR NULL +#define OPTION_VAL_50_PT_BR NULL +#define OPTION_VAL_55_PT_BR NULL +#define OPTION_VAL_60_PT_BR NULL +#define OPTION_VAL_65_PT_BR NULL +#define OPTION_VAL_70_PT_BR NULL +#define OPTION_VAL_75_PT_BR NULL +#define OPTION_VAL_80_PT_BR NULL +#define OPTION_VAL_85_PT_BR NULL +#define OPTION_VAL_90_PT_BR NULL +#define OPTION_VAL_95_PT_BR NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_PT_BR NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_PT_BR NULL +#define OPTION_VAL_NO_PT_BR NULL +#define OPTION_VAL_YES_PT_BR NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_BR NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_PT_BR NULL +#define OPTION_VAL_SENSOR_PT_BR NULL +#define MGBA_FORCE_GBP_LABEL_PT_BR NULL +#define MGBA_FORCE_GBP_INFO_0_PT_BR NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_PT_BR NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_PT_BR NULL +#define OPTION_VAL_REMOVE_KNOWN_PT_BR NULL +#define OPTION_VAL_DETECT_AND_REMOVE_PT_BR NULL +#define OPTION_VAL_DON_T_REMOVE_PT_BR NULL +#define MGBA_FRAMESKIP_LABEL_PT_BR NULL +#define MGBA_FRAMESKIP_INFO_0_PT_BR NULL +#define OPTION_VAL_AUTO_THRESHOLD_PT_BR NULL +#define OPTION_VAL_FIXED_INTERVAL_PT_BR NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_PT_BR NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_PT_BR NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_PT_BR NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_PT_BR NULL + +struct retro_core_option_v2_category option_cats_pt_br[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_PT_BR, + CATEGORY_SYSTEM_INFO_0_PT_BR + }, + { + "video", + CATEGORY_VIDEO_LABEL_PT_BR, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_PT_BR +#else + CATEGORY_VIDEO_INFO_1_PT_BR +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_PT_BR, + CATEGORY_AUDIO_INFO_0_PT_BR + }, + { + "input", + CATEGORY_INPUT_LABEL_PT_BR, + CATEGORY_INPUT_INFO_0_PT_BR + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_PT_BR, + CATEGORY_PERFORMANCE_INFO_0_PT_BR + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_pt_br[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_PT_BR, + NULL, + MGBA_GB_MODEL_INFO_0_PT_BR, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_PT_BR }, + { "Game Boy", OPTION_VAL_GAME_BOY_PT_BR }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_PT_BR }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_PT_BR }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_PT_BR }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_PT_BR, + NULL, + MGBA_USE_BIOS_INFO_0_PT_BR, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_PT_BR, + NULL, + MGBA_SKIP_BIOS_INFO_0_PT_BR, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_PT_BR, + NULL, + MGBA_GB_COLORS_INFO_0_PT_BR, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_PT_BR }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_PT_BR, + NULL, + MGBA_SGB_BORDERS_INFO_0_PT_BR, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_PT_BR, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_PT_BR, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_PT_BR }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_PT_BR }, + { "Auto", OPTION_VAL_AUTO_PT_BR }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_PT_BR, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_PT_BR, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_PT_BR }, + { "mix_smart", OPTION_VAL_MIX_SMART_PT_BR }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_PT_BR }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_PT_BR }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_PT_BR, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_PT_BR, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_PT_BR, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_PT_BR, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_PT_BR, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_PT_BR, + NULL, + "audio", + { + { "5", OPTION_VAL_5_PT_BR }, + { "10", OPTION_VAL_10_PT_BR }, + { "15", OPTION_VAL_15_PT_BR }, + { "20", OPTION_VAL_20_PT_BR }, + { "25", OPTION_VAL_25_PT_BR }, + { "30", OPTION_VAL_30_PT_BR }, + { "35", OPTION_VAL_35_PT_BR }, + { "40", OPTION_VAL_40_PT_BR }, + { "45", OPTION_VAL_45_PT_BR }, + { "50", OPTION_VAL_50_PT_BR }, + { "55", OPTION_VAL_55_PT_BR }, + { "60", OPTION_VAL_60_PT_BR }, + { "65", OPTION_VAL_65_PT_BR }, + { "70", OPTION_VAL_70_PT_BR }, + { "75", OPTION_VAL_75_PT_BR }, + { "80", OPTION_VAL_80_PT_BR }, + { "85", OPTION_VAL_85_PT_BR }, + { "90", OPTION_VAL_90_PT_BR }, + { "95", OPTION_VAL_95_PT_BR }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_PT_BR, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_PT_BR, + NULL, + "input", + { + { "no", OPTION_VAL_NO_PT_BR }, + { "yes", OPTION_VAL_YES_PT_BR }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_BR, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_PT_BR, + NULL, + MGBA_FORCE_GBP_INFO_0_PT_BR, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_PT_BR, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_PT_BR, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_PT_BR }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_PT_BR }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_PT_BR }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_PT_BR, + NULL, + MGBA_FRAMESKIP_INFO_0_PT_BR, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_PT_BR }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_PT_BR }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_PT_BR }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_PT_BR, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_PT_BR, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_PT_BR, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_PT_BR, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_pt_br = { + option_cats_pt_br, + option_defs_pt_br +}; + +/* RETRO_LANGUAGE_PT_PT */ + +#define CATEGORY_SYSTEM_LABEL_PT_PT NULL +#define CATEGORY_SYSTEM_INFO_0_PT_PT NULL +#define CATEGORY_VIDEO_LABEL_PT_PT NULL +#define CATEGORY_VIDEO_INFO_0_PT_PT NULL +#define CATEGORY_VIDEO_INFO_1_PT_PT NULL +#define CATEGORY_AUDIO_LABEL_PT_PT NULL +#define CATEGORY_AUDIO_INFO_0_PT_PT NULL +#define CATEGORY_INPUT_LABEL_PT_PT NULL +#define CATEGORY_INPUT_INFO_0_PT_PT NULL +#define CATEGORY_PERFORMANCE_LABEL_PT_PT NULL +#define CATEGORY_PERFORMANCE_INFO_0_PT_PT NULL +#define MGBA_GB_MODEL_LABEL_PT_PT NULL +#define MGBA_GB_MODEL_INFO_0_PT_PT NULL +#define OPTION_VAL_AUTODETECT_PT_PT NULL +#define OPTION_VAL_GAME_BOY_PT_PT NULL +#define OPTION_VAL_SUPER_GAME_BOY_PT_PT NULL +#define OPTION_VAL_GAME_BOY_COLOR_PT_PT NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_PT_PT NULL +#define MGBA_USE_BIOS_LABEL_PT_PT NULL +#define MGBA_USE_BIOS_INFO_0_PT_PT NULL +#define MGBA_SKIP_BIOS_LABEL_PT_PT NULL +#define MGBA_SKIP_BIOS_INFO_0_PT_PT NULL +#define MGBA_GB_COLORS_LABEL_PT_PT NULL +#define MGBA_GB_COLORS_INFO_0_PT_PT NULL +#define OPTION_VAL_GRAYSCALE_PT_PT NULL +#define MGBA_SGB_BORDERS_LABEL_PT_PT NULL +#define MGBA_SGB_BORDERS_INFO_0_PT_PT NULL +#define MGBA_COLOR_CORRECTION_LABEL_PT_PT NULL +#define MGBA_COLOR_CORRECTION_INFO_0_PT_PT NULL +#define OPTION_VAL_AUTO_PT_PT NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_PT_PT NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_PT_PT NULL +#define OPTION_VAL_MIX_PT_PT NULL +#define OPTION_VAL_MIX_SMART_PT_PT NULL +#define OPTION_VAL_LCD_GHOSTING_PT_PT NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_PT_PT NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_PT_PT NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_PT_PT NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_PT_PT NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_PT_PT NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_PT_PT NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_PT_PT NULL +#define OPTION_VAL_5_PT_PT NULL +#define OPTION_VAL_10_PT_PT NULL +#define OPTION_VAL_15_PT_PT NULL +#define OPTION_VAL_20_PT_PT NULL +#define OPTION_VAL_25_PT_PT NULL +#define OPTION_VAL_30_PT_PT NULL +#define OPTION_VAL_35_PT_PT NULL +#define OPTION_VAL_40_PT_PT NULL +#define OPTION_VAL_45_PT_PT NULL +#define OPTION_VAL_50_PT_PT NULL +#define OPTION_VAL_55_PT_PT NULL +#define OPTION_VAL_60_PT_PT NULL +#define OPTION_VAL_65_PT_PT NULL +#define OPTION_VAL_70_PT_PT NULL +#define OPTION_VAL_75_PT_PT NULL +#define OPTION_VAL_80_PT_PT NULL +#define OPTION_VAL_85_PT_PT NULL +#define OPTION_VAL_90_PT_PT NULL +#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 OPTION_VAL_NO_PT_PT NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_PT_PT NULL +#define MGBA_FORCE_GBP_INFO_0_PT_PT NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_PT_PT NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_PT_PT NULL +#define OPTION_VAL_REMOVE_KNOWN_PT_PT NULL +#define OPTION_VAL_DETECT_AND_REMOVE_PT_PT NULL +#define OPTION_VAL_DON_T_REMOVE_PT_PT NULL +#define MGBA_FRAMESKIP_LABEL_PT_PT NULL +#define MGBA_FRAMESKIP_INFO_0_PT_PT NULL +#define OPTION_VAL_AUTO_THRESHOLD_PT_PT NULL +#define OPTION_VAL_FIXED_INTERVAL_PT_PT NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_PT_PT NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_PT_PT NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_PT_PT NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_PT_PT NULL + +struct retro_core_option_v2_category option_cats_pt_pt[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_PT_PT, + CATEGORY_SYSTEM_INFO_0_PT_PT + }, + { + "video", + CATEGORY_VIDEO_LABEL_PT_PT, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_PT_PT +#else + CATEGORY_VIDEO_INFO_1_PT_PT +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_PT_PT, + CATEGORY_AUDIO_INFO_0_PT_PT + }, + { + "input", + CATEGORY_INPUT_LABEL_PT_PT, + CATEGORY_INPUT_INFO_0_PT_PT + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_PT_PT, + CATEGORY_PERFORMANCE_INFO_0_PT_PT + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_pt_pt[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_PT_PT, + NULL, + MGBA_GB_MODEL_INFO_0_PT_PT, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_PT_PT }, + { "Game Boy", OPTION_VAL_GAME_BOY_PT_PT }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_PT_PT }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_PT_PT }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_PT_PT }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_PT_PT, + NULL, + MGBA_USE_BIOS_INFO_0_PT_PT, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_PT_PT, + NULL, + MGBA_SKIP_BIOS_INFO_0_PT_PT, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_PT_PT, + NULL, + MGBA_GB_COLORS_INFO_0_PT_PT, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_PT_PT }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_PT_PT, + NULL, + MGBA_SGB_BORDERS_INFO_0_PT_PT, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_PT_PT, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_PT_PT, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_PT_PT }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_PT_PT }, + { "Auto", OPTION_VAL_AUTO_PT_PT }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_PT_PT, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_PT_PT, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_PT_PT }, + { "mix_smart", OPTION_VAL_MIX_SMART_PT_PT }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_PT_PT }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_PT_PT }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_PT_PT, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_PT_PT, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_PT_PT, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_PT_PT, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_PT_PT, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_PT_PT, + NULL, + "audio", + { + { "5", OPTION_VAL_5_PT_PT }, + { "10", OPTION_VAL_10_PT_PT }, + { "15", OPTION_VAL_15_PT_PT }, + { "20", OPTION_VAL_20_PT_PT }, + { "25", OPTION_VAL_25_PT_PT }, + { "30", OPTION_VAL_30_PT_PT }, + { "35", OPTION_VAL_35_PT_PT }, + { "40", OPTION_VAL_40_PT_PT }, + { "45", OPTION_VAL_45_PT_PT }, + { "50", OPTION_VAL_50_PT_PT }, + { "55", OPTION_VAL_55_PT_PT }, + { "60", OPTION_VAL_60_PT_PT }, + { "65", OPTION_VAL_65_PT_PT }, + { "70", OPTION_VAL_70_PT_PT }, + { "75", OPTION_VAL_75_PT_PT }, + { "80", OPTION_VAL_80_PT_PT }, + { "85", OPTION_VAL_85_PT_PT }, + { "90", OPTION_VAL_90_PT_PT }, + { "95", OPTION_VAL_95_PT_PT }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_PT_PT, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_PT_PT, + NULL, + "input", + { + { "no", OPTION_VAL_NO_PT_PT }, + { "yes", OPTION_VAL_YES_PT_PT }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_PT_PT, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_PT_PT, + NULL, + MGBA_FORCE_GBP_INFO_0_PT_PT, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_PT_PT, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_PT_PT, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_PT_PT }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_PT_PT }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_PT_PT }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_PT_PT, + NULL, + MGBA_FRAMESKIP_INFO_0_PT_PT, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_PT_PT }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_PT_PT }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_PT_PT }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_PT_PT, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_PT_PT, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_PT_PT, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_PT_PT, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_pt_pt = { + option_cats_pt_pt, + option_defs_pt_pt +}; + +/* RETRO_LANGUAGE_RO */ + +#define CATEGORY_SYSTEM_LABEL_RO NULL +#define CATEGORY_SYSTEM_INFO_0_RO NULL +#define CATEGORY_VIDEO_LABEL_RO NULL +#define CATEGORY_VIDEO_INFO_0_RO NULL +#define CATEGORY_VIDEO_INFO_1_RO NULL +#define CATEGORY_AUDIO_LABEL_RO NULL +#define CATEGORY_AUDIO_INFO_0_RO NULL +#define CATEGORY_INPUT_LABEL_RO NULL +#define CATEGORY_INPUT_INFO_0_RO NULL +#define CATEGORY_PERFORMANCE_LABEL_RO NULL +#define CATEGORY_PERFORMANCE_INFO_0_RO NULL +#define MGBA_GB_MODEL_LABEL_RO NULL +#define MGBA_GB_MODEL_INFO_0_RO NULL +#define OPTION_VAL_AUTODETECT_RO NULL +#define OPTION_VAL_GAME_BOY_RO NULL +#define OPTION_VAL_SUPER_GAME_BOY_RO NULL +#define OPTION_VAL_GAME_BOY_COLOR_RO NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_RO NULL +#define MGBA_USE_BIOS_LABEL_RO NULL +#define MGBA_USE_BIOS_INFO_0_RO NULL +#define MGBA_SKIP_BIOS_LABEL_RO NULL +#define MGBA_SKIP_BIOS_INFO_0_RO NULL +#define MGBA_GB_COLORS_LABEL_RO NULL +#define MGBA_GB_COLORS_INFO_0_RO NULL +#define OPTION_VAL_GRAYSCALE_RO NULL +#define MGBA_SGB_BORDERS_LABEL_RO NULL +#define MGBA_SGB_BORDERS_INFO_0_RO NULL +#define MGBA_COLOR_CORRECTION_LABEL_RO NULL +#define MGBA_COLOR_CORRECTION_INFO_0_RO NULL +#define OPTION_VAL_AUTO_RO NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_RO NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_RO NULL +#define OPTION_VAL_MIX_RO NULL +#define OPTION_VAL_MIX_SMART_RO NULL +#define OPTION_VAL_LCD_GHOSTING_RO NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_RO NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_RO NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_RO NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_RO NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_RO NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_RO NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_RO NULL +#define OPTION_VAL_5_RO NULL +#define OPTION_VAL_10_RO NULL +#define OPTION_VAL_15_RO NULL +#define OPTION_VAL_20_RO NULL +#define OPTION_VAL_25_RO NULL +#define OPTION_VAL_30_RO NULL +#define OPTION_VAL_35_RO NULL +#define OPTION_VAL_40_RO NULL +#define OPTION_VAL_45_RO NULL +#define OPTION_VAL_50_RO NULL +#define OPTION_VAL_55_RO NULL +#define OPTION_VAL_60_RO NULL +#define OPTION_VAL_65_RO NULL +#define OPTION_VAL_70_RO NULL +#define OPTION_VAL_75_RO NULL +#define OPTION_VAL_80_RO NULL +#define OPTION_VAL_85_RO NULL +#define OPTION_VAL_90_RO NULL +#define OPTION_VAL_95_RO NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_RO NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_RO NULL +#define OPTION_VAL_NO_RO NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_RO NULL +#define MGBA_FORCE_GBP_INFO_0_RO NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_RO NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_RO NULL +#define OPTION_VAL_REMOVE_KNOWN_RO NULL +#define OPTION_VAL_DETECT_AND_REMOVE_RO NULL +#define OPTION_VAL_DON_T_REMOVE_RO NULL +#define MGBA_FRAMESKIP_LABEL_RO NULL +#define MGBA_FRAMESKIP_INFO_0_RO NULL +#define OPTION_VAL_AUTO_THRESHOLD_RO NULL +#define OPTION_VAL_FIXED_INTERVAL_RO NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_RO NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_RO NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_RO NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_RO NULL + +struct retro_core_option_v2_category option_cats_ro[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_RO, + CATEGORY_SYSTEM_INFO_0_RO + }, + { + "video", + CATEGORY_VIDEO_LABEL_RO, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_RO +#else + CATEGORY_VIDEO_INFO_1_RO +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_RO, + CATEGORY_AUDIO_INFO_0_RO + }, + { + "input", + CATEGORY_INPUT_LABEL_RO, + CATEGORY_INPUT_INFO_0_RO + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_RO, + CATEGORY_PERFORMANCE_INFO_0_RO + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_ro[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_RO, + NULL, + MGBA_GB_MODEL_INFO_0_RO, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_RO }, + { "Game Boy", OPTION_VAL_GAME_BOY_RO }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_RO }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_RO }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_RO }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_RO, + NULL, + MGBA_USE_BIOS_INFO_0_RO, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_RO, + NULL, + MGBA_SKIP_BIOS_INFO_0_RO, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_RO, + NULL, + MGBA_GB_COLORS_INFO_0_RO, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_RO }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_RO, + NULL, + MGBA_SGB_BORDERS_INFO_0_RO, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_RO, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_RO, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_RO }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_RO }, + { "Auto", OPTION_VAL_AUTO_RO }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_RO, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_RO, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_RO }, + { "mix_smart", OPTION_VAL_MIX_SMART_RO }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_RO }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_RO }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_RO, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_RO, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_RO, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_RO, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_RO, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_RO, + NULL, + "audio", + { + { "5", OPTION_VAL_5_RO }, + { "10", OPTION_VAL_10_RO }, + { "15", OPTION_VAL_15_RO }, + { "20", OPTION_VAL_20_RO }, + { "25", OPTION_VAL_25_RO }, + { "30", OPTION_VAL_30_RO }, + { "35", OPTION_VAL_35_RO }, + { "40", OPTION_VAL_40_RO }, + { "45", OPTION_VAL_45_RO }, + { "50", OPTION_VAL_50_RO }, + { "55", OPTION_VAL_55_RO }, + { "60", OPTION_VAL_60_RO }, + { "65", OPTION_VAL_65_RO }, + { "70", OPTION_VAL_70_RO }, + { "75", OPTION_VAL_75_RO }, + { "80", OPTION_VAL_80_RO }, + { "85", OPTION_VAL_85_RO }, + { "90", OPTION_VAL_90_RO }, + { "95", OPTION_VAL_95_RO }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_RO, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_RO, + NULL, + "input", + { + { "no", OPTION_VAL_NO_RO }, + { "yes", OPTION_VAL_YES_RO }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_RO, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_RO, + NULL, + MGBA_FORCE_GBP_INFO_0_RO, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_RO, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_RO, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_RO }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_RO }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_RO }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_RO, + NULL, + MGBA_FRAMESKIP_INFO_0_RO, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_RO }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_RO }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_RO }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_RO, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_RO, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_RO, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_RO, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_ro = { + option_cats_ro, + option_defs_ro +}; + +/* RETRO_LANGUAGE_RU */ + +#define CATEGORY_SYSTEM_LABEL_RU NULL +#define CATEGORY_SYSTEM_INFO_0_RU NULL +#define CATEGORY_VIDEO_LABEL_RU NULL +#define CATEGORY_VIDEO_INFO_0_RU NULL +#define CATEGORY_VIDEO_INFO_1_RU NULL +#define CATEGORY_AUDIO_LABEL_RU NULL +#define CATEGORY_AUDIO_INFO_0_RU NULL +#define CATEGORY_INPUT_LABEL_RU NULL +#define CATEGORY_INPUT_INFO_0_RU NULL +#define CATEGORY_PERFORMANCE_LABEL_RU NULL +#define CATEGORY_PERFORMANCE_INFO_0_RU NULL +#define MGBA_GB_MODEL_LABEL_RU NULL +#define MGBA_GB_MODEL_INFO_0_RU NULL +#define OPTION_VAL_AUTODETECT_RU NULL +#define OPTION_VAL_GAME_BOY_RU NULL +#define OPTION_VAL_SUPER_GAME_BOY_RU NULL +#define OPTION_VAL_GAME_BOY_COLOR_RU NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_RU NULL +#define MGBA_USE_BIOS_LABEL_RU NULL +#define MGBA_USE_BIOS_INFO_0_RU NULL +#define MGBA_SKIP_BIOS_LABEL_RU NULL +#define MGBA_SKIP_BIOS_INFO_0_RU NULL +#define MGBA_GB_COLORS_LABEL_RU NULL +#define MGBA_GB_COLORS_INFO_0_RU NULL +#define OPTION_VAL_GRAYSCALE_RU NULL +#define MGBA_SGB_BORDERS_LABEL_RU NULL +#define MGBA_SGB_BORDERS_INFO_0_RU NULL +#define MGBA_COLOR_CORRECTION_LABEL_RU NULL +#define MGBA_COLOR_CORRECTION_INFO_0_RU NULL +#define OPTION_VAL_AUTO_RU NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_RU NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_RU NULL +#define OPTION_VAL_MIX_RU NULL +#define OPTION_VAL_MIX_SMART_RU NULL +#define OPTION_VAL_LCD_GHOSTING_RU NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_RU NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_RU NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_RU NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_RU NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_RU NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_RU NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_RU NULL +#define OPTION_VAL_5_RU NULL +#define OPTION_VAL_10_RU NULL +#define OPTION_VAL_15_RU NULL +#define OPTION_VAL_20_RU NULL +#define OPTION_VAL_25_RU NULL +#define OPTION_VAL_30_RU NULL +#define OPTION_VAL_35_RU NULL +#define OPTION_VAL_40_RU NULL +#define OPTION_VAL_45_RU NULL +#define OPTION_VAL_50_RU NULL +#define OPTION_VAL_55_RU NULL +#define OPTION_VAL_60_RU NULL +#define OPTION_VAL_65_RU NULL +#define OPTION_VAL_70_RU NULL +#define OPTION_VAL_75_RU NULL +#define OPTION_VAL_80_RU NULL +#define OPTION_VAL_85_RU NULL +#define OPTION_VAL_90_RU NULL +#define OPTION_VAL_95_RU NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_RU NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_RU NULL +#define OPTION_VAL_NO_RU NULL +#define OPTION_VAL_YES_RU NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_RU NULL +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_RU NULL +#define OPTION_VAL_SENSOR_RU NULL +#define MGBA_FORCE_GBP_LABEL_RU NULL +#define MGBA_FORCE_GBP_INFO_0_RU NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_RU NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_RU NULL +#define OPTION_VAL_REMOVE_KNOWN_RU NULL +#define OPTION_VAL_DETECT_AND_REMOVE_RU NULL +#define OPTION_VAL_DON_T_REMOVE_RU NULL +#define MGBA_FRAMESKIP_LABEL_RU NULL +#define MGBA_FRAMESKIP_INFO_0_RU NULL +#define OPTION_VAL_AUTO_THRESHOLD_RU NULL +#define OPTION_VAL_FIXED_INTERVAL_RU NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_RU NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_RU NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_RU NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_RU NULL + +struct retro_core_option_v2_category option_cats_ru[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_RU, + CATEGORY_SYSTEM_INFO_0_RU + }, + { + "video", + CATEGORY_VIDEO_LABEL_RU, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_RU +#else + CATEGORY_VIDEO_INFO_1_RU +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_RU, + CATEGORY_AUDIO_INFO_0_RU + }, + { + "input", + CATEGORY_INPUT_LABEL_RU, + CATEGORY_INPUT_INFO_0_RU + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_RU, + CATEGORY_PERFORMANCE_INFO_0_RU + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_ru[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_RU, + NULL, + MGBA_GB_MODEL_INFO_0_RU, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_RU }, + { "Game Boy", OPTION_VAL_GAME_BOY_RU }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_RU }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_RU }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_RU }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_RU, + NULL, + MGBA_USE_BIOS_INFO_0_RU, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_RU, + NULL, + MGBA_SKIP_BIOS_INFO_0_RU, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_RU, + NULL, + MGBA_GB_COLORS_INFO_0_RU, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_RU }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_RU, + NULL, + MGBA_SGB_BORDERS_INFO_0_RU, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_RU, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_RU, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_RU }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_RU }, + { "Auto", OPTION_VAL_AUTO_RU }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_RU, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_RU, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_RU }, + { "mix_smart", OPTION_VAL_MIX_SMART_RU }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_RU }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_RU }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_RU, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_RU, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_RU, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_RU, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_RU, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_RU, + NULL, + "audio", + { + { "5", OPTION_VAL_5_RU }, + { "10", OPTION_VAL_10_RU }, + { "15", OPTION_VAL_15_RU }, + { "20", OPTION_VAL_20_RU }, + { "25", OPTION_VAL_25_RU }, + { "30", OPTION_VAL_30_RU }, + { "35", OPTION_VAL_35_RU }, + { "40", OPTION_VAL_40_RU }, + { "45", OPTION_VAL_45_RU }, + { "50", OPTION_VAL_50_RU }, + { "55", OPTION_VAL_55_RU }, + { "60", OPTION_VAL_60_RU }, + { "65", OPTION_VAL_65_RU }, + { "70", OPTION_VAL_70_RU }, + { "75", OPTION_VAL_75_RU }, + { "80", OPTION_VAL_80_RU }, + { "85", OPTION_VAL_85_RU }, + { "90", OPTION_VAL_90_RU }, + { "95", OPTION_VAL_95_RU }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_RU, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_RU, + NULL, + "input", + { + { "no", OPTION_VAL_NO_RU }, + { "yes", OPTION_VAL_YES_RU }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_RU, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_RU, + NULL, + MGBA_FORCE_GBP_INFO_0_RU, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_RU, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_RU, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_RU }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_RU }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_RU }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_RU, + NULL, + MGBA_FRAMESKIP_INFO_0_RU, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_RU }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_RU }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_RU }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_RU, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_RU, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_RU, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_RU, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_ru = { + option_cats_ru, + option_defs_ru +}; + +/* RETRO_LANGUAGE_SI */ + +#define CATEGORY_SYSTEM_LABEL_SI NULL +#define CATEGORY_SYSTEM_INFO_0_SI NULL +#define CATEGORY_VIDEO_LABEL_SI NULL +#define CATEGORY_VIDEO_INFO_0_SI NULL +#define CATEGORY_VIDEO_INFO_1_SI NULL +#define CATEGORY_AUDIO_LABEL_SI NULL +#define CATEGORY_AUDIO_INFO_0_SI NULL +#define CATEGORY_INPUT_LABEL_SI NULL +#define CATEGORY_INPUT_INFO_0_SI NULL +#define CATEGORY_PERFORMANCE_LABEL_SI NULL +#define CATEGORY_PERFORMANCE_INFO_0_SI NULL +#define MGBA_GB_MODEL_LABEL_SI NULL +#define MGBA_GB_MODEL_INFO_0_SI NULL +#define OPTION_VAL_AUTODETECT_SI NULL +#define OPTION_VAL_GAME_BOY_SI NULL +#define OPTION_VAL_SUPER_GAME_BOY_SI NULL +#define OPTION_VAL_GAME_BOY_COLOR_SI NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_SI NULL +#define MGBA_USE_BIOS_LABEL_SI NULL +#define MGBA_USE_BIOS_INFO_0_SI NULL +#define MGBA_SKIP_BIOS_LABEL_SI NULL +#define MGBA_SKIP_BIOS_INFO_0_SI NULL +#define MGBA_GB_COLORS_LABEL_SI NULL +#define MGBA_GB_COLORS_INFO_0_SI NULL +#define OPTION_VAL_GRAYSCALE_SI NULL +#define MGBA_SGB_BORDERS_LABEL_SI NULL +#define MGBA_SGB_BORDERS_INFO_0_SI NULL +#define MGBA_COLOR_CORRECTION_LABEL_SI NULL +#define MGBA_COLOR_CORRECTION_INFO_0_SI NULL +#define OPTION_VAL_AUTO_SI NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_SI NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_SI NULL +#define OPTION_VAL_MIX_SI NULL +#define OPTION_VAL_MIX_SMART_SI NULL +#define OPTION_VAL_LCD_GHOSTING_SI NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_SI NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_SI NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_SI NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_SI NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_SI NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_SI NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_SI NULL +#define OPTION_VAL_5_SI NULL +#define OPTION_VAL_10_SI NULL +#define OPTION_VAL_15_SI NULL +#define OPTION_VAL_20_SI NULL +#define OPTION_VAL_25_SI NULL +#define OPTION_VAL_30_SI NULL +#define OPTION_VAL_35_SI NULL +#define OPTION_VAL_40_SI NULL +#define OPTION_VAL_45_SI NULL +#define OPTION_VAL_50_SI NULL +#define OPTION_VAL_55_SI NULL +#define OPTION_VAL_60_SI NULL +#define OPTION_VAL_65_SI NULL +#define OPTION_VAL_70_SI NULL +#define OPTION_VAL_75_SI NULL +#define OPTION_VAL_80_SI NULL +#define OPTION_VAL_85_SI NULL +#define OPTION_VAL_90_SI NULL +#define OPTION_VAL_95_SI NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SI NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SI NULL +#define OPTION_VAL_NO_SI NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_SI NULL +#define MGBA_FORCE_GBP_INFO_0_SI NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_SI NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_SI NULL +#define OPTION_VAL_REMOVE_KNOWN_SI NULL +#define OPTION_VAL_DETECT_AND_REMOVE_SI NULL +#define OPTION_VAL_DON_T_REMOVE_SI NULL +#define MGBA_FRAMESKIP_LABEL_SI NULL +#define MGBA_FRAMESKIP_INFO_0_SI NULL +#define OPTION_VAL_AUTO_THRESHOLD_SI NULL +#define OPTION_VAL_FIXED_INTERVAL_SI NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_SI NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_SI NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_SI NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_SI NULL + +struct retro_core_option_v2_category option_cats_si[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_SI, + CATEGORY_SYSTEM_INFO_0_SI + }, + { + "video", + CATEGORY_VIDEO_LABEL_SI, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_SI +#else + CATEGORY_VIDEO_INFO_1_SI +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_SI, + CATEGORY_AUDIO_INFO_0_SI + }, + { + "input", + CATEGORY_INPUT_LABEL_SI, + CATEGORY_INPUT_INFO_0_SI + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_SI, + CATEGORY_PERFORMANCE_INFO_0_SI + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_si[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_SI, + NULL, + MGBA_GB_MODEL_INFO_0_SI, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_SI }, + { "Game Boy", OPTION_VAL_GAME_BOY_SI }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_SI }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_SI }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_SI }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_SI, + NULL, + MGBA_USE_BIOS_INFO_0_SI, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_SI, + NULL, + MGBA_SKIP_BIOS_INFO_0_SI, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_SI, + NULL, + MGBA_GB_COLORS_INFO_0_SI, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_SI }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_SI, + NULL, + MGBA_SGB_BORDERS_INFO_0_SI, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_SI, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_SI, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_SI }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_SI }, + { "Auto", OPTION_VAL_AUTO_SI }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_SI, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_SI, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_SI }, + { "mix_smart", OPTION_VAL_MIX_SMART_SI }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_SI }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_SI }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_SI, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_SI, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_SI, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_SI, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_SI, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_SI, + NULL, + "audio", + { + { "5", OPTION_VAL_5_SI }, + { "10", OPTION_VAL_10_SI }, + { "15", OPTION_VAL_15_SI }, + { "20", OPTION_VAL_20_SI }, + { "25", OPTION_VAL_25_SI }, + { "30", OPTION_VAL_30_SI }, + { "35", OPTION_VAL_35_SI }, + { "40", OPTION_VAL_40_SI }, + { "45", OPTION_VAL_45_SI }, + { "50", OPTION_VAL_50_SI }, + { "55", OPTION_VAL_55_SI }, + { "60", OPTION_VAL_60_SI }, + { "65", OPTION_VAL_65_SI }, + { "70", OPTION_VAL_70_SI }, + { "75", OPTION_VAL_75_SI }, + { "80", OPTION_VAL_80_SI }, + { "85", OPTION_VAL_85_SI }, + { "90", OPTION_VAL_90_SI }, + { "95", OPTION_VAL_95_SI }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SI, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SI, + NULL, + "input", + { + { "no", OPTION_VAL_NO_SI }, + { "yes", OPTION_VAL_YES_SI }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_SI, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_SI, + NULL, + MGBA_FORCE_GBP_INFO_0_SI, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_SI, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_SI, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_SI }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_SI }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_SI }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_SI, + NULL, + MGBA_FRAMESKIP_INFO_0_SI, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_SI }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_SI }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_SI }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_SI, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_SI, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_SI, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_SI, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_si = { + option_cats_si, + option_defs_si +}; + +/* RETRO_LANGUAGE_SK */ + +#define CATEGORY_SYSTEM_LABEL_SK NULL +#define CATEGORY_SYSTEM_INFO_0_SK NULL +#define CATEGORY_VIDEO_LABEL_SK NULL +#define CATEGORY_VIDEO_INFO_0_SK NULL +#define CATEGORY_VIDEO_INFO_1_SK NULL +#define CATEGORY_AUDIO_LABEL_SK NULL +#define CATEGORY_AUDIO_INFO_0_SK NULL +#define CATEGORY_INPUT_LABEL_SK NULL +#define CATEGORY_INPUT_INFO_0_SK NULL +#define CATEGORY_PERFORMANCE_LABEL_SK NULL +#define CATEGORY_PERFORMANCE_INFO_0_SK NULL +#define MGBA_GB_MODEL_LABEL_SK NULL +#define MGBA_GB_MODEL_INFO_0_SK NULL +#define OPTION_VAL_AUTODETECT_SK NULL +#define OPTION_VAL_GAME_BOY_SK NULL +#define OPTION_VAL_SUPER_GAME_BOY_SK NULL +#define OPTION_VAL_GAME_BOY_COLOR_SK NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_SK NULL +#define MGBA_USE_BIOS_LABEL_SK NULL +#define MGBA_USE_BIOS_INFO_0_SK NULL +#define MGBA_SKIP_BIOS_LABEL_SK NULL +#define MGBA_SKIP_BIOS_INFO_0_SK NULL +#define MGBA_GB_COLORS_LABEL_SK NULL +#define MGBA_GB_COLORS_INFO_0_SK NULL +#define OPTION_VAL_GRAYSCALE_SK NULL +#define MGBA_SGB_BORDERS_LABEL_SK NULL +#define MGBA_SGB_BORDERS_INFO_0_SK NULL +#define MGBA_COLOR_CORRECTION_LABEL_SK NULL +#define MGBA_COLOR_CORRECTION_INFO_0_SK NULL +#define OPTION_VAL_AUTO_SK NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_SK NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_SK NULL +#define OPTION_VAL_MIX_SK NULL +#define OPTION_VAL_MIX_SMART_SK NULL +#define OPTION_VAL_LCD_GHOSTING_SK NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_SK NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_SK NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_SK NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_SK NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_SK NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_SK NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_SK NULL +#define OPTION_VAL_5_SK NULL +#define OPTION_VAL_10_SK NULL +#define OPTION_VAL_15_SK NULL +#define OPTION_VAL_20_SK NULL +#define OPTION_VAL_25_SK NULL +#define OPTION_VAL_30_SK NULL +#define OPTION_VAL_35_SK NULL +#define OPTION_VAL_40_SK NULL +#define OPTION_VAL_45_SK NULL +#define OPTION_VAL_50_SK NULL +#define OPTION_VAL_55_SK NULL +#define OPTION_VAL_60_SK NULL +#define OPTION_VAL_65_SK NULL +#define OPTION_VAL_70_SK NULL +#define OPTION_VAL_75_SK NULL +#define OPTION_VAL_80_SK NULL +#define OPTION_VAL_85_SK NULL +#define OPTION_VAL_90_SK NULL +#define OPTION_VAL_95_SK NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SK NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SK NULL +#define OPTION_VAL_NO_SK NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_SK NULL +#define MGBA_FORCE_GBP_INFO_0_SK NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_SK NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_SK NULL +#define OPTION_VAL_REMOVE_KNOWN_SK NULL +#define OPTION_VAL_DETECT_AND_REMOVE_SK NULL +#define OPTION_VAL_DON_T_REMOVE_SK NULL +#define MGBA_FRAMESKIP_LABEL_SK NULL +#define MGBA_FRAMESKIP_INFO_0_SK NULL +#define OPTION_VAL_AUTO_THRESHOLD_SK NULL +#define OPTION_VAL_FIXED_INTERVAL_SK NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_SK NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_SK NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_SK NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_SK NULL + +struct retro_core_option_v2_category option_cats_sk[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_SK, + CATEGORY_SYSTEM_INFO_0_SK + }, + { + "video", + CATEGORY_VIDEO_LABEL_SK, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_SK +#else + CATEGORY_VIDEO_INFO_1_SK +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_SK, + CATEGORY_AUDIO_INFO_0_SK + }, + { + "input", + CATEGORY_INPUT_LABEL_SK, + CATEGORY_INPUT_INFO_0_SK + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_SK, + CATEGORY_PERFORMANCE_INFO_0_SK + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_sk[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_SK, + NULL, + MGBA_GB_MODEL_INFO_0_SK, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_SK }, + { "Game Boy", OPTION_VAL_GAME_BOY_SK }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_SK }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_SK }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_SK }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_SK, + NULL, + MGBA_USE_BIOS_INFO_0_SK, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_SK, + NULL, + MGBA_SKIP_BIOS_INFO_0_SK, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_SK, + NULL, + MGBA_GB_COLORS_INFO_0_SK, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_SK }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_SK, + NULL, + MGBA_SGB_BORDERS_INFO_0_SK, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_SK, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_SK, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_SK }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_SK }, + { "Auto", OPTION_VAL_AUTO_SK }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_SK, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_SK, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_SK }, + { "mix_smart", OPTION_VAL_MIX_SMART_SK }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_SK }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_SK }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_SK, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_SK, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_SK, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_SK, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_SK, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_SK, + NULL, + "audio", + { + { "5", OPTION_VAL_5_SK }, + { "10", OPTION_VAL_10_SK }, + { "15", OPTION_VAL_15_SK }, + { "20", OPTION_VAL_20_SK }, + { "25", OPTION_VAL_25_SK }, + { "30", OPTION_VAL_30_SK }, + { "35", OPTION_VAL_35_SK }, + { "40", OPTION_VAL_40_SK }, + { "45", OPTION_VAL_45_SK }, + { "50", OPTION_VAL_50_SK }, + { "55", OPTION_VAL_55_SK }, + { "60", OPTION_VAL_60_SK }, + { "65", OPTION_VAL_65_SK }, + { "70", OPTION_VAL_70_SK }, + { "75", OPTION_VAL_75_SK }, + { "80", OPTION_VAL_80_SK }, + { "85", OPTION_VAL_85_SK }, + { "90", OPTION_VAL_90_SK }, + { "95", OPTION_VAL_95_SK }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SK, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SK, + NULL, + "input", + { + { "no", OPTION_VAL_NO_SK }, + { "yes", OPTION_VAL_YES_SK }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_SK, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_SK, + NULL, + MGBA_FORCE_GBP_INFO_0_SK, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_SK, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_SK, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_SK }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_SK }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_SK }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_SK, + NULL, + MGBA_FRAMESKIP_INFO_0_SK, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_SK }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_SK }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_SK }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_SK, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_SK, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_SK, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_SK, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_sk = { + option_cats_sk, + option_defs_sk +}; + +/* RETRO_LANGUAGE_SR */ + +#define CATEGORY_SYSTEM_LABEL_SR NULL +#define CATEGORY_SYSTEM_INFO_0_SR NULL +#define CATEGORY_VIDEO_LABEL_SR NULL +#define CATEGORY_VIDEO_INFO_0_SR NULL +#define CATEGORY_VIDEO_INFO_1_SR NULL +#define CATEGORY_AUDIO_LABEL_SR NULL +#define CATEGORY_AUDIO_INFO_0_SR NULL +#define CATEGORY_INPUT_LABEL_SR NULL +#define CATEGORY_INPUT_INFO_0_SR NULL +#define CATEGORY_PERFORMANCE_LABEL_SR NULL +#define CATEGORY_PERFORMANCE_INFO_0_SR NULL +#define MGBA_GB_MODEL_LABEL_SR NULL +#define MGBA_GB_MODEL_INFO_0_SR NULL +#define OPTION_VAL_AUTODETECT_SR NULL +#define OPTION_VAL_GAME_BOY_SR NULL +#define OPTION_VAL_SUPER_GAME_BOY_SR NULL +#define OPTION_VAL_GAME_BOY_COLOR_SR NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_SR NULL +#define MGBA_USE_BIOS_LABEL_SR NULL +#define MGBA_USE_BIOS_INFO_0_SR NULL +#define MGBA_SKIP_BIOS_LABEL_SR NULL +#define MGBA_SKIP_BIOS_INFO_0_SR NULL +#define MGBA_GB_COLORS_LABEL_SR NULL +#define MGBA_GB_COLORS_INFO_0_SR NULL +#define OPTION_VAL_GRAYSCALE_SR NULL +#define MGBA_SGB_BORDERS_LABEL_SR NULL +#define MGBA_SGB_BORDERS_INFO_0_SR NULL +#define MGBA_COLOR_CORRECTION_LABEL_SR NULL +#define MGBA_COLOR_CORRECTION_INFO_0_SR NULL +#define OPTION_VAL_AUTO_SR NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_SR NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_SR NULL +#define OPTION_VAL_MIX_SR NULL +#define OPTION_VAL_MIX_SMART_SR NULL +#define OPTION_VAL_LCD_GHOSTING_SR NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_SR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_SR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_SR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_SR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_SR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_SR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_SR NULL +#define OPTION_VAL_5_SR NULL +#define OPTION_VAL_10_SR NULL +#define OPTION_VAL_15_SR NULL +#define OPTION_VAL_20_SR NULL +#define OPTION_VAL_25_SR NULL +#define OPTION_VAL_30_SR NULL +#define OPTION_VAL_35_SR NULL +#define OPTION_VAL_40_SR NULL +#define OPTION_VAL_45_SR NULL +#define OPTION_VAL_50_SR NULL +#define OPTION_VAL_55_SR NULL +#define OPTION_VAL_60_SR NULL +#define OPTION_VAL_65_SR NULL +#define OPTION_VAL_70_SR NULL +#define OPTION_VAL_75_SR NULL +#define OPTION_VAL_80_SR NULL +#define OPTION_VAL_85_SR NULL +#define OPTION_VAL_90_SR NULL +#define OPTION_VAL_95_SR NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SR NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SR NULL +#define OPTION_VAL_NO_SR NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_SR NULL +#define MGBA_FORCE_GBP_INFO_0_SR NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_SR NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_SR NULL +#define OPTION_VAL_REMOVE_KNOWN_SR NULL +#define OPTION_VAL_DETECT_AND_REMOVE_SR NULL +#define OPTION_VAL_DON_T_REMOVE_SR NULL +#define MGBA_FRAMESKIP_LABEL_SR NULL +#define MGBA_FRAMESKIP_INFO_0_SR NULL +#define OPTION_VAL_AUTO_THRESHOLD_SR NULL +#define OPTION_VAL_FIXED_INTERVAL_SR NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_SR NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_SR NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_SR NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_SR NULL + +struct retro_core_option_v2_category option_cats_sr[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_SR, + CATEGORY_SYSTEM_INFO_0_SR + }, + { + "video", + CATEGORY_VIDEO_LABEL_SR, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_SR +#else + CATEGORY_VIDEO_INFO_1_SR +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_SR, + CATEGORY_AUDIO_INFO_0_SR + }, + { + "input", + CATEGORY_INPUT_LABEL_SR, + CATEGORY_INPUT_INFO_0_SR + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_SR, + CATEGORY_PERFORMANCE_INFO_0_SR + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_sr[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_SR, + NULL, + MGBA_GB_MODEL_INFO_0_SR, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_SR }, + { "Game Boy", OPTION_VAL_GAME_BOY_SR }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_SR }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_SR }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_SR }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_SR, + NULL, + MGBA_USE_BIOS_INFO_0_SR, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_SR, + NULL, + MGBA_SKIP_BIOS_INFO_0_SR, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_SR, + NULL, + MGBA_GB_COLORS_INFO_0_SR, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_SR }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_SR, + NULL, + MGBA_SGB_BORDERS_INFO_0_SR, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_SR, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_SR, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_SR }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_SR }, + { "Auto", OPTION_VAL_AUTO_SR }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_SR, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_SR, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_SR }, + { "mix_smart", OPTION_VAL_MIX_SMART_SR }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_SR }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_SR }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_SR, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_SR, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_SR, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_SR, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_SR, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_SR, + NULL, + "audio", + { + { "5", OPTION_VAL_5_SR }, + { "10", OPTION_VAL_10_SR }, + { "15", OPTION_VAL_15_SR }, + { "20", OPTION_VAL_20_SR }, + { "25", OPTION_VAL_25_SR }, + { "30", OPTION_VAL_30_SR }, + { "35", OPTION_VAL_35_SR }, + { "40", OPTION_VAL_40_SR }, + { "45", OPTION_VAL_45_SR }, + { "50", OPTION_VAL_50_SR }, + { "55", OPTION_VAL_55_SR }, + { "60", OPTION_VAL_60_SR }, + { "65", OPTION_VAL_65_SR }, + { "70", OPTION_VAL_70_SR }, + { "75", OPTION_VAL_75_SR }, + { "80", OPTION_VAL_80_SR }, + { "85", OPTION_VAL_85_SR }, + { "90", OPTION_VAL_90_SR }, + { "95", OPTION_VAL_95_SR }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SR, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SR, + NULL, + "input", + { + { "no", OPTION_VAL_NO_SR }, + { "yes", OPTION_VAL_YES_SR }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_SR, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_SR, + NULL, + MGBA_FORCE_GBP_INFO_0_SR, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_SR, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_SR, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_SR }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_SR }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_SR }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_SR, + NULL, + MGBA_FRAMESKIP_INFO_0_SR, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_SR }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_SR }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_SR }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_SR, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_SR, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_SR, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_SR, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_sr = { + option_cats_sr, + option_defs_sr +}; + +/* RETRO_LANGUAGE_SV */ + +#define CATEGORY_SYSTEM_LABEL_SV NULL +#define CATEGORY_SYSTEM_INFO_0_SV NULL +#define CATEGORY_VIDEO_LABEL_SV NULL +#define CATEGORY_VIDEO_INFO_0_SV NULL +#define CATEGORY_VIDEO_INFO_1_SV NULL +#define CATEGORY_AUDIO_LABEL_SV NULL +#define CATEGORY_AUDIO_INFO_0_SV NULL +#define CATEGORY_INPUT_LABEL_SV NULL +#define CATEGORY_INPUT_INFO_0_SV NULL +#define CATEGORY_PERFORMANCE_LABEL_SV NULL +#define CATEGORY_PERFORMANCE_INFO_0_SV NULL +#define MGBA_GB_MODEL_LABEL_SV NULL +#define MGBA_GB_MODEL_INFO_0_SV NULL +#define OPTION_VAL_AUTODETECT_SV NULL +#define OPTION_VAL_GAME_BOY_SV NULL +#define OPTION_VAL_SUPER_GAME_BOY_SV NULL +#define OPTION_VAL_GAME_BOY_COLOR_SV NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_SV NULL +#define MGBA_USE_BIOS_LABEL_SV NULL +#define MGBA_USE_BIOS_INFO_0_SV NULL +#define MGBA_SKIP_BIOS_LABEL_SV NULL +#define MGBA_SKIP_BIOS_INFO_0_SV NULL +#define MGBA_GB_COLORS_LABEL_SV NULL +#define MGBA_GB_COLORS_INFO_0_SV NULL +#define OPTION_VAL_GRAYSCALE_SV NULL +#define MGBA_SGB_BORDERS_LABEL_SV NULL +#define MGBA_SGB_BORDERS_INFO_0_SV NULL +#define MGBA_COLOR_CORRECTION_LABEL_SV NULL +#define MGBA_COLOR_CORRECTION_INFO_0_SV NULL +#define OPTION_VAL_AUTO_SV NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_SV NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_SV NULL +#define OPTION_VAL_MIX_SV NULL +#define OPTION_VAL_MIX_SMART_SV NULL +#define OPTION_VAL_LCD_GHOSTING_SV NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_SV NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_SV NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_SV NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_SV NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_SV NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_SV NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_SV NULL +#define OPTION_VAL_5_SV NULL +#define OPTION_VAL_10_SV NULL +#define OPTION_VAL_15_SV NULL +#define OPTION_VAL_20_SV NULL +#define OPTION_VAL_25_SV NULL +#define OPTION_VAL_30_SV NULL +#define OPTION_VAL_35_SV NULL +#define OPTION_VAL_40_SV NULL +#define OPTION_VAL_45_SV NULL +#define OPTION_VAL_50_SV NULL +#define OPTION_VAL_55_SV NULL +#define OPTION_VAL_60_SV NULL +#define OPTION_VAL_65_SV NULL +#define OPTION_VAL_70_SV NULL +#define OPTION_VAL_75_SV NULL +#define OPTION_VAL_80_SV NULL +#define OPTION_VAL_85_SV NULL +#define OPTION_VAL_90_SV NULL +#define OPTION_VAL_95_SV NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SV NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SV NULL +#define OPTION_VAL_NO_SV NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_SV NULL +#define MGBA_FORCE_GBP_INFO_0_SV NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_SV NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_SV NULL +#define OPTION_VAL_REMOVE_KNOWN_SV NULL +#define OPTION_VAL_DETECT_AND_REMOVE_SV NULL +#define OPTION_VAL_DON_T_REMOVE_SV NULL +#define MGBA_FRAMESKIP_LABEL_SV NULL +#define MGBA_FRAMESKIP_INFO_0_SV NULL +#define OPTION_VAL_AUTO_THRESHOLD_SV NULL +#define OPTION_VAL_FIXED_INTERVAL_SV NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_SV NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_SV NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_SV NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_SV NULL + +struct retro_core_option_v2_category option_cats_sv[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_SV, + CATEGORY_SYSTEM_INFO_0_SV + }, + { + "video", + CATEGORY_VIDEO_LABEL_SV, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_SV +#else + CATEGORY_VIDEO_INFO_1_SV +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_SV, + CATEGORY_AUDIO_INFO_0_SV + }, + { + "input", + CATEGORY_INPUT_LABEL_SV, + CATEGORY_INPUT_INFO_0_SV + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_SV, + CATEGORY_PERFORMANCE_INFO_0_SV + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_sv[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_SV, + NULL, + MGBA_GB_MODEL_INFO_0_SV, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_SV }, + { "Game Boy", OPTION_VAL_GAME_BOY_SV }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_SV }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_SV }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_SV }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_SV, + NULL, + MGBA_USE_BIOS_INFO_0_SV, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_SV, + NULL, + MGBA_SKIP_BIOS_INFO_0_SV, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_SV, + NULL, + MGBA_GB_COLORS_INFO_0_SV, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_SV }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_SV, + NULL, + MGBA_SGB_BORDERS_INFO_0_SV, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_SV, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_SV, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_SV }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_SV }, + { "Auto", OPTION_VAL_AUTO_SV }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_SV, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_SV, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_SV }, + { "mix_smart", OPTION_VAL_MIX_SMART_SV }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_SV }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_SV }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_SV, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_SV, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_SV, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_SV, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_SV, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_SV, + NULL, + "audio", + { + { "5", OPTION_VAL_5_SV }, + { "10", OPTION_VAL_10_SV }, + { "15", OPTION_VAL_15_SV }, + { "20", OPTION_VAL_20_SV }, + { "25", OPTION_VAL_25_SV }, + { "30", OPTION_VAL_30_SV }, + { "35", OPTION_VAL_35_SV }, + { "40", OPTION_VAL_40_SV }, + { "45", OPTION_VAL_45_SV }, + { "50", OPTION_VAL_50_SV }, + { "55", OPTION_VAL_55_SV }, + { "60", OPTION_VAL_60_SV }, + { "65", OPTION_VAL_65_SV }, + { "70", OPTION_VAL_70_SV }, + { "75", OPTION_VAL_75_SV }, + { "80", OPTION_VAL_80_SV }, + { "85", OPTION_VAL_85_SV }, + { "90", OPTION_VAL_90_SV }, + { "95", OPTION_VAL_95_SV }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_SV, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_SV, + NULL, + "input", + { + { "no", OPTION_VAL_NO_SV }, + { "yes", OPTION_VAL_YES_SV }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_SV, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_SV, + NULL, + MGBA_FORCE_GBP_INFO_0_SV, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_SV, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_SV, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_SV }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_SV }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_SV }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_SV, + NULL, + MGBA_FRAMESKIP_INFO_0_SV, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_SV }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_SV }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_SV }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_SV, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_SV, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_SV, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_SV, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_sv = { + option_cats_sv, + option_defs_sv +}; + +/* RETRO_LANGUAGE_TR */ + +#define CATEGORY_SYSTEM_LABEL_TR NULL +#define CATEGORY_SYSTEM_INFO_0_TR NULL +#define CATEGORY_VIDEO_LABEL_TR NULL +#define CATEGORY_VIDEO_INFO_0_TR NULL +#define CATEGORY_VIDEO_INFO_1_TR NULL +#define CATEGORY_AUDIO_LABEL_TR NULL +#define CATEGORY_AUDIO_INFO_0_TR NULL +#define CATEGORY_INPUT_LABEL_TR NULL +#define CATEGORY_INPUT_INFO_0_TR NULL +#define CATEGORY_PERFORMANCE_LABEL_TR NULL +#define CATEGORY_PERFORMANCE_INFO_0_TR NULL +#define MGBA_GB_MODEL_LABEL_TR "Game Boy Modeli (yeniden başlatma gerektirir)" +#define MGBA_GB_MODEL_INFO_0_TR "Yüklenen içeriği belirli bir Game Boy modeliyle çalıştırır. 'Otomatik Tespit' mevcut oyun için en uygun modeli seçecektir." +#define OPTION_VAL_AUTODETECT_TR "Otomatik Tespit" +#define OPTION_VAL_GAME_BOY_TR NULL +#define OPTION_VAL_SUPER_GAME_BOY_TR NULL +#define OPTION_VAL_GAME_BOY_COLOR_TR NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_TR NULL +#define MGBA_USE_BIOS_LABEL_TR "Bulunursa BIOS Dosyasını kullanın (yeniden başlatma gerektirir)" +#define MGBA_USE_BIOS_INFO_0_TR "RetroArch'ın sistem dizininde varsa, öykünülmüş donanım için resmi BIOS/önyükleyici kullanır." +#define MGBA_SKIP_BIOS_LABEL_TR "BIOS Girişini Atla (yeniden başlatma gerektirir)" +#define MGBA_SKIP_BIOS_INFO_0_TR "Resmi bir BIOS / önyükleyici kullanırken, başlangıç logosu animasyonunu atlayın. Bu ayar, 'Bulunursa BIOS Dosyasını Kullan' devre dışı bırakıldığında geçersiz sayılır." +#define MGBA_GB_COLORS_LABEL_TR NULL +#define MGBA_GB_COLORS_INFO_0_TR NULL +#define OPTION_VAL_GRAYSCALE_TR NULL +#define MGBA_SGB_BORDERS_LABEL_TR "Super Game Boy Sınırlarını kullanın (yeniden başlatma gerekir)" +#define MGBA_SGB_BORDERS_INFO_0_TR "Super Game Boy gelişmiş oyunlarını çalıştırırken Super Game Boy sınırlarını görüntüleR." +#define MGBA_COLOR_CORRECTION_LABEL_TR "Renk Düzeltmesi" +#define MGBA_COLOR_CORRECTION_INFO_0_TR "Çıktı renklerini gerçek GBA / GBC donanımının görüntüsüyle eşleşecek şekilde ayarlar." +#define OPTION_VAL_AUTO_TR "Otomatik" +#define MGBA_INTERFRAME_BLENDING_LABEL_TR NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_TR NULL +#define OPTION_VAL_MIX_TR NULL +#define OPTION_VAL_MIX_SMART_TR NULL +#define OPTION_VAL_LCD_GHOSTING_TR NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_TR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_TR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_TR NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_TR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_TR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_TR NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_TR NULL +#define OPTION_VAL_5_TR NULL +#define OPTION_VAL_10_TR NULL +#define OPTION_VAL_15_TR NULL +#define OPTION_VAL_20_TR NULL +#define OPTION_VAL_25_TR NULL +#define OPTION_VAL_30_TR NULL +#define OPTION_VAL_35_TR NULL +#define OPTION_VAL_40_TR NULL +#define OPTION_VAL_45_TR NULL +#define OPTION_VAL_50_TR NULL +#define OPTION_VAL_55_TR NULL +#define OPTION_VAL_60_TR NULL +#define OPTION_VAL_65_TR NULL +#define OPTION_VAL_70_TR NULL +#define OPTION_VAL_75_TR NULL +#define OPTION_VAL_80_TR NULL +#define OPTION_VAL_85_TR NULL +#define OPTION_VAL_90_TR NULL +#define OPTION_VAL_95_TR NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_TR "Karşı Yönlü Girdiye Çıkmaya İ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 OPTION_VAL_NO_TR NULL +#define OPTION_VAL_YES_TR NULL +#define MGBA_SOLAR_SENSOR_LEVEL_LABEL_TR "Güneş Sensörü Seviyesi" +#define MGBA_SOLAR_SENSOR_LEVEL_INFO_0_TR "Ortam güneş ışığının yoğunluğunu ayarlar. Boktai serisi, kartuşlarına güneş sensörü içeren oyunlar tarafından kullanılabilir." +#define OPTION_VAL_SENSOR_TR "Sensörü" +#define MGBA_FORCE_GBP_LABEL_TR NULL +#define MGBA_FORCE_GBP_INFO_0_TR NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_TR "Boşta Döngü Kaldırma" +#define MGBA_IDLE_OPTIMIZATION_INFO_0_TR "'Boşta döngüler' denilen sistemi optimize ederek sistem yükünü azaltın - hiçbir şeyin olmadığı koddaki bölümler için, CPU tam hızda çalıştırır (boşa dönen bir araba gibi). Performansı arttırır ve düşük kaliteli donanımlarda etkinleştirilmesi gerekir." +#define OPTION_VAL_REMOVE_KNOWN_TR "Bilinenleri Kaldır" +#define OPTION_VAL_DETECT_AND_REMOVE_TR "Algıla ve Kaldır" +#define OPTION_VAL_DON_T_REMOVE_TR "Kaldırma" +#define MGBA_FRAMESKIP_LABEL_TR NULL +#define MGBA_FRAMESKIP_INFO_0_TR NULL +#define OPTION_VAL_AUTO_THRESHOLD_TR NULL +#define OPTION_VAL_FIXED_INTERVAL_TR NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_TR NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_TR NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_TR NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_TR NULL + +struct retro_core_option_v2_category option_cats_tr[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_TR, + CATEGORY_SYSTEM_INFO_0_TR + }, + { + "video", + CATEGORY_VIDEO_LABEL_TR, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_TR +#else + CATEGORY_VIDEO_INFO_1_TR +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_TR, + CATEGORY_AUDIO_INFO_0_TR + }, + { + "input", + CATEGORY_INPUT_LABEL_TR, + CATEGORY_INPUT_INFO_0_TR + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_TR, + CATEGORY_PERFORMANCE_INFO_0_TR + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_tr[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_TR, + NULL, + MGBA_GB_MODEL_INFO_0_TR, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_TR }, + { "Game Boy", OPTION_VAL_GAME_BOY_TR }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_TR }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_TR }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_TR }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_TR, + NULL, + MGBA_USE_BIOS_INFO_0_TR, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_TR, + NULL, + MGBA_SKIP_BIOS_INFO_0_TR, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_TR, + NULL, + MGBA_GB_COLORS_INFO_0_TR, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_TR }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_TR, + NULL, + MGBA_SGB_BORDERS_INFO_0_TR, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_TR, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_TR, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_TR }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_TR }, + { "Auto", OPTION_VAL_AUTO_TR }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_TR, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_TR, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_TR }, + { "mix_smart", OPTION_VAL_MIX_SMART_TR }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_TR }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_TR }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_TR, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_TR, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_TR, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_TR, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_TR, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_TR, + NULL, + "audio", + { + { "5", OPTION_VAL_5_TR }, + { "10", OPTION_VAL_10_TR }, + { "15", OPTION_VAL_15_TR }, + { "20", OPTION_VAL_20_TR }, + { "25", OPTION_VAL_25_TR }, + { "30", OPTION_VAL_30_TR }, + { "35", OPTION_VAL_35_TR }, + { "40", OPTION_VAL_40_TR }, + { "45", OPTION_VAL_45_TR }, + { "50", OPTION_VAL_50_TR }, + { "55", OPTION_VAL_55_TR }, + { "60", OPTION_VAL_60_TR }, + { "65", OPTION_VAL_65_TR }, + { "70", OPTION_VAL_70_TR }, + { "75", OPTION_VAL_75_TR }, + { "80", OPTION_VAL_80_TR }, + { "85", OPTION_VAL_85_TR }, + { "90", OPTION_VAL_90_TR }, + { "95", OPTION_VAL_95_TR }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_TR, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_TR, + NULL, + "input", + { + { "no", OPTION_VAL_NO_TR }, + { "yes", OPTION_VAL_YES_TR }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_TR, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_TR, + NULL, + MGBA_FORCE_GBP_INFO_0_TR, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_TR, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_TR, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_TR }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_TR }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_TR }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_TR, + NULL, + MGBA_FRAMESKIP_INFO_0_TR, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_TR }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_TR }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_TR }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_TR, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_TR, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_TR, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_TR, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; struct retro_core_options_v2 options_tr = { option_cats_tr, option_defs_tr }; +/* RETRO_LANGUAGE_UK */ + +#define CATEGORY_SYSTEM_LABEL_UK NULL +#define CATEGORY_SYSTEM_INFO_0_UK NULL +#define CATEGORY_VIDEO_LABEL_UK NULL +#define CATEGORY_VIDEO_INFO_0_UK NULL +#define CATEGORY_VIDEO_INFO_1_UK NULL +#define CATEGORY_AUDIO_LABEL_UK NULL +#define CATEGORY_AUDIO_INFO_0_UK NULL +#define CATEGORY_INPUT_LABEL_UK NULL +#define CATEGORY_INPUT_INFO_0_UK NULL +#define CATEGORY_PERFORMANCE_LABEL_UK NULL +#define CATEGORY_PERFORMANCE_INFO_0_UK NULL +#define MGBA_GB_MODEL_LABEL_UK NULL +#define MGBA_GB_MODEL_INFO_0_UK NULL +#define OPTION_VAL_AUTODETECT_UK NULL +#define OPTION_VAL_GAME_BOY_UK NULL +#define OPTION_VAL_SUPER_GAME_BOY_UK NULL +#define OPTION_VAL_GAME_BOY_COLOR_UK NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_UK NULL +#define MGBA_USE_BIOS_LABEL_UK NULL +#define MGBA_USE_BIOS_INFO_0_UK NULL +#define MGBA_SKIP_BIOS_LABEL_UK NULL +#define MGBA_SKIP_BIOS_INFO_0_UK NULL +#define MGBA_GB_COLORS_LABEL_UK NULL +#define MGBA_GB_COLORS_INFO_0_UK NULL +#define OPTION_VAL_GRAYSCALE_UK NULL +#define MGBA_SGB_BORDERS_LABEL_UK NULL +#define MGBA_SGB_BORDERS_INFO_0_UK NULL +#define MGBA_COLOR_CORRECTION_LABEL_UK NULL +#define MGBA_COLOR_CORRECTION_INFO_0_UK NULL +#define OPTION_VAL_AUTO_UK NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_UK NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_UK NULL +#define OPTION_VAL_MIX_UK NULL +#define OPTION_VAL_MIX_SMART_UK NULL +#define OPTION_VAL_LCD_GHOSTING_UK NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_UK NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_UK NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_UK NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_UK NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_UK NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_UK NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_UK NULL +#define OPTION_VAL_5_UK NULL +#define OPTION_VAL_10_UK NULL +#define OPTION_VAL_15_UK NULL +#define OPTION_VAL_20_UK NULL +#define OPTION_VAL_25_UK NULL +#define OPTION_VAL_30_UK NULL +#define OPTION_VAL_35_UK NULL +#define OPTION_VAL_40_UK NULL +#define OPTION_VAL_45_UK NULL +#define OPTION_VAL_50_UK NULL +#define OPTION_VAL_55_UK NULL +#define OPTION_VAL_60_UK NULL +#define OPTION_VAL_65_UK NULL +#define OPTION_VAL_70_UK NULL +#define OPTION_VAL_75_UK NULL +#define OPTION_VAL_80_UK NULL +#define OPTION_VAL_85_UK NULL +#define OPTION_VAL_90_UK NULL +#define OPTION_VAL_95_UK NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_UK NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_UK NULL +#define OPTION_VAL_NO_UK NULL +#define OPTION_VAL_YES_UK NULL +#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_FORCE_GBP_LABEL_UK NULL +#define MGBA_FORCE_GBP_INFO_0_UK NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_UK NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_UK NULL +#define OPTION_VAL_REMOVE_KNOWN_UK NULL +#define OPTION_VAL_DETECT_AND_REMOVE_UK NULL +#define OPTION_VAL_DON_T_REMOVE_UK NULL +#define MGBA_FRAMESKIP_LABEL_UK NULL +#define MGBA_FRAMESKIP_INFO_0_UK NULL +#define OPTION_VAL_AUTO_THRESHOLD_UK NULL +#define OPTION_VAL_FIXED_INTERVAL_UK NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_UK NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_UK NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_UK NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_UK NULL + +struct retro_core_option_v2_category option_cats_uk[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_UK, + CATEGORY_SYSTEM_INFO_0_UK + }, + { + "video", + CATEGORY_VIDEO_LABEL_UK, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_UK +#else + CATEGORY_VIDEO_INFO_1_UK +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_UK, + CATEGORY_AUDIO_INFO_0_UK + }, + { + "input", + CATEGORY_INPUT_LABEL_UK, + CATEGORY_INPUT_INFO_0_UK + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_UK, + CATEGORY_PERFORMANCE_INFO_0_UK + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_uk[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_UK, + NULL, + MGBA_GB_MODEL_INFO_0_UK, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_UK }, + { "Game Boy", OPTION_VAL_GAME_BOY_UK }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_UK }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_UK }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_UK }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_UK, + NULL, + MGBA_USE_BIOS_INFO_0_UK, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_UK, + NULL, + MGBA_SKIP_BIOS_INFO_0_UK, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_UK, + NULL, + MGBA_GB_COLORS_INFO_0_UK, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_UK }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_UK, + NULL, + MGBA_SGB_BORDERS_INFO_0_UK, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_UK, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_UK, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_UK }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_UK }, + { "Auto", OPTION_VAL_AUTO_UK }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_UK, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_UK, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_UK }, + { "mix_smart", OPTION_VAL_MIX_SMART_UK }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_UK }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_UK }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_UK, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_UK, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_UK, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_UK, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_UK, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_UK, + NULL, + "audio", + { + { "5", OPTION_VAL_5_UK }, + { "10", OPTION_VAL_10_UK }, + { "15", OPTION_VAL_15_UK }, + { "20", OPTION_VAL_20_UK }, + { "25", OPTION_VAL_25_UK }, + { "30", OPTION_VAL_30_UK }, + { "35", OPTION_VAL_35_UK }, + { "40", OPTION_VAL_40_UK }, + { "45", OPTION_VAL_45_UK }, + { "50", OPTION_VAL_50_UK }, + { "55", OPTION_VAL_55_UK }, + { "60", OPTION_VAL_60_UK }, + { "65", OPTION_VAL_65_UK }, + { "70", OPTION_VAL_70_UK }, + { "75", OPTION_VAL_75_UK }, + { "80", OPTION_VAL_80_UK }, + { "85", OPTION_VAL_85_UK }, + { "90", OPTION_VAL_90_UK }, + { "95", OPTION_VAL_95_UK }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_UK, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_UK, + NULL, + "input", + { + { "no", OPTION_VAL_NO_UK }, + { "yes", OPTION_VAL_YES_UK }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_UK, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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 }, + }, + "0" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_UK, + NULL, + MGBA_FORCE_GBP_INFO_0_UK, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_UK, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_UK, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_UK }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_UK }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_UK }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_UK, + NULL, + MGBA_FRAMESKIP_INFO_0_UK, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_UK }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_UK }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_UK }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_UK, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_UK, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_UK, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_UK, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_uk = { + option_cats_uk, + option_defs_uk +}; + +/* RETRO_LANGUAGE_VN */ + +#define CATEGORY_SYSTEM_LABEL_VN NULL +#define CATEGORY_SYSTEM_INFO_0_VN NULL +#define CATEGORY_VIDEO_LABEL_VN NULL +#define CATEGORY_VIDEO_INFO_0_VN NULL +#define CATEGORY_VIDEO_INFO_1_VN NULL +#define CATEGORY_AUDIO_LABEL_VN NULL +#define CATEGORY_AUDIO_INFO_0_VN NULL +#define CATEGORY_INPUT_LABEL_VN NULL +#define CATEGORY_INPUT_INFO_0_VN NULL +#define CATEGORY_PERFORMANCE_LABEL_VN NULL +#define CATEGORY_PERFORMANCE_INFO_0_VN NULL +#define MGBA_GB_MODEL_LABEL_VN NULL +#define MGBA_GB_MODEL_INFO_0_VN NULL +#define OPTION_VAL_AUTODETECT_VN NULL +#define OPTION_VAL_GAME_BOY_VN NULL +#define OPTION_VAL_SUPER_GAME_BOY_VN NULL +#define OPTION_VAL_GAME_BOY_COLOR_VN NULL +#define OPTION_VAL_GAME_BOY_ADVANCE_VN NULL +#define MGBA_USE_BIOS_LABEL_VN NULL +#define MGBA_USE_BIOS_INFO_0_VN NULL +#define MGBA_SKIP_BIOS_LABEL_VN NULL +#define MGBA_SKIP_BIOS_INFO_0_VN NULL +#define MGBA_GB_COLORS_LABEL_VN NULL +#define MGBA_GB_COLORS_INFO_0_VN NULL +#define OPTION_VAL_GRAYSCALE_VN NULL +#define MGBA_SGB_BORDERS_LABEL_VN NULL +#define MGBA_SGB_BORDERS_INFO_0_VN NULL +#define MGBA_COLOR_CORRECTION_LABEL_VN NULL +#define MGBA_COLOR_CORRECTION_INFO_0_VN NULL +#define OPTION_VAL_AUTO_VN NULL +#define MGBA_INTERFRAME_BLENDING_LABEL_VN NULL +#define MGBA_INTERFRAME_BLENDING_INFO_0_VN NULL +#define OPTION_VAL_MIX_VN NULL +#define OPTION_VAL_MIX_SMART_VN NULL +#define OPTION_VAL_LCD_GHOSTING_VN NULL +#define OPTION_VAL_LCD_GHOSTING_FAST_VN NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_VN NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_VN NULL +#define MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_VN NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_VN NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_VN NULL +#define MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_VN NULL +#define OPTION_VAL_5_VN NULL +#define OPTION_VAL_10_VN NULL +#define OPTION_VAL_15_VN NULL +#define OPTION_VAL_20_VN NULL +#define OPTION_VAL_25_VN NULL +#define OPTION_VAL_30_VN NULL +#define OPTION_VAL_35_VN NULL +#define OPTION_VAL_40_VN NULL +#define OPTION_VAL_45_VN NULL +#define OPTION_VAL_50_VN NULL +#define OPTION_VAL_55_VN NULL +#define OPTION_VAL_60_VN NULL +#define OPTION_VAL_65_VN NULL +#define OPTION_VAL_70_VN NULL +#define OPTION_VAL_75_VN NULL +#define OPTION_VAL_80_VN NULL +#define OPTION_VAL_85_VN NULL +#define OPTION_VAL_90_VN NULL +#define OPTION_VAL_95_VN NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_VN NULL +#define MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_VN NULL +#define OPTION_VAL_NO_VN NULL +#define OPTION_VAL_YES_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_FORCE_GBP_LABEL_VN NULL +#define MGBA_FORCE_GBP_INFO_0_VN NULL +#define MGBA_IDLE_OPTIMIZATION_LABEL_VN NULL +#define MGBA_IDLE_OPTIMIZATION_INFO_0_VN NULL +#define OPTION_VAL_REMOVE_KNOWN_VN NULL +#define OPTION_VAL_DETECT_AND_REMOVE_VN NULL +#define OPTION_VAL_DON_T_REMOVE_VN NULL +#define MGBA_FRAMESKIP_LABEL_VN NULL +#define MGBA_FRAMESKIP_INFO_0_VN NULL +#define OPTION_VAL_AUTO_THRESHOLD_VN NULL +#define OPTION_VAL_FIXED_INTERVAL_VN NULL +#define MGBA_FRAMESKIP_THRESHOLD_LABEL_VN NULL +#define MGBA_FRAMESKIP_THRESHOLD_INFO_0_VN NULL +#define MGBA_FRAMESKIP_INTERVAL_LABEL_VN NULL +#define MGBA_FRAMESKIP_INTERVAL_INFO_0_VN NULL + +struct retro_core_option_v2_category option_cats_vn[] = { + { + "system", + CATEGORY_SYSTEM_LABEL_VN, + CATEGORY_SYSTEM_INFO_0_VN + }, + { + "video", + CATEGORY_VIDEO_LABEL_VN, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + CATEGORY_VIDEO_INFO_0_VN +#else + CATEGORY_VIDEO_INFO_1_VN +#endif + }, + { + "audio", + CATEGORY_AUDIO_LABEL_VN, + CATEGORY_AUDIO_INFO_0_VN + }, + { + "input", + CATEGORY_INPUT_LABEL_VN, + CATEGORY_INPUT_INFO_0_VN + }, + { + "performance", + CATEGORY_PERFORMANCE_LABEL_VN, + CATEGORY_PERFORMANCE_INFO_0_VN + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_vn[] = { + { + "mgba_gb_model", + MGBA_GB_MODEL_LABEL_VN, + NULL, + MGBA_GB_MODEL_INFO_0_VN, + NULL, + "system", + { + { "Autodetect", OPTION_VAL_AUTODETECT_VN }, + { "Game Boy", OPTION_VAL_GAME_BOY_VN }, + { "Super Game Boy", OPTION_VAL_SUPER_GAME_BOY_VN }, + { "Game Boy Color", OPTION_VAL_GAME_BOY_COLOR_VN }, + { "Game Boy Advance", OPTION_VAL_GAME_BOY_ADVANCE_VN }, + { NULL, NULL }, + }, + "Autodetect" + }, + { + "mgba_use_bios", + MGBA_USE_BIOS_LABEL_VN, + NULL, + MGBA_USE_BIOS_INFO_0_VN, + NULL, + "system", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, + { + "mgba_skip_bios", + MGBA_SKIP_BIOS_LABEL_VN, + NULL, + MGBA_SKIP_BIOS_INFO_0_VN, + NULL, + "system", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_gb_colors", + MGBA_GB_COLORS_LABEL_VN, + NULL, + MGBA_GB_COLORS_INFO_0_VN, + NULL, + "video", + { + /* This list is populated at runtime */ + { "Grayscale", OPTION_VAL_GRAYSCALE_VN }, + { NULL, NULL }, + }, + "Grayscale" + }, + { + "mgba_sgb_borders", + MGBA_SGB_BORDERS_LABEL_VN, + NULL, + MGBA_SGB_BORDERS_INFO_0_VN, + NULL, + "video", + { + { "ON", "enabled" }, + { "OFF", "disabled" }, + { NULL, NULL }, + }, + "ON" + }, +#if defined(COLOR_16_BIT) && defined(COLOR_5_6_5) + { + "mgba_color_correction", + MGBA_COLOR_CORRECTION_LABEL_VN, + NULL, + MGBA_COLOR_CORRECTION_INFO_0_VN, + NULL, + "video", + { + { "OFF", "disabled" }, + { "GBA", OPTION_VAL_GAME_BOY_ADVANCE_VN }, + { "GBC", OPTION_VAL_GAME_BOY_COLOR_VN }, + { "Auto", OPTION_VAL_AUTO_VN }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_interframe_blending", + MGBA_INTERFRAME_BLENDING_LABEL_VN, + NULL, + MGBA_INTERFRAME_BLENDING_INFO_0_VN, + NULL, + "video", + { + { "OFF", "disabled" }, + { "mix", OPTION_VAL_MIX_VN }, + { "mix_smart", OPTION_VAL_MIX_SMART_VN }, + { "lcd_ghosting", OPTION_VAL_LCD_GHOSTING_VN }, + { "lcd_ghosting_fast", OPTION_VAL_LCD_GHOSTING_FAST_VN }, + { NULL, NULL }, + }, + "OFF" + }, +#endif + { + "mgba_audio_low_pass_filter", + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_VN, + MGBA_AUDIO_LOW_PASS_FILTER_LABEL_CAT_VN, + MGBA_AUDIO_LOW_PASS_FILTER_INFO_0_VN, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_audio_low_pass_range", + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_VN, + MGBA_AUDIO_LOW_PASS_RANGE_LABEL_CAT_VN, + MGBA_AUDIO_LOW_PASS_RANGE_INFO_0_VN, + NULL, + "audio", + { + { "5", OPTION_VAL_5_VN }, + { "10", OPTION_VAL_10_VN }, + { "15", OPTION_VAL_15_VN }, + { "20", OPTION_VAL_20_VN }, + { "25", OPTION_VAL_25_VN }, + { "30", OPTION_VAL_30_VN }, + { "35", OPTION_VAL_35_VN }, + { "40", OPTION_VAL_40_VN }, + { "45", OPTION_VAL_45_VN }, + { "50", OPTION_VAL_50_VN }, + { "55", OPTION_VAL_55_VN }, + { "60", OPTION_VAL_60_VN }, + { "65", OPTION_VAL_65_VN }, + { "70", OPTION_VAL_70_VN }, + { "75", OPTION_VAL_75_VN }, + { "80", OPTION_VAL_80_VN }, + { "85", OPTION_VAL_85_VN }, + { "90", OPTION_VAL_90_VN }, + { "95", OPTION_VAL_95_VN }, + { NULL, NULL }, + }, + "60" + }, + { + "mgba_allow_opposing_directions", + MGBA_ALLOW_OPPOSING_DIRECTIONS_LABEL_VN, + NULL, + MGBA_ALLOW_OPPOSING_DIRECTIONS_INFO_0_VN, + NULL, + "input", + { + { "no", OPTION_VAL_NO_VN }, + { "yes", OPTION_VAL_YES_VN }, + { NULL, NULL }, + }, + "no" + }, + { + "mgba_solar_sensor_level", + MGBA_SOLAR_SENSOR_LEVEL_LABEL_VN, + NULL, + MGBA_SOLAR_SENSOR_LEVEL_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" + }, + { + "mgba_force_gbp", + MGBA_FORCE_GBP_LABEL_VN, + NULL, + MGBA_FORCE_GBP_INFO_0_VN, + NULL, + "input", + { + { "OFF", "disabled" }, + { "ON", "enabled" }, + { NULL, NULL }, + }, + "OFF" + }, + { + "mgba_idle_optimization", + MGBA_IDLE_OPTIMIZATION_LABEL_VN, + NULL, + MGBA_IDLE_OPTIMIZATION_INFO_0_VN, + NULL, + "performance", + { + { "Remove Known", OPTION_VAL_REMOVE_KNOWN_VN }, + { "Detect and Remove", OPTION_VAL_DETECT_AND_REMOVE_VN }, + { "Don't Remove", OPTION_VAL_DON_T_REMOVE_VN }, + { NULL, NULL }, + }, + "Remove Known" + }, + { + "mgba_frameskip", + MGBA_FRAMESKIP_LABEL_VN, + NULL, + MGBA_FRAMESKIP_INFO_0_VN, + NULL, + "performance", + { + { "disabled", NULL }, + { "auto", OPTION_VAL_AUTO_VN }, + { "auto_threshold", OPTION_VAL_AUTO_THRESHOLD_VN }, + { "fixed_interval", OPTION_VAL_FIXED_INTERVAL_VN }, + { NULL, NULL }, + }, + "disabled" + }, + { + "mgba_frameskip_threshold", + MGBA_FRAMESKIP_THRESHOLD_LABEL_VN, + NULL, + MGBA_FRAMESKIP_THRESHOLD_INFO_0_VN, + NULL, + "performance", + { + { "15", NULL }, + { "18", NULL }, + { "21", NULL }, + { "24", NULL }, + { "27", NULL }, + { "30", NULL }, + { "33", NULL }, + { "36", NULL }, + { "39", NULL }, + { "42", NULL }, + { "45", NULL }, + { "48", NULL }, + { "51", NULL }, + { "54", NULL }, + { "57", NULL }, + { "60", NULL }, + { NULL, NULL }, + }, + "33" + }, + { + "mgba_frameskip_interval", + MGBA_FRAMESKIP_INTERVAL_LABEL_VN, + NULL, + MGBA_FRAMESKIP_INTERVAL_INFO_0_VN, + NULL, + "performance", + { + { "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" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_vn = { + option_cats_vn, + option_defs_vn +}; + + #ifdef __cplusplus } #endif -#endif +#endif \ No newline at end of file