From a0f582bc938e7c4d7d164b76d3ea3b9d152bdac0 Mon Sep 17 00:00:00 2001 From: DisasterMo Date: Sat, 4 Dec 2021 17:28:14 +0100 Subject: [PATCH] Add automatic Crowdin synchronization --- .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 | 476 + libretro/libretro-common/include/libretro.h | 1170 +- libretro/libretro.cpp | 15 +- libretro/libretro_core_options.h | 460 +- libretro/libretro_core_options_intl.h | 25197 +++++++++++++++++- 20 files changed, 28396 insertions(+), 244 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 0000000..84842b9 --- /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: + - '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 "nestopia" "libretro/libretro_core_options.h" diff --git a/.github/workflows/crowdin_translate.yml b/.github/workflows/crowdin_translate.yml new file mode 100644 index 0000000..3a10952 --- /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: '15 19 * * 5' # Fridays at 7:15 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 "nestopia" "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 "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 0000000..458f3d3 --- /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 0000000..0ef70c2 --- /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 0000000..afbdd29 --- /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_]*))\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 0000000..54a4cf9 --- /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 0000000..c81de77 --- /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 0000000..bfc9aa9 --- /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 0000000..52fb770 --- /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 0000000..8a66602 --- /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 0000000..d3e7027 --- /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 0000000..5ce74dd --- /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 0000000..1df39ef --- /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 0000000..9d90a50 --- /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 0000000..6bfff92 --- /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 0000000..453183d --- /dev/null +++ b/intl/v1_to_v2_converter.py @@ -0,0 +1,476 @@ +#!/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 +import glob + + +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__': + 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) + 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] + + H_FILE_PATH = core_op_file + INTL_FILE_PATH = core_op_file.replace("libretro_core_options.h", '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/libretro/libretro-common/include/libretro.h b/libretro/libretro-common/include/libretro.h index 06f7ea2..2f17483 100644 --- a/libretro/libretro-common/include/libretro.h +++ b/libretro/libretro-common/include/libretro.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2018 The RetroArch team +/* Copyright (C) 2010-2020 The RetroArch team * * --------------------------------------------------------------------------------------- * The following license statement only applies to this libretro API header (libretro.h). @@ -278,6 +278,11 @@ enum retro_language RETRO_LANGUAGE_ARABIC = 16, RETRO_LANGUAGE_GREEK = 17, RETRO_LANGUAGE_TURKISH = 18, + RETRO_LANGUAGE_SLOVAK = 19, + RETRO_LANGUAGE_PERSIAN = 20, + RETRO_LANGUAGE_HEBREW = 21, + RETRO_LANGUAGE_ASTURIAN = 22, + RETRO_LANGUAGE_FINNISH = 23, RETRO_LANGUAGE_LAST, /* Ensure sizeof(enum) == sizeof(int) */ @@ -708,6 +713,9 @@ enum retro_mod * state of rumble motors in controllers. * A strong and weak motor is supported, and they can be * controlled indepedently. + * Should be called from either retro_init() or retro_load_game(). + * Should not be called from retro_set_environment(). + * Returns false if rumble functionality is unavailable. */ #define RETRO_ENVIRONMENT_GET_INPUT_DEVICE_CAPABILITIES 24 /* uint64_t * -- @@ -1087,10 +1095,10 @@ enum retro_mod #define RETRO_ENVIRONMENT_GET_TARGET_REFRESH_RATE (50 | RETRO_ENVIRONMENT_EXPERIMENTAL) /* float * -- - * Float value that lets us know what target refresh rate + * Float value that lets us know what target refresh rate * is curently in use by the frontend. * - * The core can use the returned value to set an ideal + * The core can use the returned value to set an ideal * refresh rate/framerate. */ @@ -1098,7 +1106,7 @@ enum retro_mod /* bool * -- * Boolean value that indicates whether or not the frontend supports * input bitmasks being returned by retro_input_state_t. The advantage - * of this is that retro_input_state_t has to be only called once to + * of this is that retro_input_state_t has to be only called once to * grab all button states instead of multiple times. * * If it returns true, you can pass RETRO_DEVICE_ID_JOYPAD_MASK as 'id' @@ -1117,12 +1125,19 @@ enum retro_mod * This may be still be done regardless of the core options * interface version. * - * If version is 1 however, core options may instead be set by + * If version is >= 1 however, core options may instead be set by * passing an array of retro_core_option_definition structs to * RETRO_ENVIRONMENT_SET_CORE_OPTIONS, or a 2D array of * retro_core_option_definition structs to RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL. * This allows the core to additionally set option sublabel information * and/or provide localisation support. + * + * If version is >= 2, core options may instead be set by passing + * a retro_core_options_v2 struct to RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2, + * or an array of retro_core_options_v2 structs to + * RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2_INTL. This allows the core + * to additionally set optional core option category information + * for frontends with core option category support. */ #define RETRO_ENVIRONMENT_SET_CORE_OPTIONS 53 @@ -1132,8 +1147,8 @@ enum retro_mod * GET_VARIABLE. * This allows the frontend to present these variables to * a user dynamically. - * This should only be called if RETRO_ENVIRONMENT_GET_ENHANCED_CORE_OPTIONS - * returns an API version of 1. + * This should only be called if RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION + * returns an API version of >= 1. * This should be called instead of RETRO_ENVIRONMENT_SET_VARIABLES. * This should be called the first time as early as * possible (ideally in retro_set_environment). @@ -1164,13 +1179,11 @@ enum retro_mod * default value is NULL, the first entry in the * retro_core_option_definition::values array is treated as the default. * - * The number of possible options should be very limited, + * The number of possible option values should be very limited, * and must be less than RETRO_NUM_CORE_OPTION_VALUES_MAX. * i.e. it should be feasible to cycle through options * without a keyboard. * - * First entry should be treated as a default. - * * Example entry: * { * "foo_option", @@ -1196,9 +1209,10 @@ enum retro_mod * GET_VARIABLE. * This allows the frontend to present these variables to * a user dynamically. - * This should only be called if RETRO_ENVIRONMENT_GET_ENHANCED_CORE_OPTIONS - * returns an API version of 1. + * This should only be called if RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION + * returns an API version of >= 1. * This should be called instead of RETRO_ENVIRONMENT_SET_VARIABLES. + * This should be called instead of RETRO_ENVIRONMENT_SET_CORE_OPTIONS. * This should be called the first time as early as * possible (ideally in retro_set_environment). * Afterwards it may be called again for the core to communicate @@ -1248,6 +1262,497 @@ enum retro_mod * default when calling SET_VARIABLES/SET_CORE_OPTIONS. */ +#define RETRO_ENVIRONMENT_GET_PREFERRED_HW_RENDER 56 + /* unsigned * -- + * + * Allows an implementation to ask frontend preferred hardware + * context to use. Core should use this information to deal + * with what specific context to request with SET_HW_RENDER. + * + * 'data' points to an unsigned variable + */ + +#define RETRO_ENVIRONMENT_GET_DISK_CONTROL_INTERFACE_VERSION 57 + /* unsigned * -- + * Unsigned value is the API version number of the disk control + * interface supported by the frontend. If callback return false, + * API version is assumed to be 0. + * + * In legacy code, the disk control interface is defined by passing + * a struct of type retro_disk_control_callback to + * RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE. + * This may be still be done regardless of the disk control + * interface version. + * + * If version is >= 1 however, the disk control interface may + * instead be defined by passing a struct of type + * retro_disk_control_ext_callback to + * RETRO_ENVIRONMENT_SET_DISK_CONTROL_EXT_INTERFACE. + * This allows the core to provide additional information about + * disk images to the frontend and/or enables extra + * disk control functionality by the frontend. + */ + +#define RETRO_ENVIRONMENT_SET_DISK_CONTROL_EXT_INTERFACE 58 + /* const struct retro_disk_control_ext_callback * -- + * Sets an interface which frontend can use to eject and insert + * disk images, and also obtain information about individual + * disk image files registered by the core. + * This is used for games which consist of multiple images and + * must be manually swapped out by the user (e.g. PSX, floppy disk + * based systems). + */ + +#define RETRO_ENVIRONMENT_GET_MESSAGE_INTERFACE_VERSION 59 + /* unsigned * -- + * Unsigned value is the API version number of the message + * interface supported by the frontend. If callback returns + * false, API version is assumed to be 0. + * + * In legacy code, messages may be displayed in an + * implementation-specific manner by passing a struct + * of type retro_message to RETRO_ENVIRONMENT_SET_MESSAGE. + * This may be still be done regardless of the message + * interface version. + * + * If version is >= 1 however, messages may instead be + * displayed by passing a struct of type retro_message_ext + * to RETRO_ENVIRONMENT_SET_MESSAGE_EXT. This allows the + * core to specify message logging level, priority and + * destination (OSD, logging interface or both). + */ + +#define RETRO_ENVIRONMENT_SET_MESSAGE_EXT 60 + /* const struct retro_message_ext * -- + * Sets a message to be displayed in an implementation-specific + * manner for a certain amount of 'frames'. Additionally allows + * the core to specify message logging level, priority and + * destination (OSD, logging interface or both). + * Should not be used for trivial messages, which should simply be + * logged via RETRO_ENVIRONMENT_GET_LOG_INTERFACE (or as a + * fallback, stderr). + */ + +#define RETRO_ENVIRONMENT_GET_INPUT_MAX_USERS 61 + /* unsigned * -- + * Unsigned value is the number of active input devices + * provided by the frontend. This may change between + * frames, but will remain constant for the duration + * of each frame. + * If callback returns true, a core need not poll any + * input device with an index greater than or equal to + * the number of active devices. + * If callback returns false, the number of active input + * devices is unknown. In this case, all input devices + * should be considered active. + */ + +#define RETRO_ENVIRONMENT_SET_AUDIO_BUFFER_STATUS_CALLBACK 62 + /* const struct retro_audio_buffer_status_callback * -- + * Lets the core know the occupancy level of the frontend + * audio buffer. Can be used by a core to attempt frame + * skipping in order to avoid buffer under-runs. + * A core may pass NULL to disable buffer status reporting + * in the frontend. + */ + +#define RETRO_ENVIRONMENT_SET_MINIMUM_AUDIO_LATENCY 63 + /* const unsigned * -- + * Sets minimum frontend audio latency in milliseconds. + * Resultant audio latency may be larger than set value, + * or smaller if a hardware limit is encountered. A frontend + * is expected to honour requests up to 512 ms. + * + * - If value is less than current frontend + * audio latency, callback has no effect + * - If value is zero, default frontend audio + * latency is set + * + * May be used by a core to increase audio latency and + * therefore decrease the probability of buffer under-runs + * (crackling) when performing 'intensive' operations. + * A core utilising RETRO_ENVIRONMENT_SET_AUDIO_BUFFER_STATUS_CALLBACK + * to implement audio-buffer-based frame skipping may achieve + * optimal results by setting the audio latency to a 'high' + * (typically 6x or 8x) integer multiple of the expected + * frame time. + * + * WARNING: This can only be called from within retro_run(). + * Calling this can require a full reinitialization of audio + * drivers in the frontend, so it is important to call it very + * sparingly, and usually only with the users explicit consent. + * An eventual driver reinitialize will happen so that audio + * callbacks happening after this call within the same retro_run() + * call will target the newly initialized driver. + */ + +#define RETRO_ENVIRONMENT_SET_FASTFORWARDING_OVERRIDE 64 + /* const struct retro_fastforwarding_override * -- + * Used by a libretro core to override the current + * fastforwarding mode of the frontend. + * If NULL is passed to this function, the frontend + * will return true if fastforwarding override + * functionality is supported (no change in + * fastforwarding state will occur in this case). + */ + +#define RETRO_ENVIRONMENT_SET_CONTENT_INFO_OVERRIDE 65 + /* const struct retro_system_content_info_override * -- + * Allows an implementation to override 'global' content + * info parameters reported by retro_get_system_info(). + * Overrides also affect subsystem content info parameters + * set via RETRO_ENVIRONMENT_SET_SUBSYSTEM_INFO. + * This function must be called inside retro_set_environment(). + * If callback returns false, content info overrides + * are unsupported by the frontend, and will be ignored. + * If callback returns true, extended game info may be + * retrieved by calling RETRO_ENVIRONMENT_GET_GAME_INFO_EXT + * in retro_load_game() or retro_load_game_special(). + * + * 'data' points to an array of retro_system_content_info_override + * structs terminated by a { NULL, false, false } element. + * If 'data' is NULL, no changes will be made to the frontend; + * a core may therefore pass NULL in order to test whether + * the RETRO_ENVIRONMENT_SET_CONTENT_INFO_OVERRIDE and + * RETRO_ENVIRONMENT_GET_GAME_INFO_EXT callbacks are supported + * by the frontend. + * + * For struct member descriptions, see the definition of + * struct retro_system_content_info_override. + * + * Example: + * + * - struct retro_system_info: + * { + * "My Core", // library_name + * "v1.0", // library_version + * "m3u|md|cue|iso|chd|sms|gg|sg", // valid_extensions + * true, // need_fullpath + * false // block_extract + * } + * + * - Array of struct retro_system_content_info_override: + * { + * { + * "md|sms|gg", // extensions + * false, // need_fullpath + * true // persistent_data + * }, + * { + * "sg", // extensions + * false, // need_fullpath + * false // persistent_data + * }, + * { NULL, false, false } + * } + * + * Result: + * - Files of type m3u, cue, iso, chd will not be + * loaded by the frontend. Frontend will pass a + * valid path to the core, and core will handle + * loading internally + * - Files of type md, sms, gg will be loaded by + * the frontend. A valid memory buffer will be + * passed to the core. This memory buffer will + * remain valid until retro_deinit() returns + * - Files of type sg will be loaded by the frontend. + * A valid memory buffer will be passed to the core. + * This memory buffer will remain valid until + * retro_load_game() (or retro_load_game_special()) + * returns + * + * NOTE: If an extension is listed multiple times in + * an array of retro_system_content_info_override + * structs, only the first instance will be registered + */ + +#define RETRO_ENVIRONMENT_GET_GAME_INFO_EXT 66 + /* const struct retro_game_info_ext ** -- + * Allows an implementation to fetch extended game + * information, providing additional content path + * and memory buffer status details. + * This function may only be called inside + * retro_load_game() or retro_load_game_special(). + * If callback returns false, extended game information + * is unsupported by the frontend. In this case, only + * regular retro_game_info will be available. + * RETRO_ENVIRONMENT_GET_GAME_INFO_EXT is guaranteed + * to return true if RETRO_ENVIRONMENT_SET_CONTENT_INFO_OVERRIDE + * returns true. + * + * 'data' points to an array of retro_game_info_ext structs. + * + * For struct member descriptions, see the definition of + * struct retro_game_info_ext. + * + * - If function is called inside retro_load_game(), + * the retro_game_info_ext array is guaranteed to + * have a size of 1 - i.e. the returned pointer may + * be used to access directly the members of the + * first retro_game_info_ext struct, for example: + * + * struct retro_game_info_ext *game_info_ext; + * if (environ_cb(RETRO_ENVIRONMENT_GET_GAME_INFO_EXT, &game_info_ext)) + * printf("Content Directory: %s\n", game_info_ext->dir); + * + * - If the function is called inside retro_load_game_special(), + * the retro_game_info_ext array is guaranteed to have a + * size equal to the num_info argument passed to + * retro_load_game_special() + */ + +#define RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2 67 + /* const struct retro_core_options_v2 * -- + * Allows an implementation to signal the environment + * which variables it might want to check for later using + * GET_VARIABLE. + * This allows the frontend to present these variables to + * a user dynamically. + * This should only be called if RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION + * returns an API version of >= 2. + * This should be called instead of RETRO_ENVIRONMENT_SET_VARIABLES. + * This should be called instead of RETRO_ENVIRONMENT_SET_CORE_OPTIONS. + * This should be called the first time as early as + * possible (ideally in retro_set_environment). + * Afterwards it may be called again for the core to communicate + * updated options to the frontend, but the number of core + * options must not change from the number in the initial call. + * If RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION returns an API + * version of >= 2, this callback is guaranteed to succeed + * (i.e. callback return value does not indicate success) + * If callback returns true, frontend has core option category + * support. + * If callback returns false, frontend does not have core option + * category support. + * + * 'data' points to a retro_core_options_v2 struct, containing + * of two pointers: + * - retro_core_options_v2::categories is an array of + * retro_core_option_v2_category structs terminated by a + * { NULL, NULL, NULL } element. If retro_core_options_v2::categories + * is NULL, all core options will have no category and will be shown + * at the top level of the frontend core option interface. If frontend + * does not have core option category support, categories array will + * be ignored. + * - retro_core_options_v2::definitions is an array of + * retro_core_option_v2_definition structs terminated by a + * { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL } + * element. + * + * >> retro_core_option_v2_category notes: + * + * - retro_core_option_v2_category::key should contain string + * that uniquely identifies the core option category. Valid + * key characters are [a-z, A-Z, 0-9, _, -] + * Namespace collisions with other implementations' category + * keys are permitted. + * - retro_core_option_v2_category::desc should contain a human + * readable description of the category key. + * - retro_core_option_v2_category::info should contain any + * additional human readable information text that a typical + * user may need to understand the nature of the core option + * category. + * + * Example entry: + * { + * "advanced_settings", + * "Advanced", + * "Options affecting low-level emulation performance and accuracy." + * } + * + * >> retro_core_option_v2_definition notes: + * + * - retro_core_option_v2_definition::key should be namespaced to not + * collide with other implementations' keys. e.g. A core called + * 'foo' should use keys named as 'foo_option'. Valid key characters + * are [a-z, A-Z, 0-9, _, -]. + * - retro_core_option_v2_definition::desc should contain a human readable + * description of the key. Will be used when the frontend does not + * have core option category support. Examples: "Aspect Ratio" or + * "Video > Aspect Ratio". + * - retro_core_option_v2_definition::desc_categorized should contain a + * human readable description of the key, which will be used when + * frontend has core option category support. Example: "Aspect Ratio", + * where associated retro_core_option_v2_category::desc is "Video". + * If empty or NULL, the string specified by + * retro_core_option_v2_definition::desc will be used instead. + * retro_core_option_v2_definition::desc_categorized will be ignored + * if retro_core_option_v2_definition::category_key is empty or NULL. + * - retro_core_option_v2_definition::info should contain any additional + * human readable information text that a typical user may need to + * understand the functionality of the option. + * - retro_core_option_v2_definition::info_categorized should contain + * any additional human readable information text that a typical user + * may need to understand the functionality of the option, and will be + * used when frontend has core option category support. This is provided + * to accommodate the case where info text references an option by + * name/desc, and the desc/desc_categorized text for that option differ. + * If empty or NULL, the string specified by + * retro_core_option_v2_definition::info will be used instead. + * retro_core_option_v2_definition::info_categorized will be ignored + * if retro_core_option_v2_definition::category_key is empty or NULL. + * - retro_core_option_v2_definition::category_key should contain a + * category identifier (e.g. "video" or "audio") that will be + * assigned to the core option if frontend has core option category + * support. A categorized option will be shown in a subsection/ + * submenu of the frontend core option interface. If key is empty + * or NULL, or if key does not match one of the + * retro_core_option_v2_category::key values in the associated + * retro_core_option_v2_category array, option will have no category + * and will be shown at the top level of the frontend core option + * interface. + * - retro_core_option_v2_definition::values is an array of + * retro_core_option_value structs terminated by a { NULL, NULL } + * element. + * --> retro_core_option_v2_definition::values[index].value is an + * expected option value. + * --> retro_core_option_v2_definition::values[index].label is a + * human readable label used when displaying the value on screen. + * If NULL, the value itself is used. + * - retro_core_option_v2_definition::default_value is the default + * core option setting. It must match one of the expected option + * values in the retro_core_option_v2_definition::values array. If + * it does not, or the default value is NULL, the first entry in the + * retro_core_option_v2_definition::values array is treated as the + * default. + * + * The number of possible option values should be very limited, + * and must be less than RETRO_NUM_CORE_OPTION_VALUES_MAX. + * i.e. it should be feasible to cycle through options + * without a keyboard. + * + * Example entries: + * + * - Uncategorized: + * + * { + * "foo_option", + * "Speed hack coprocessor X", + * NULL, + * "Provides increased performance at the expense of reduced accuracy.", + * NULL, + * NULL, + * { + * { "false", NULL }, + * { "true", NULL }, + * { "unstable", "Turbo (Unstable)" }, + * { NULL, NULL }, + * }, + * "false" + * } + * + * - Categorized: + * + * { + * "foo_option", + * "Advanced > Speed hack coprocessor X", + * "Speed hack coprocessor X", + * "Setting 'Advanced > Speed hack coprocessor X' to 'true' or 'Turbo' provides increased performance at the expense of reduced accuracy", + * "Setting 'Speed hack coprocessor X' to 'true' or 'Turbo' provides increased performance at the expense of reduced accuracy", + * "advanced_settings", + * { + * { "false", NULL }, + * { "true", NULL }, + * { "unstable", "Turbo (Unstable)" }, + * { NULL, NULL }, + * }, + * "false" + * } + * + * Only strings are operated on. The possible values will + * generally be displayed and stored as-is by the frontend. + */ + +#define RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2_INTL 68 + /* const struct retro_core_options_v2_intl * -- + * Allows an implementation to signal the environment + * which variables it might want to check for later using + * GET_VARIABLE. + * This allows the frontend to present these variables to + * a user dynamically. + * This should only be called if RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION + * returns an API version of >= 2. + * This should be called instead of RETRO_ENVIRONMENT_SET_VARIABLES. + * This should be called instead of RETRO_ENVIRONMENT_SET_CORE_OPTIONS. + * This should be called instead of RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL. + * This should be called instead of RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2. + * This should be called the first time as early as + * possible (ideally in retro_set_environment). + * Afterwards it may be called again for the core to communicate + * updated options to the frontend, but the number of core + * options must not change from the number in the initial call. + * If RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION returns an API + * version of >= 2, this callback is guaranteed to succeed + * (i.e. callback return value does not indicate success) + * If callback returns true, frontend has core option category + * support. + * If callback returns false, frontend does not have core option + * category support. + * + * This is fundamentally the same as RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2, + * with the addition of localisation support. The description of the + * RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2 callback should be consulted + * for further details. + * + * 'data' points to a retro_core_options_v2_intl struct. + * + * - retro_core_options_v2_intl::us is a pointer to a + * retro_core_options_v2 struct defining the US English + * core options implementation. It must point to a valid struct. + * + * - retro_core_options_v2_intl::local is a pointer to a + * retro_core_options_v2 struct defining core options for + * the current frontend language. It may be NULL (in which case + * retro_core_options_v2_intl::us is used by the frontend). Any items + * missing from this struct will be read from + * retro_core_options_v2_intl::us instead. + * + * NOTE: Default core option values are always taken from the + * retro_core_options_v2_intl::us struct. Any default values in + * the retro_core_options_v2_intl::local struct will be ignored. + */ + +#define RETRO_ENVIRONMENT_SET_CORE_OPTIONS_UPDATE_DISPLAY_CALLBACK 69 + /* const struct retro_core_options_update_display_callback * -- + * Allows a frontend to signal that a core must update + * the visibility of any dynamically hidden core options, + * and enables the frontend to detect visibility changes. + * Used by the frontend to update the menu display status + * of core options without requiring a call of retro_run(). + * Must be called in retro_set_environment(). + */ + +#define RETRO_ENVIRONMENT_SET_VARIABLE 70 + /* const struct retro_variable * -- + * Allows an implementation to notify the frontend + * that a core option value has changed. + * + * retro_variable::key and retro_variable::value + * must match strings that have been set previously + * via one of the following: + * + * - RETRO_ENVIRONMENT_SET_VARIABLES + * - RETRO_ENVIRONMENT_SET_CORE_OPTIONS + * - RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL + * - RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2 + * - RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2_INTL + * + * After changing a core option value via this + * callback, RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE + * will return true. + * + * If data is NULL, no changes will be registered + * and the callback will return true; an + * implementation may therefore pass NULL in order + * to test whether the callback is supported. + */ + +#define RETRO_ENVIRONMENT_GET_THROTTLE_STATE (71 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* struct retro_throttle_state * -- + * Allows an implementation to get details on the actual rate + * the frontend is attempting to call retro_run(). + */ + /* VFS functionality */ /* File paths: @@ -1924,6 +2429,10 @@ enum retro_sensor_action { RETRO_SENSOR_ACCELEROMETER_ENABLE = 0, RETRO_SENSOR_ACCELEROMETER_DISABLE, + RETRO_SENSOR_GYROSCOPE_ENABLE, + RETRO_SENSOR_GYROSCOPE_DISABLE, + RETRO_SENSOR_ILLUMINANCE_ENABLE, + RETRO_SENSOR_ILLUMINANCE_DISABLE, RETRO_SENSOR_DUMMY = INT_MAX }; @@ -1932,6 +2441,10 @@ enum retro_sensor_action #define RETRO_SENSOR_ACCELEROMETER_X 0 #define RETRO_SENSOR_ACCELEROMETER_Y 1 #define RETRO_SENSOR_ACCELEROMETER_Z 2 +#define RETRO_SENSOR_GYROSCOPE_X 3 +#define RETRO_SENSOR_GYROSCOPE_Y 4 +#define RETRO_SENSOR_GYROSCOPE_Z 5 +#define RETRO_SENSOR_ILLUMINANCE 6 typedef bool (RETRO_CALLCONV *retro_set_sensor_state_t)(unsigned port, enum retro_sensor_action action, unsigned rate); @@ -2129,6 +2642,30 @@ struct retro_frame_time_callback retro_usec_t reference; }; +/* Notifies a libretro core of the current occupancy + * level of the frontend audio buffer. + * + * - active: 'true' if audio buffer is currently + * in use. Will be 'false' if audio is + * disabled in the frontend + * + * - occupancy: Given as a value in the range [0,100], + * corresponding to the occupancy percentage + * of the audio buffer + * + * - underrun_likely: 'true' if the frontend expects an + * audio buffer underrun during the + * next frame (indicates that a core + * should attempt frame skipping) + * + * It will be called right before retro_run() every frame. */ +typedef void (RETRO_CALLCONV *retro_audio_buffer_status_callback_t)( + bool active, unsigned occupancy, bool underrun_likely); +struct retro_audio_buffer_status_callback +{ + retro_audio_buffer_status_callback_t callback; +}; + /* Pass this to retro_video_refresh_t if rendering to hardware. * Passing NULL to retro_video_refresh_t is still a frame dupe as normal. * */ @@ -2289,7 +2826,8 @@ struct retro_keyboard_callback retro_keyboard_event_t callback; }; -/* Callbacks for RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE. +/* Callbacks for RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE & + * RETRO_ENVIRONMENT_SET_DISK_CONTROL_EXT_INTERFACE. * Should be set for implementations which can swap out multiple disk * images in runtime. * @@ -2347,6 +2885,53 @@ typedef bool (RETRO_CALLCONV *retro_replace_image_index_t)(unsigned index, * with replace_image_index. */ typedef bool (RETRO_CALLCONV *retro_add_image_index_t)(void); +/* Sets initial image to insert in drive when calling + * core_load_game(). + * Since we cannot pass the initial index when loading + * content (this would require a major API change), this + * is set by the frontend *before* calling the core's + * retro_load_game()/retro_load_game_special() implementation. + * A core should therefore cache the index/path values and handle + * them inside retro_load_game()/retro_load_game_special(). + * - If 'index' is invalid (index >= get_num_images()), the + * core should ignore the set value and instead use 0 + * - 'path' is used purely for error checking - i.e. when + * content is loaded, the core should verify that the + * disk specified by 'index' has the specified file path. + * This is to guard against auto selecting the wrong image + * if (for example) the user should modify an existing M3U + * playlist. We have to let the core handle this because + * set_initial_image() must be called before loading content, + * i.e. the frontend cannot access image paths in advance + * and thus cannot perform the error check itself. + * If set path and content path do not match, the core should + * ignore the set 'index' value and instead use 0 + * Returns 'false' if index or 'path' are invalid, or core + * does not support this functionality + */ +typedef bool (RETRO_CALLCONV *retro_set_initial_image_t)(unsigned index, const char *path); + +/* Fetches the path of the specified disk image file. + * Returns 'false' if index is invalid (index >= get_num_images()) + * or path is otherwise unavailable. + */ +typedef bool (RETRO_CALLCONV *retro_get_image_path_t)(unsigned index, char *path, size_t len); + +/* Fetches a core-provided 'label' for the specified disk + * image file. In the simplest case this may be a file name + * (without extension), but for cores with more complex + * content requirements information may be provided to + * facilitate user disk swapping - for example, a core + * running floppy-disk-based content may uniquely label + * save disks, data disks, level disks, etc. with names + * corresponding to in-game disk change prompts (so the + * frontend can provide better user guidance than a 'dumb' + * disk index value). + * Returns 'false' if index is invalid (index >= get_num_images()) + * or label is otherwise unavailable. + */ +typedef bool (RETRO_CALLCONV *retro_get_image_label_t)(unsigned index, char *label, size_t len); + struct retro_disk_control_callback { retro_set_eject_state_t set_eject_state; @@ -2360,6 +2945,27 @@ struct retro_disk_control_callback retro_add_image_index_t add_image_index; }; +struct retro_disk_control_ext_callback +{ + retro_set_eject_state_t set_eject_state; + retro_get_eject_state_t get_eject_state; + + retro_get_image_index_t get_image_index; + retro_set_image_index_t set_image_index; + retro_get_num_images_t get_num_images; + + retro_replace_image_index_t replace_image_index; + retro_add_image_index_t add_image_index; + + /* NOTE: Frontend will only attempt to record/restore + * last used disk index if both set_initial_image() + * and get_image_path() are implemented */ + retro_set_initial_image_t set_initial_image; /* Optional - may be NULL */ + + retro_get_image_path_t get_image_path; /* Optional - may be NULL */ + retro_get_image_label_t get_image_label; /* Optional - may be NULL */ +}; + enum retro_pixel_format { /* 0RGB1555, native endian. @@ -2390,6 +2996,104 @@ struct retro_message unsigned frames; /* Duration in frames of message. */ }; +enum retro_message_target +{ + RETRO_MESSAGE_TARGET_ALL = 0, + RETRO_MESSAGE_TARGET_OSD, + RETRO_MESSAGE_TARGET_LOG +}; + +enum retro_message_type +{ + RETRO_MESSAGE_TYPE_NOTIFICATION = 0, + RETRO_MESSAGE_TYPE_NOTIFICATION_ALT, + RETRO_MESSAGE_TYPE_STATUS, + RETRO_MESSAGE_TYPE_PROGRESS +}; + +struct retro_message_ext +{ + /* Message string to be displayed/logged */ + const char *msg; + /* Duration (in ms) of message when targeting the OSD */ + unsigned duration; + /* Message priority when targeting the OSD + * > When multiple concurrent messages are sent to + * the frontend and the frontend does not have the + * capacity to display them all, messages with the + * *highest* priority value should be shown + * > There is no upper limit to a message priority + * value (within the bounds of the unsigned data type) + * > In the reference frontend (RetroArch), the same + * priority values are used for frontend-generated + * notifications, which are typically assigned values + * between 0 and 3 depending upon importance */ + unsigned priority; + /* Message logging level (info, warn, error, etc.) */ + enum retro_log_level level; + /* Message destination: OSD, logging interface or both */ + enum retro_message_target target; + /* Message 'type' when targeting the OSD + * > RETRO_MESSAGE_TYPE_NOTIFICATION: Specifies that a + * message should be handled in identical fashion to + * a standard frontend-generated notification + * > RETRO_MESSAGE_TYPE_NOTIFICATION_ALT: Specifies that + * message is a notification that requires user attention + * or action, but that it should be displayed in a manner + * that differs from standard frontend-generated notifications. + * This would typically correspond to messages that should be + * displayed immediately (independently from any internal + * frontend message queue), and/or which should be visually + * distinguishable from frontend-generated notifications. + * For example, a core may wish to inform the user of + * information related to a disk-change event. It is + * expected that the frontend itself may provide a + * notification in this case; if the core sends a + * message of type RETRO_MESSAGE_TYPE_NOTIFICATION, an + * uncomfortable 'double-notification' may occur. A message + * of RETRO_MESSAGE_TYPE_NOTIFICATION_ALT should therefore + * be presented such that visual conflict with regular + * notifications does not occur + * > RETRO_MESSAGE_TYPE_STATUS: Indicates that message + * is not a standard notification. This typically + * corresponds to 'status' indicators, such as a core's + * internal FPS, which are intended to be displayed + * either permanently while a core is running, or in + * a manner that does not suggest user attention or action + * is required. 'Status' type messages should therefore be + * displayed in a different on-screen location and in a manner + * easily distinguishable from both standard frontend-generated + * notifications and messages of type RETRO_MESSAGE_TYPE_NOTIFICATION_ALT + * > RETRO_MESSAGE_TYPE_PROGRESS: Indicates that message reports + * the progress of an internal core task. For example, in cases + * where a core itself handles the loading of content from a file, + * this may correspond to the percentage of the file that has been + * read. Alternatively, an audio/video playback core may use a + * message of type RETRO_MESSAGE_TYPE_PROGRESS to display the current + * playback position as a percentage of the runtime. 'Progress' type + * messages should therefore be displayed as a literal progress bar, + * where: + * - 'retro_message_ext.msg' is the progress bar title/label + * - 'retro_message_ext.progress' determines the length of + * the progress bar + * NOTE: Message type is a *hint*, and may be ignored + * by the frontend. If a frontend lacks support for + * displaying messages via alternate means than standard + * frontend-generated notifications, it will treat *all* + * messages as having the type RETRO_MESSAGE_TYPE_NOTIFICATION */ + enum retro_message_type type; + /* Task progress when targeting the OSD and message is + * of type RETRO_MESSAGE_TYPE_PROGRESS + * > -1: Unmetered/indeterminate + * > 0-100: Current progress percentage + * NOTE: Since message type is a hint, a frontend may ignore + * progress values. Where relevant, a core should therefore + * include progress percentage within the message string, + * such that the message intent remains clear when displayed + * as a standard frontend-generated notification */ + int8_t progress; +}; + /* Describes how the libretro implementation maps a libretro input bind * to its internal input system through a human readable string. * This string can be used to better let a user configure input. */ @@ -2410,7 +3114,7 @@ struct retro_input_descriptor struct retro_system_info { /* All pointers are owned by libretro implementation, and pointers must - * remain valid until retro_deinit() is called. */ + * remain valid until it is unloaded. */ const char *library_name; /* Descriptive name of library. Should not * contain any version numbers, etc. */ @@ -2452,6 +3156,213 @@ struct retro_system_info bool block_extract; }; +/* Defines overrides which modify frontend handling of + * specific content file types. + * An array of retro_system_content_info_override is + * passed to RETRO_ENVIRONMENT_SET_CONTENT_INFO_OVERRIDE + * NOTE: In the following descriptions, references to + * retro_load_game() may be replaced with + * retro_load_game_special() */ +struct retro_system_content_info_override +{ + /* A list of file extensions for which the override + * should apply, delimited by a 'pipe' character + * (e.g. "md|sms|gg") + * Permitted file extensions are limited to those + * included in retro_system_info::valid_extensions + * and/or retro_subsystem_rom_info::valid_extensions */ + const char *extensions; + + /* Overrides the need_fullpath value set in + * retro_system_info and/or retro_subsystem_rom_info. + * To reiterate: + * + * If need_fullpath is true and retro_load_game() is called: + * - retro_game_info::path is guaranteed to contain a valid + * path to an existent file + * - retro_game_info::data and retro_game_info::size are invalid + * + * If need_fullpath is false and retro_load_game() is called: + * - retro_game_info::path may be NULL + * - retro_game_info::data and retro_game_info::size are guaranteed + * to be valid + * + * In addition: + * + * If need_fullpath is true and retro_load_game() is called: + * - retro_game_info_ext::full_path is guaranteed to contain a valid + * path to an existent file + * - retro_game_info_ext::archive_path may be NULL + * - retro_game_info_ext::archive_file may be NULL + * - retro_game_info_ext::dir is guaranteed to contain a valid path + * to the directory in which the content file exists + * - retro_game_info_ext::name is guaranteed to contain the + * basename of the content file, without extension + * - retro_game_info_ext::ext is guaranteed to contain the + * extension of the content file in lower case format + * - retro_game_info_ext::data and retro_game_info_ext::size + * are invalid + * + * If need_fullpath is false and retro_load_game() is called: + * - If retro_game_info_ext::file_in_archive is false: + * - retro_game_info_ext::full_path is guaranteed to contain + * a valid path to an existent file + * - retro_game_info_ext::archive_path may be NULL + * - retro_game_info_ext::archive_file may be NULL + * - retro_game_info_ext::dir is guaranteed to contain a + * valid path to the directory in which the content file exists + * - retro_game_info_ext::name is guaranteed to contain the + * basename of the content file, without extension + * - retro_game_info_ext::ext is guaranteed to contain the + * extension of the content file in lower case format + * - If retro_game_info_ext::file_in_archive is true: + * - retro_game_info_ext::full_path may be NULL + * - retro_game_info_ext::archive_path is guaranteed to + * contain a valid path to an existent compressed file + * inside which the content file is located + * - retro_game_info_ext::archive_file is guaranteed to + * contain a valid path to an existent content file + * inside the compressed file referred to by + * retro_game_info_ext::archive_path + * e.g. for a compressed file '/path/to/foo.zip' + * containing 'bar.sfc' + * > retro_game_info_ext::archive_path will be '/path/to/foo.zip' + * > retro_game_info_ext::archive_file will be 'bar.sfc' + * - retro_game_info_ext::dir is guaranteed to contain a + * valid path to the directory in which the compressed file + * (containing the content file) exists + * - retro_game_info_ext::name is guaranteed to contain + * EITHER + * 1) the basename of the compressed file (containing + * the content file), without extension + * OR + * 2) the basename of the content file inside the + * compressed file, without extension + * In either case, a core should consider 'name' to + * be the canonical name/ID of the the content file + * - retro_game_info_ext::ext is guaranteed to contain the + * extension of the content file inside the compressed file, + * in lower case format + * - retro_game_info_ext::data and retro_game_info_ext::size are + * guaranteed to be valid */ + bool need_fullpath; + + /* If need_fullpath is false, specifies whether the content + * data buffer available in retro_load_game() is 'persistent' + * + * If persistent_data is false and retro_load_game() is called: + * - retro_game_info::data and retro_game_info::size + * are valid only until retro_load_game() returns + * - retro_game_info_ext::data and retro_game_info_ext::size + * are valid only until retro_load_game() returns + * + * If persistent_data is true and retro_load_game() is called: + * - retro_game_info::data and retro_game_info::size + * are valid until retro_deinit() returns + * - retro_game_info_ext::data and retro_game_info_ext::size + * are valid until retro_deinit() returns */ + bool persistent_data; +}; + +/* Similar to retro_game_info, but provides extended + * information about the source content file and + * game memory buffer status. + * And array of retro_game_info_ext is returned by + * RETRO_ENVIRONMENT_GET_GAME_INFO_EXT + * NOTE: In the following descriptions, references to + * retro_load_game() may be replaced with + * retro_load_game_special() */ +struct retro_game_info_ext +{ + /* - If file_in_archive is false, contains a valid + * path to an existent content file (UTF-8 encoded) + * - If file_in_archive is true, may be NULL */ + const char *full_path; + + /* - If file_in_archive is false, may be NULL + * - If file_in_archive is true, contains a valid path + * to an existent compressed file inside which the + * content file is located (UTF-8 encoded) */ + const char *archive_path; + + /* - If file_in_archive is false, may be NULL + * - If file_in_archive is true, contain a valid path + * to an existent content file inside the compressed + * file referred to by archive_path (UTF-8 encoded) + * e.g. for a compressed file '/path/to/foo.zip' + * containing 'bar.sfc' + * > archive_path will be '/path/to/foo.zip' + * > archive_file will be 'bar.sfc' */ + const char *archive_file; + + /* - If file_in_archive is false, contains a valid path + * to the directory in which the content file exists + * (UTF-8 encoded) + * - If file_in_archive is true, contains a valid path + * to the directory in which the compressed file + * (containing the content file) exists (UTF-8 encoded) */ + const char *dir; + + /* Contains the canonical name/ID of the content file + * (UTF-8 encoded). Intended for use when identifying + * 'complementary' content named after the loaded file - + * i.e. companion data of a different format (a CD image + * required by a ROM), texture packs, internally handled + * save files, etc. + * - If file_in_archive is false, contains the basename + * of the content file, without extension + * - If file_in_archive is true, then string is + * implementation specific. A frontend may choose to + * set a name value of: + * EITHER + * 1) the basename of the compressed file (containing + * the content file), without extension + * OR + * 2) the basename of the content file inside the + * compressed file, without extension + * RetroArch sets the 'name' value according to (1). + * A frontend that supports routine loading of + * content from archives containing multiple unrelated + * content files may set the 'name' value according + * to (2). */ + const char *name; + + /* - If file_in_archive is false, contains the extension + * of the content file in lower case format + * - If file_in_archive is true, contains the extension + * of the content file inside the compressed file, + * in lower case format */ + const char *ext; + + /* String of implementation specific meta-data. */ + const char *meta; + + /* Memory buffer of loaded game content. Will be NULL: + * IF + * - retro_system_info::need_fullpath is true and + * retro_system_content_info_override::need_fullpath + * is unset + * OR + * - retro_system_content_info_override::need_fullpath + * is true */ + const void *data; + + /* Size of game content memory buffer, in bytes */ + size_t size; + + /* True if loaded content file is inside a compressed + * archive */ + bool file_in_archive; + + /* - If data is NULL, value is unset/ignored + * - If data is non-NULL: + * - If persistent_data is false, data and size are + * valid only until retro_load_game() returns + * - If persistent_data is true, data and size are + * are valid until retro_deinit() returns */ + bool persistent_data; +}; + struct retro_game_geometry { unsigned base_width; /* Nominal video width of game. */ @@ -2504,8 +3415,20 @@ struct retro_core_option_display }; /* Maximum number of values permitted for a core option - * NOTE: This may be increased on a core-by-core basis - * if required (doing so has no effect on the frontend) */ + * > Note: We have to set a maximum value due the limitations + * of the C language - i.e. it is not possible to create an + * array of structs each containing a variable sized array, + * so the retro_core_option_definition values array must + * have a fixed size. The size limit of 128 is a balancing + * act - it needs to be large enough to support all 'sane' + * core options, but setting it too large may impact low memory + * platforms. In practise, if a core option has more than + * 128 values then the implementation is likely flawed. + * To quote the above API reference: + * "The number of possible options should be very limited + * i.e. it should be feasible to cycle through options + * without a keyboard." + */ #define RETRO_NUM_CORE_OPTION_VALUES_MAX 128 struct retro_core_option_value @@ -2551,6 +3474,143 @@ struct retro_core_options_intl struct retro_core_option_definition *local; }; +struct retro_core_option_v2_category +{ + /* Variable uniquely identifying the + * option category. Valid key characters + * are [a-z, A-Z, 0-9, _, -] */ + const char *key; + + /* Human-readable category description + * > Used as category menu label when + * frontend has core option category + * support */ + const char *desc; + + /* Human-readable category information + * > Used as category menu sublabel when + * frontend has core option category + * support + * > Optional (may be NULL or an empty + * string) */ + const char *info; +}; + +struct retro_core_option_v2_definition +{ + /* Variable to query in RETRO_ENVIRONMENT_GET_VARIABLE. + * Valid key characters are [a-z, A-Z, 0-9, _, -] */ + const char *key; + + /* Human-readable core option description + * > Used as menu label when frontend does + * not have core option category support + * e.g. "Video > Aspect Ratio" */ + const char *desc; + + /* Human-readable core option description + * > Used as menu label when frontend has + * core option category support + * e.g. "Aspect Ratio", where associated + * retro_core_option_v2_category::desc + * is "Video" + * > If empty or NULL, the string specified by + * desc will be used as the menu label + * > Will be ignored (and may be set to NULL) + * if category_key is empty or NULL */ + const char *desc_categorized; + + /* Human-readable core option information + * > Used as menu sublabel */ + const char *info; + + /* Human-readable core option information + * > Used as menu sublabel when frontend + * has core option category support + * (e.g. may be required when info text + * references an option by name/desc, + * and the desc/desc_categorized text + * for that option differ) + * > If empty or NULL, the string specified by + * info will be used as the menu sublabel + * > Will be ignored (and may be set to NULL) + * if category_key is empty or NULL */ + const char *info_categorized; + + /* Variable specifying category (e.g. "video", + * "audio") that will be assigned to the option + * if frontend has core option category support. + * > Categorized options will be displayed in a + * subsection/submenu of the frontend core + * option interface + * > Specified string must match one of the + * retro_core_option_v2_category::key values + * in the associated retro_core_option_v2_category + * array; If no match is not found, specified + * string will be considered as NULL + * > If specified string is empty or NULL, option will + * have no category and will be shown at the top + * level of the frontend core option interface */ + const char *category_key; + + /* Array of retro_core_option_value structs, terminated by NULL */ + struct retro_core_option_value values[RETRO_NUM_CORE_OPTION_VALUES_MAX]; + + /* Default core option value. Must match one of the values + * in the retro_core_option_value array, otherwise will be + * ignored */ + const char *default_value; +}; + +struct retro_core_options_v2 +{ + /* Array of retro_core_option_v2_category structs, + * terminated by NULL + * > If NULL, all entries in definitions array + * will have no category and will be shown at + * the top level of the frontend core option + * interface + * > Will be ignored if frontend does not have + * core option category support */ + struct retro_core_option_v2_category *categories; + + /* Array of retro_core_option_v2_definition structs, + * terminated by NULL */ + struct retro_core_option_v2_definition *definitions; +}; + +struct retro_core_options_v2_intl +{ + /* Pointer to a retro_core_options_v2 struct + * > US English implementation + * > Must point to a valid struct */ + struct retro_core_options_v2 *us; + + /* Pointer to a retro_core_options_v2 struct + * - Implementation for current frontend language + * - May be NULL */ + struct retro_core_options_v2 *local; +}; + +/* Used by the frontend to monitor changes in core option + * visibility. May be called each time any core option + * value is set via the frontend. + * - On each invocation, the core must update the visibility + * of any dynamically hidden options using the + * RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY environment + * callback. + * - On the first invocation, returns 'true' if the visibility + * of any core option has changed since the last call of + * retro_load_game() or retro_load_game_special(). + * - On each subsequent invocation, returns 'true' if the + * visibility of any core option has changed since the last + * time the function was called. */ +typedef bool (RETRO_CALLCONV *retro_core_options_update_display_callback_t)(void); +struct retro_core_options_update_display_callback +{ + retro_core_options_update_display_callback_t callback; +}; + struct retro_game_info { const char *path; /* Path to game, UTF-8 encoded. @@ -2597,6 +3657,84 @@ struct retro_framebuffer Set by frontend in GET_CURRENT_SOFTWARE_FRAMEBUFFER. */ }; +/* Used by a libretro core to override the current + * fastforwarding mode of the frontend */ +struct retro_fastforwarding_override +{ + /* Specifies the runtime speed multiplier that + * will be applied when 'fastforward' is true. + * For example, a value of 5.0 when running 60 FPS + * content will cap the fast-forward rate at 300 FPS. + * Note that the target multiplier may not be achieved + * if the host hardware has insufficient processing + * power. + * Setting a value of 0.0 (or greater than 0.0 but + * less than 1.0) will result in an uncapped + * fast-forward rate (limited only by hardware + * capacity). + * If the value is negative, it will be ignored + * (i.e. the frontend will use a runtime speed + * multiplier of its own choosing) */ + float ratio; + + /* If true, fastforwarding mode will be enabled. + * If false, fastforwarding mode will be disabled. */ + bool fastforward; + + /* If true, and if supported by the frontend, an + * on-screen notification will be displayed while + * 'fastforward' is true. + * If false, and if supported by the frontend, any + * on-screen fast-forward notifications will be + * suppressed */ + bool notification; + + /* If true, the core will have sole control over + * when fastforwarding mode is enabled/disabled; + * the frontend will not be able to change the + * state set by 'fastforward' until either + * 'inhibit_toggle' is set to false, or the core + * is unloaded */ + bool inhibit_toggle; +}; + +/* During normal operation. Rate will be equal to the core's internal FPS. */ +#define RETRO_THROTTLE_NONE 0 + +/* While paused or stepping single frames. Rate will be 0. */ +#define RETRO_THROTTLE_FRAME_STEPPING 1 + +/* During fast forwarding. + * Rate will be 0 if not specifically limited to a maximum speed. */ +#define RETRO_THROTTLE_FAST_FORWARD 2 + +/* During slow motion. Rate will be less than the core's internal FPS. */ +#define RETRO_THROTTLE_SLOW_MOTION 3 + +/* While rewinding recorded save states. Rate can vary depending on the rewind + * speed or be 0 if the frontend is not aiming for a specific rate. */ +#define RETRO_THROTTLE_REWINDING 4 + +/* While vsync is active in the video driver and the target refresh rate is + * lower than the core's internal FPS. Rate is the target refresh rate. */ +#define RETRO_THROTTLE_VSYNC 5 + +/* When the frontend does not throttle in any way. Rate will be 0. + * An example could be if no vsync or audio output is active. */ +#define RETRO_THROTTLE_UNBLOCKED 6 + +struct retro_throttle_state +{ + /* The current throttling mode. Should be one of the values above. */ + unsigned mode; + + /* How many times per second the frontend aims to call retro_run. + * Depending on the mode, it can be 0 if there is no known fixed rate. + * This won't be accurate if the total processing time of the core and + * the frontend is longer than what is available for one frame. */ + float rate; +}; + /* Callbacks */ /* Environment callback. Gives implementations a way of performing diff --git a/libretro/libretro.cpp b/libretro/libretro.cpp index 61926cb..4087ea4 100644 --- a/libretro/libretro.cpp +++ b/libretro/libretro.cpp @@ -65,6 +65,7 @@ static unsigned blargg_ntsc; static bool fds_auto_insert; static bool overscan_v; static bool overscan_h; +static bool libretro_supports_option_categories = false; static unsigned aspect_ratio_mode; static unsigned tpulse; @@ -433,7 +434,8 @@ void retro_get_system_av_info(struct retro_system_av_info *info) void retro_set_environment(retro_environment_t cb) { environ_cb = cb; - libretro_set_core_options(environ_cb); + libretro_set_core_options(environ_cb, + &libretro_supports_option_categories); static const struct retro_controller_description port1[] = { { "Auto", RETRO_DEVICE_AUTO }, @@ -776,6 +778,7 @@ static void check_variables(void) static bool last_ntsc_val_same; struct retro_variable var = {0}; struct retro_system_av_info av_info; + struct retro_core_option_display option_display; Api::Sound sound(emulator); Api::Video video(emulator); @@ -1193,7 +1196,11 @@ static void check_variables(void) { sound.SetVolume(Api::Sound::CHANNEL_S5B, atoi(var.value)); } - + + /* "Show settings" are not required if categories are supported */ + option_display.visible = !libretro_supports_option_categories; + option_display.key = "nestopia_show_advanced_av_settings"; + environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY, &option_display); var.key = "nestopia_show_advanced_av_settings"; @@ -1209,7 +1216,6 @@ static void check_variables(void) if (show_advanced_av_settings != show_advanced_av_settings_prev) { size_t i; - struct retro_core_option_display option_display; char av_keys[11][40] = { "nestopia_audio_vol_sq1", "nestopia_audio_vol_sq2", @@ -1224,7 +1230,8 @@ static void check_variables(void) "nestopia_audio_vol_s5b" }; - option_display.visible = show_advanced_av_settings; + option_display.visible = show_advanced_av_settings + || libretro_supports_option_categories; for (i = 0; i < 11; i++) { diff --git a/libretro/libretro_core_options.h b/libretro/libretro_core_options.h index a31d2da..bd9ccb2 100644 --- a/libretro/libretro_core_options.h +++ b/libretro/libretro_core_options.h @@ -13,9 +13,10 @@ /* ******************************** - * VERSION: 1.3 + * VERSION: 2.0 ******************************** * + * - 2.0: Add support for core options v2 interface * - 1.3: Move translations to libretro_core_options_intl.h * - libretro_core_options_intl.h includes BOM and utf-8 * fix for MSVC 2010-2013 @@ -48,11 +49,39 @@ extern "C" { * - Will be used as a fallback for any missing entries in * frontend language definition */ -struct retro_core_option_definition option_defs_us[] = { + +struct retro_core_option_v2_category option_cats_us[] = { + { + "video", + "Video", + "Configure aspect ratio, display cropping, color palette and video filter options." + }, + { + "audio", + "Audio", + "Configure audio effects and channel volumes." + }, + { + "input", + "Input", + "Configure input devices and other input related parameters." + }, + { + "hacks", + "Emulation Hacks", + "Configure processor overclocking and emulation accuracy parameters affecting low-level performance and compatibility." + }, + { NULL, NULL, NULL }, +}; + +struct retro_core_option_v2_definition option_defs_us[] = { { "nestopia_blargg_ntsc_filter", "Blargg NTSC Filter", + NULL, "Enable Blargg NTSC filters.", + NULL, + "video", { { "disabled", NULL }, { "composite", "Composite Video" }, @@ -63,10 +92,13 @@ struct retro_core_option_definition option_defs_us[] = { }, "disabled" }, - { + {/* TODO explain the custom option */ "nestopia_palette", "Palette", - "Choose which color palette is going to be used.", + NULL, + "Color palette to be used.", + NULL, + "video", { { "cxa2025as", "CXA2025AS" }, { "consumer", "Consumer" }, @@ -87,7 +119,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_nospritelimit", "Remove Sprite Limit", + NULL, "Remove 8-sprites-per-scanline hardware limit.", + NULL, + "hacks", { { "disabled", NULL }, { "enabled", NULL }, @@ -98,7 +133,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_overclock", "CPU Speed (Overclock)", + NULL, "Overclock the emulated CPU.", + NULL, + "hacks", { { "1x", NULL }, { "2x", NULL }, @@ -109,7 +147,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_select_adapter", "4 Player Adapter", + NULL, "Manually select a 4 Player Adapter if needed. Some games will not recognize the adapter correctly through the NstDatabase.xml database, this option should help fix that.", + NULL, + "input", { { "auto", "Auto" }, { "ntsc", "NTSC" }, @@ -121,7 +162,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_fds_auto_insert", "FDS Auto Insert", + NULL, "Automatically insert first FDS disk on reset.", + NULL, + NULL, { { "disabled", NULL }, { "enabled", NULL }, @@ -132,10 +176,13 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_overscan_v", "Mask Overscan (Vertical)", + NULL, "Mask out (vertically) the potentially random glitchy video output that would have been hidden by the bezel around the edge of a standard-definition television screen.", + NULL, + "video", { - { "enabled", NULL }, { "disabled", NULL }, + { "enabled", NULL }, { NULL, NULL }, }, "enabled" @@ -143,10 +190,13 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_overscan_h", "Mask Overscan (Horizontal)", + NULL, "Mask out (horizontally) the potentially random glitchy video output that would have been hidden by the bezel around the edge of a standard-definition television screen.", + NULL, + "video", { - { "enabled", NULL }, { "disabled", NULL }, + { "enabled", NULL }, { NULL, NULL }, }, "disabled" @@ -154,7 +204,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_aspect", "Preferred Aspect Ratio", - "Choose the preferred aspect ratio. RetroArch's aspect ratio must be set to Core provided in the Video settings. 'auto' will use the NstDatabase.xml database file for aspect ratio autodetection. If there is no database present it will default to NTSC for 'auto'.", + NULL, + "RetroArch's aspect ratio must be set to Core, provided in the Video settings. 'Auto' will use the NstDatabase.xml database file for aspect ratio autodetection. If there is no database present, it will default to NTSC.", + NULL, + "video", { { "auto", "Auto" }, { "ntsc", "NTSC" }, @@ -167,7 +220,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_genie_distortion", "Game Genie Sound Distortion", + NULL, "The Game Genie cheat device could inadvertently introduce sound distortion in games. By enabling this, you can simulate the distortion it would add to a game's sound.", + NULL, + "audio", { { "disabled", NULL }, { "enabled", NULL }, @@ -178,7 +234,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_favored_system", "System Region", - "Choose which region the system is from. 'Auto' will use the NstDatabase.xml database file for region autodetection. If there is no database present it will default to NTSC for 'Auto'.", + NULL, + "'Auto' will use the NstDatabase.xml database file for region autodetection. If there is no database present, it will default to NTSC.", + NULL, + NULL, { { "auto", "Auto" }, { "ntsc", "NTSC" }, @@ -192,7 +251,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_ram_power_state", "RAM Power-on State", - "", + NULL, + "RAM values on power up. Some games rely on initial RAM values for random number generation as an example.", + NULL, + "hacks", { { "0x00", NULL }, { "0xFF", NULL }, @@ -204,7 +266,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_button_shift", "Shift Buttons Clockwise", + NULL, "Rotate A/B/X/Y button clockwise.", /* is this right? @gadsby */ + NULL, + "input", { { "disabled", NULL }, { "enabled", NULL }, @@ -215,21 +280,27 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_arkanoid_device", "Arkanoid device", + NULL, "Select the device you wish to use for the Arkanoid paddle.", + NULL, + "input", { - { "mouse", NULL }, - { "pointer", NULL }, + { "mouse", "Mouse" }, + { "pointer", "Pointer" }, }, "mouse" }, { "nestopia_zapper_device", "Zapper device", + NULL, "Select the device you wish to use for the Zapper.", + NULL, + "input", { - { "lightgun", NULL }, - { "mouse", NULL }, - { "pointer", NULL }, + { "lightgun", "Light gun" }, + { "mouse", "Mouse" }, + { "pointer", "Pointer" }, { NULL, NULL }, }, "lightgun", @@ -237,17 +308,23 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_show_crosshair", "Show Crosshair", + NULL, "Set whether to show the crosshair when the Zapper is used.", + NULL, + "input", { - { "enabled", NULL }, { "disabled", NULL}, + { "enabled", NULL }, }, "enabled" }, { "nestopia_turbo_pulse", "Turbo Pulse Speed", + NULL, "Set the turbo pulse speed for the Turbo B and Turbo A buttons.", + NULL, + "input", { { "2", NULL }, { "3", NULL }, @@ -264,10 +341,13 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_show_advanced_av_settings", "Show Advanced Audio Settings (Reopen menu)", + NULL, "Enable configuration of low-level audio channel parameters.", + NULL, + NULL, { - { "enabled", NULL }, { "disabled", NULL }, + { "enabled", NULL }, { NULL, NULL}, }, "disabled" @@ -275,7 +355,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_audio_vol_sq1", "Square 1 Channel Volume %", + NULL, "Modify Square 1 Channel Volume %.", + NULL, + "audio", { { "0", NULL }, { "10", NULL }, @@ -297,7 +380,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_audio_vol_sq2", "Square 2 Channel Volume %", + NULL, "Modify Square 2 Channel Volume %.", + NULL, + "audio", { { "0", NULL }, { "10", NULL }, @@ -319,7 +405,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_audio_vol_tri", "Triangle Channel Volume %", + NULL, "Modify Triangle Channel Volume %.", + NULL, + "audio", { { "0", NULL }, { "10", NULL }, @@ -341,7 +430,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_audio_vol_noise", "Noise Channel Volume %", + NULL, "Modify Noise Channel Volume %.", + NULL, + "audio", { { "0", NULL }, { "10", NULL }, @@ -363,7 +455,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_audio_vol_dpcm", "DPCM Channel Volume %", + NULL, "Modify DPCM Channel Volume %.", + NULL, + "audio", { { "0", NULL }, { "10", NULL }, @@ -385,7 +480,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_audio_vol_fds", "FDS Channel Volume %", + NULL, "Modify FDS Channel Volume %.", + NULL, + "audio", { { "0", NULL }, { "10", NULL }, @@ -407,7 +505,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_audio_vol_mmc5", "MMC5 Channel Volume %", + NULL, "Modify MMC5 Channel Volume %.", + NULL, + "audio", { { "0", NULL }, { "10", NULL }, @@ -429,7 +530,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_audio_vol_vrc6", "VRC6 Channel Volume %", + NULL, "Modify VRC6 Channel Volume %.", + NULL, + "audio", { { "0", NULL }, { "10", NULL }, @@ -451,7 +555,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_audio_vol_vrc7", "VRC7 Channel Volume %", + NULL, "Modify VRC7 Channel Volume %.", + NULL, + "audio", { { "0", NULL }, { "10", NULL }, @@ -473,7 +580,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_audio_vol_n163", "N163 Channel Volume %", + NULL, "Modify N163 Channel Volume %.", + NULL, + "audio", { { "0", NULL }, { "10", NULL }, @@ -495,7 +605,10 @@ struct retro_core_option_definition option_defs_us[] = { { "nestopia_audio_vol_s5b", "S5B Channel Volume %", + NULL, "Modify N163 Channel Volume %.", + NULL, + "audio", { { "0", NULL }, { "10", NULL }, @@ -514,7 +627,12 @@ struct retro_core_option_definition option_defs_us[] = { }, "100" }, - { NULL, NULL, NULL, {{0}}, NULL }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; + +struct retro_core_options_v2 options_us = { + option_cats_us, + option_defs_us }; /* @@ -524,26 +642,31 @@ struct retro_core_option_definition option_defs_us[] = { */ #ifndef HAVE_NO_LANGEXTRA -struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = { - option_defs_us, /* RETRO_LANGUAGE_ENGLISH */ - NULL, /* RETRO_LANGUAGE_JAPANESE */ - NULL, /* RETRO_LANGUAGE_FRENCH */ - NULL, /* RETRO_LANGUAGE_SPANISH */ - NULL, /* RETRO_LANGUAGE_GERMAN */ - NULL, /* 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 */ - option_defs_tr, /* RETRO_LANGUAGE_TURKISH */ +struct retro_core_options_v2 *options_intl[RETRO_LANGUAGE_LAST] = { + &options_us, /* RETRO_LANGUAGE_ENGLISH */ + &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 @@ -561,39 +684,61 @@ struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = { * be as painless as possible for core devs) */ -static INLINE void libretro_set_core_options(retro_environment_t environ_cb) +static INLINE void libretro_set_core_options(retro_environment_t environ_cb, + bool *categories_supported) { - unsigned version = 0; + unsigned version = 0; +#ifndef HAVE_NO_LANGEXTRA + unsigned language = 0; +#endif - if (!environ_cb) + if (!environ_cb || !categories_supported) return; - if (environ_cb(RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION, &version) && (version >= 1)) + *categories_supported = false; + + if (!environ_cb(RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION, &version)) + version = 0; + + if (version >= 2) { #ifndef HAVE_NO_LANGEXTRA - struct retro_core_options_intl core_options_intl; - unsigned language = 0; + struct retro_core_options_v2_intl core_options_intl; - core_options_intl.us = option_defs_us; + core_options_intl.us = &options_us; core_options_intl.local = NULL; if (environ_cb(RETRO_ENVIRONMENT_GET_LANGUAGE, &language) && (language < RETRO_LANGUAGE_LAST) && (language != RETRO_LANGUAGE_ENGLISH)) - core_options_intl.local = option_defs_intl[language]; + core_options_intl.local = options_intl[language]; - environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL, &core_options_intl); + *categories_supported = environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2_INTL, + &core_options_intl); #else - environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS, &option_defs_us); + *categories_supported = environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2, + &options_us); #endif } else { - size_t i; + size_t i, j; + size_t option_index = 0; size_t num_options = 0; + struct retro_core_option_definition + *option_v1_defs_us = NULL; +#ifndef HAVE_NO_LANGEXTRA + size_t num_options_intl = 0; + struct retro_core_option_v2_definition + *option_defs_intl = NULL; + struct retro_core_option_definition + *option_v1_defs_intl = NULL; + struct retro_core_options_intl + core_options_v1_intl; +#endif struct retro_variable *variables = NULL; char **values_buf = NULL; - /* Determine number of options */ + /* Determine total number of options */ while (true) { if (option_defs_us[num_options].key) @@ -602,86 +747,187 @@ static INLINE void libretro_set_core_options(retro_environment_t environ_cb) break; } - /* Allocate arrays */ - variables = (struct retro_variable *)calloc(num_options + 1, sizeof(struct retro_variable)); - values_buf = (char **)calloc(num_options, sizeof(char *)); - - if (!variables || !values_buf) - goto error; - - /* Copy parameters from option_defs_us array */ - for (i = 0; i < num_options; i++) + if (version >= 1) { - const char *key = option_defs_us[i].key; - const char *desc = option_defs_us[i].desc; - const char *default_value = option_defs_us[i].default_value; - struct retro_core_option_value *values = option_defs_us[i].values; - size_t buf_len = 3; - size_t default_index = 0; + /* Allocate US array */ + option_v1_defs_us = (struct retro_core_option_definition *) + calloc(num_options + 1, sizeof(struct retro_core_option_definition)); - values_buf[i] = NULL; - - if (desc) + /* Copy parameters from option_defs_us array */ + for (i = 0; i < num_options; i++) { - size_t num_values = 0; + struct retro_core_option_v2_definition *option_def_us = &option_defs_us[i]; + struct retro_core_option_value *option_values = option_def_us->values; + struct retro_core_option_definition *option_v1_def_us = &option_v1_defs_us[i]; + struct retro_core_option_value *option_v1_values = option_v1_def_us->values; - /* Determine number of values */ + option_v1_def_us->key = option_def_us->key; + option_v1_def_us->desc = option_def_us->desc; + option_v1_def_us->info = option_def_us->info; + option_v1_def_us->default_value = option_def_us->default_value; + + /* Values must be copied individually... */ + while (option_values->value) + { + option_v1_values->value = option_values->value; + option_v1_values->label = option_values->label; + + option_values++; + option_v1_values++; + } + } + +#ifndef HAVE_NO_LANGEXTRA + if (environ_cb(RETRO_ENVIRONMENT_GET_LANGUAGE, &language) && + (language < RETRO_LANGUAGE_LAST) && (language != RETRO_LANGUAGE_ENGLISH) && + options_intl[language]) + option_defs_intl = options_intl[language]->definitions; + + if (option_defs_intl) + { + /* Determine number of intl options */ while (true) { - if (values[num_values].value) - { - /* Check if this is the default value */ - if (default_value) - if (strcmp(values[num_values].value, default_value) == 0) - default_index = num_values; - - buf_len += strlen(values[num_values].value); - num_values++; - } + if (option_defs_intl[num_options_intl].key) + num_options_intl++; else break; } - /* Build values string */ - if (num_values > 0) + /* Allocate intl array */ + option_v1_defs_intl = (struct retro_core_option_definition *) + calloc(num_options_intl + 1, sizeof(struct retro_core_option_definition)); + + /* Copy parameters from option_defs_intl array */ + for (i = 0; i < num_options_intl; i++) { - size_t j; + struct retro_core_option_v2_definition *option_def_intl = &option_defs_intl[i]; + struct retro_core_option_value *option_values = option_def_intl->values; + struct retro_core_option_definition *option_v1_def_intl = &option_v1_defs_intl[i]; + struct retro_core_option_value *option_v1_values = option_v1_def_intl->values; - buf_len += num_values - 1; - buf_len += strlen(desc); + option_v1_def_intl->key = option_def_intl->key; + option_v1_def_intl->desc = option_def_intl->desc; + option_v1_def_intl->info = option_def_intl->info; + option_v1_def_intl->default_value = option_def_intl->default_value; - values_buf[i] = (char *)calloc(buf_len, sizeof(char)); - if (!values_buf[i]) - goto error; - - strcpy(values_buf[i], desc); - strcat(values_buf[i], "; "); - - /* Default value goes first */ - strcat(values_buf[i], values[default_index].value); - - /* Add remaining values */ - for (j = 0; j < num_values; j++) + /* Values must be copied individually... */ + while (option_values->value) { - if (j != default_index) - { - strcat(values_buf[i], "|"); - strcat(values_buf[i], values[j].value); - } + option_v1_values->value = option_values->value; + option_v1_values->label = option_values->label; + + option_values++; + option_v1_values++; } } } - variables[i].key = key; - variables[i].value = values_buf[i]; + core_options_v1_intl.us = option_v1_defs_us; + core_options_v1_intl.local = option_v1_defs_intl; + + environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL, &core_options_v1_intl); +#else + environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS, option_v1_defs_us); +#endif + } + else + { + /* Allocate arrays */ + variables = (struct retro_variable *)calloc(num_options + 1, + sizeof(struct retro_variable)); + values_buf = (char **)calloc(num_options, sizeof(char *)); + + if (!variables || !values_buf) + goto error; + + /* Copy parameters from option_defs_us array */ + for (i = 0; i < num_options; i++) + { + const char *key = option_defs_us[i].key; + const char *desc = option_defs_us[i].desc; + const char *default_value = option_defs_us[i].default_value; + struct retro_core_option_value *values = option_defs_us[i].values; + size_t buf_len = 3; + size_t default_index = 0; + + values_buf[i] = NULL; + + if (desc) + { + size_t num_values = 0; + + /* Determine number of values */ + while (true) + { + if (values[num_values].value) + { + /* Check if this is the default value */ + if (default_value) + if (strcmp(values[num_values].value, default_value) == 0) + default_index = num_values; + + buf_len += strlen(values[num_values].value); + num_values++; + } + else + break; + } + + /* Build values string */ + if (num_values > 0) + { + buf_len += num_values - 1; + buf_len += strlen(desc); + + values_buf[i] = (char *)calloc(buf_len, sizeof(char)); + if (!values_buf[i]) + goto error; + + strcpy(values_buf[i], desc); + strcat(values_buf[i], "; "); + + /* Default value goes first */ + strcat(values_buf[i], values[default_index].value); + + /* Add remaining values */ + for (j = 0; j < num_values; j++) + { + if (j != default_index) + { + strcat(values_buf[i], "|"); + strcat(values_buf[i], values[j].value); + } + } + } + } + + variables[option_index].key = key; + variables[option_index].value = values_buf[i]; + option_index++; + } + + /* Set variables */ + environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, variables); } - /* Set variables */ - environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, variables); - error: - /* Clean up */ + + if (option_v1_defs_us) + { + free(option_v1_defs_us); + option_v1_defs_us = NULL; + } + +#ifndef HAVE_NO_LANGEXTRA + if (option_v1_defs_intl) + { + free(option_v1_defs_intl); + option_v1_defs_intl = NULL; + } +#endif + if (values_buf) { for (i = 0; i < num_options; i++) diff --git a/libretro/libretro_core_options_intl.h b/libretro/libretro_core_options_intl.h index 0ba0163..3308e38 100644 --- a/libretro/libretro_core_options_intl.h +++ b/libretro/libretro_core_options_intl.h @@ -11,9 +11,10 @@ /* ******************************** - * VERSION: 1.3 + * VERSION: 2.0 ******************************** * + * - 2.0: Add support for core options v2 interface * - 1.3: Move translations to libretro_core_options_intl.h * - libretro_core_options_intl.h includes BOM and utf-8 * fix for MSVC 2010-2013 @@ -36,204 +37,25166 @@ extern "C" { * Core Option Definitions ******************************** */ +/* RETRO_LANGUAGE_AR */ -/* RETRO_LANGUAGE_JAPANESE */ +#define CATEGORY_VIDEO_LABEL_AR NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_AR NULL +#define CATEGORY_HACKS_INFO_0_AR NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_AR NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_AR NULL +#define OPTION_VAL_COMPOSITE_AR NULL +#define OPTION_VAL_SVIDEO_AR NULL +#define OPTION_VAL_RGB_AR NULL +#define OPTION_VAL_MONOCHROME_AR NULL +#define NESTOPIA_PALETTE_LABEL_AR NULL +#define NESTOPIA_PALETTE_INFO_0_AR NULL +#define OPTION_VAL_CXA2025AS_AR NULL +#define OPTION_VAL_CONSUMER_AR NULL +#define OPTION_VAL_CANONICAL_AR NULL +#define OPTION_VAL_ALTERNATIVE_AR NULL +#define OPTION_VAL_RGB_O1_AR NULL +#define OPTION_VAL_PAL_AR NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_AR NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_AR NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_AR NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_AR NULL +#define OPTION_VAL_RAW_AR NULL +#define OPTION_VAL_CUSTOM_AR NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_AR NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_AR NULL +#define NESTOPIA_OVERCLOCK_LABEL_AR NULL +#define NESTOPIA_OVERCLOCK_INFO_0_AR NULL +#define OPTION_VAL_1X_AR NULL +#define OPTION_VAL_2X_AR NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_AR NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_AR NULL +#define OPTION_VAL_AUTO_AR NULL +#define OPTION_VAL_NTSC_AR NULL +#define OPTION_VAL_FAMICOM_AR NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_AR NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_AR NULL +#define NESTOPIA_OVERSCAN_V_LABEL_AR NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_AR NULL +#define NESTOPIA_OVERSCAN_H_LABEL_AR NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_AR NULL +#define NESTOPIA_ASPECT_LABEL_AR NULL +#define NESTOPIA_ASPECT_INFO_0_AR NULL +#define OPTION_VAL_4_3_AR NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_AR NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_AR NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_AR NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_AR NULL +#define OPTION_VAL_DENDY_AR NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_AR NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_AR NULL +#define OPTION_VAL_0X00_AR NULL +#define OPTION_VAL_0XFF_AR NULL +#define OPTION_VAL_RANDOM_AR NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_AR NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_AR NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_AR NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_AR NULL +#define OPTION_VAL_MOUSE_AR NULL +#define OPTION_VAL_POINTER_AR NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_AR NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_AR NULL +#define OPTION_VAL_LIGHTGUN_AR NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_AR NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_AR NULL +#define NESTOPIA_TURBO_PULSE_LABEL_AR NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_AR NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_AR NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_AR NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_AR NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_AR NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_AR NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_AR NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_AR NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_AR NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_AR NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_AR NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_AR NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_AR NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_AR NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_AR NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_AR NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_AR NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_AR NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_AR NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_AR NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_AR NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_AR NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_AR NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_AR NULL -/* RETRO_LANGUAGE_FRENCH */ - -/* RETRO_LANGUAGE_SPANISH */ - -/* RETRO_LANGUAGE_GERMAN */ - -/* RETRO_LANGUAGE_ITALIAN */ - -/* RETRO_LANGUAGE_DUTCH */ - -/* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */ - -/* 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_definition option_defs_tr[] = { +struct retro_core_option_v2_category option_cats_ar[] = { { - "nestopia_blargg_ntsc_filter", - "Blargg NTSC Filtresi", - "Blargg NTSC filtrelerini etkinleştirin.", - { - { "disabled", "Devre Dışı" }, - { "composite", "Kompozit Video" }, - { "svideo", "S-Video" }, - { "rgb", "RGB SCART" }, - { "monochrome", "Tek renkli" }, - { NULL, NULL }, - }, - NULL + "video", + CATEGORY_VIDEO_LABEL_AR, + CATEGORY_VIDEO_INFO_0_AR }, { - "nestopia_palette", - "Palet", - "Hangi renk paletinin kullanılacağını seçin.", + "audio", + CATEGORY_AUDIO_LABEL_AR, + CATEGORY_AUDIO_INFO_0_AR + }, + { + "input", + CATEGORY_INPUT_LABEL_AR, + CATEGORY_INPUT_INFO_0_AR + }, + { + "hacks", + CATEGORY_HACKS_LABEL_AR, + CATEGORY_HACKS_INFO_0_AR + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_ar[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_AR, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_AR, + NULL, + "video", { - { "cxa2025as", "CXA2025AS" }, - { "consumer", "Consumer" }, - { "canonical", "Standart" }, - { "alternative", "Alternatif" }, - { "rgb", "RGB" }, - { "pal", "PAL" }, - { "composite-direct-fbx", "Doğrudan Kompozit FBx" }, - { "pvm-style-d93-fbx", "PVM-style D93 FBx" }, - { "ntsc-hardware-fbx", "NTSC donanım FBx" }, - { "nes-classic-fbx-fs", "NES Klasik FBx FS" }, - { "raw", "Raw" }, - { "custom", "Özel" }, + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_AR }, + { "svideo", OPTION_VAL_SVIDEO_AR }, + { "rgb", OPTION_VAL_RGB_AR }, + { "monochrome", OPTION_VAL_MONOCHROME_AR }, { NULL, NULL }, }, - NULL + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_AR, + NULL, + NESTOPIA_PALETTE_INFO_0_AR, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_AR }, + { "consumer", OPTION_VAL_CONSUMER_AR }, + { "canonical", OPTION_VAL_CANONICAL_AR }, + { "alternative", OPTION_VAL_ALTERNATIVE_AR }, + { "rgb", OPTION_VAL_RGB_O1_AR }, + { "pal", OPTION_VAL_PAL_AR }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_AR }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_AR }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_AR }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_AR }, + { "raw", OPTION_VAL_RAW_AR }, + { "custom", OPTION_VAL_CUSTOM_AR }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ }, { "nestopia_nospritelimit", - "Sprite Limitini Kaldır", - "Tarama başına 8 sprite donanım sınırını kaldır.", + NESTOPIA_NOSPRITELIMIT_LABEL_AR, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_AR, + NULL, + "hacks", { + { "disabled", NULL }, + { "enabled", NULL }, { NULL, NULL }, }, - NULL + "disabled" }, { "nestopia_overclock", - "CPU Hızı (Hız aşırtma)", - "Öykünülmüş CPU'ya hız aşırtma uygula.", + NESTOPIA_OVERCLOCK_LABEL_AR, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_AR, + NULL, + "hacks", { + { "1x", OPTION_VAL_1X_AR }, + { "2x", OPTION_VAL_2X_AR }, { NULL, NULL }, }, - NULL + "1x" }, { "nestopia_select_adapter", - "4 Oyuncu Adaptörü", - "Gerekirse manuel olarak bir 4 Oyuncu Adaptörü seçin. Bazı oyunlar bağdaştırıcıyı NstDatabase.xml veritabanıyla doğru bir şekilde tanıyamayabilir, bu seçenek bunu düzeltmeye yardımcı olur.", + NESTOPIA_SELECT_ADAPTER_LABEL_AR, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_AR, + NULL, + "input", { - { "auto", "Otomatik" }, - { "ntsc", "NTSC" }, - { "famicom", "Famicom" }, + { "auto", OPTION_VAL_AUTO_AR }, + { "ntsc", OPTION_VAL_NTSC_AR }, + { "famicom", OPTION_VAL_FAMICOM_AR }, { NULL, NULL }, }, - NULL + "auto" }, { "nestopia_fds_auto_insert", - "FDS Otomatik Ekleme", - "Yeniden başlatmada ilk FDS diskini otomatik olarak yerleştirir.", + NESTOPIA_FDS_AUTO_INSERT_LABEL_AR, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_AR, + NULL, + NULL, { + { "disabled", NULL }, + { "enabled", NULL }, { NULL, NULL }, }, - NULL + "enabled" }, { "nestopia_overscan_v", - "Aşırı Taşmayı Maskele (Dikey)", - "Standart tanımlı bir televizyon ekranının kenarı çevresinde çerçeve tarafından gizlenmiş olabilecek potansiyel olarak rastgele aksaklık video çıkışını maskeleyin (dikey olarak).", + NESTOPIA_OVERSCAN_V_LABEL_AR, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_AR, + NULL, + "video", { + { "disabled", NULL }, + { "enabled", NULL }, { NULL, NULL }, }, - NULL + "enabled" }, { "nestopia_overscan_h", - "Aşırı Taşmayı Maskele (Yatay)", - "Standart tanımlı bir televizyon ekranının kenarı çevresinde çerçeve tarafından gizlenmiş olabilecek rastgele aksaklıklı video çıkışını maskeleyin (yatay olarak).", + NESTOPIA_OVERSCAN_H_LABEL_AR, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_AR, + NULL, + "video", { + { "disabled", NULL }, + { "enabled", NULL }, { NULL, NULL }, }, - NULL + "disabled" }, { "nestopia_aspect", - "Tercih Edilen En Boy Oranı", - "Tercih edilen en boy oranını seçin. RetroArch'ın en boy oranı, Video ayarlarında 'Çekirdek Tarafından Sağlanan' olarak ayarlanmalıdır. 'Otomatik', en-boy oranı otomatik belirlemesi için NstDatabase.xml veritabanını kullanır. Eğer mevcut bir veritabanı yoksa, 'Otomatik' için NTSC'ye varsayılan olacaktır.", + NESTOPIA_ASPECT_LABEL_AR, + NULL, + NESTOPIA_ASPECT_INFO_0_AR, + NULL, + "video", { - { "auto", "Otomatik" }, - { "ntsc", "NTSC" }, - { "pal", "PAL" }, - { "4:3", "4:3" }, + { "auto", OPTION_VAL_AUTO_AR }, + { "ntsc", OPTION_VAL_NTSC_AR }, + { "pal", OPTION_VAL_PAL_AR }, + { "4:3", OPTION_VAL_4_3_AR }, { NULL, NULL }, }, - NULL + "auto" }, { "nestopia_genie_distortion", - "Game Genie Ses Bozulma", - "Game Genie hile cihazı yanlışlıkla oyunlarda ses bozulmalarına neden olabilir. Bunu etkinleştirerek, oyun sesine ekleyeceği bozulmayı taklit edebilirsiniz.", + NESTOPIA_GENIE_DISTORTION_LABEL_AR, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_AR, + NULL, + "audio", { + { "disabled", NULL }, + { "enabled", NULL }, { NULL, NULL }, }, - NULL + "disabled" }, { "nestopia_favored_system", - "Sistem Bölgesi", - "Sistemin hangi bölgeden olacağını seçin. 'Otomatik' bölgenin otomatik belirlenmesi için NstDatabase.xml veritabanı dosyasını kullanır. Eğer mevcut bir veritabanı yoksa, 'Otomatik' için NTSC'ye varsayılan olacaktır.", + NESTOPIA_FAVORED_SYSTEM_LABEL_AR, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_AR, + NULL, + NULL, { - { "auto", "Otomatik" }, - { "ntsc", "NTSC" }, - { "pal", "PAL" }, - { "famicom", "Famicom" }, - { "dendy", "Dendy" }, + { "auto", OPTION_VAL_AUTO_AR }, + { "ntsc", OPTION_VAL_NTSC_AR }, + { "pal", OPTION_VAL_PAL_AR }, + { "famicom", OPTION_VAL_FAMICOM_AR }, + { "dendy", OPTION_VAL_DENDY_AR }, { NULL, NULL }, }, - NULL + "auto" }, { "nestopia_ram_power_state", - "Açılıştaki RAM Durumu", - "", + NESTOPIA_RAM_POWER_STATE_LABEL_AR, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_AR, + NULL, + "hacks", { - { "0x00", NULL }, - { "0xFF", NULL }, - { "random", "Rastgele" }, + { "0x00", OPTION_VAL_0X00_AR }, + { "0xFF", OPTION_VAL_0XFF_AR }, + { "random", OPTION_VAL_RANDOM_AR }, { NULL, NULL }, }, - NULL + "0x00" }, { "nestopia_button_shift", - "A/B/X/Y Saat Yönünde Kaydırma", - "A/B/X/Y tuşlarını saat yönünde çevirir.", /* Açıklama daha sonra eklenecek */ + NESTOPIA_BUTTON_SHIFT_LABEL_AR, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_AR, /* is this right? @gadsby */ + NULL, + "input", { + { "disabled", NULL }, + { "enabled", NULL }, { NULL, NULL }, }, - NULL + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_AR, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_AR, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_AR }, + { "pointer", OPTION_VAL_POINTER_AR }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_AR, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_AR, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_AR }, + { "mouse", OPTION_VAL_MOUSE_AR }, + { "pointer", OPTION_VAL_POINTER_AR }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_AR, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_AR, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" }, { "nestopia_turbo_pulse", - "Turbo Pulse Speed", - "Turbo B ve Turbo A düğmeleri için turbo hızını ayarlayın.", + NESTOPIA_TURBO_PULSE_LABEL_AR, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_AR, + NULL, + "input", { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, { NULL, NULL }, }, - NULL + "2" }, - { NULL, NULL, NULL, {{0}}, NULL }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_AR, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_AR, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_AR, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_AR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_AR, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_AR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_AR, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_AR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_AR, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_AR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_AR, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_AR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_AR, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_AR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_AR, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_AR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_AR, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_AR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_AR, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_AR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_AR, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_AR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_AR, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_AR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_AST NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_AST NULL +#define CATEGORY_HACKS_INFO_0_AST NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_AST NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_AST NULL +#define OPTION_VAL_COMPOSITE_AST NULL +#define OPTION_VAL_SVIDEO_AST NULL +#define OPTION_VAL_RGB_AST NULL +#define OPTION_VAL_MONOCHROME_AST NULL +#define NESTOPIA_PALETTE_LABEL_AST NULL +#define NESTOPIA_PALETTE_INFO_0_AST NULL +#define OPTION_VAL_CXA2025AS_AST NULL +#define OPTION_VAL_CONSUMER_AST NULL +#define OPTION_VAL_CANONICAL_AST NULL +#define OPTION_VAL_ALTERNATIVE_AST NULL +#define OPTION_VAL_RGB_O1_AST NULL +#define OPTION_VAL_PAL_AST NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_AST NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_AST NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_AST NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_AST NULL +#define OPTION_VAL_RAW_AST NULL +#define OPTION_VAL_CUSTOM_AST NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_AST NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_AST NULL +#define NESTOPIA_OVERCLOCK_LABEL_AST NULL +#define NESTOPIA_OVERCLOCK_INFO_0_AST NULL +#define OPTION_VAL_1X_AST NULL +#define OPTION_VAL_2X_AST NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_AST NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_AST NULL +#define OPTION_VAL_AUTO_AST NULL +#define OPTION_VAL_NTSC_AST NULL +#define OPTION_VAL_FAMICOM_AST NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_AST NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_AST NULL +#define NESTOPIA_OVERSCAN_V_LABEL_AST NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_AST NULL +#define NESTOPIA_OVERSCAN_H_LABEL_AST NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_AST NULL +#define NESTOPIA_ASPECT_LABEL_AST NULL +#define NESTOPIA_ASPECT_INFO_0_AST NULL +#define OPTION_VAL_4_3_AST NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_AST NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_AST NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_AST NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_AST NULL +#define OPTION_VAL_DENDY_AST NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_AST NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_AST NULL +#define OPTION_VAL_0X00_AST NULL +#define OPTION_VAL_0XFF_AST NULL +#define OPTION_VAL_RANDOM_AST NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_AST NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_AST NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_AST NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_AST NULL +#define OPTION_VAL_MOUSE_AST NULL +#define OPTION_VAL_POINTER_AST NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_AST NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_AST NULL +#define OPTION_VAL_LIGHTGUN_AST NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_AST NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_AST NULL +#define NESTOPIA_TURBO_PULSE_LABEL_AST NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_AST NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_AST NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_AST NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_AST NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_AST NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_AST NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_AST NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_AST NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_AST NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_AST NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_AST NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_AST NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_AST NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_AST NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_AST NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_AST NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_AST NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_AST NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_AST NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_AST NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_AST NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_AST NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_AST NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_AST NULL + +struct retro_core_option_v2_category option_cats_ast[] = { + { + "video", + CATEGORY_VIDEO_LABEL_AST, + CATEGORY_VIDEO_INFO_0_AST + }, + { + "audio", + CATEGORY_AUDIO_LABEL_AST, + CATEGORY_AUDIO_INFO_0_AST + }, + { + "input", + CATEGORY_INPUT_LABEL_AST, + CATEGORY_INPUT_INFO_0_AST + }, + { + "hacks", + CATEGORY_HACKS_LABEL_AST, + CATEGORY_HACKS_INFO_0_AST + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_ast[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_AST, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_AST, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_AST }, + { "svideo", OPTION_VAL_SVIDEO_AST }, + { "rgb", OPTION_VAL_RGB_AST }, + { "monochrome", OPTION_VAL_MONOCHROME_AST }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_AST, + NULL, + NESTOPIA_PALETTE_INFO_0_AST, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_AST }, + { "consumer", OPTION_VAL_CONSUMER_AST }, + { "canonical", OPTION_VAL_CANONICAL_AST }, + { "alternative", OPTION_VAL_ALTERNATIVE_AST }, + { "rgb", OPTION_VAL_RGB_O1_AST }, + { "pal", OPTION_VAL_PAL_AST }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_AST }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_AST }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_AST }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_AST }, + { "raw", OPTION_VAL_RAW_AST }, + { "custom", OPTION_VAL_CUSTOM_AST }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_AST, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_AST, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_AST, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_AST, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_AST }, + { "2x", OPTION_VAL_2X_AST }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_AST, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_AST, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_AST }, + { "ntsc", OPTION_VAL_NTSC_AST }, + { "famicom", OPTION_VAL_FAMICOM_AST }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_AST, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_AST, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_AST, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_AST, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_AST, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_AST, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_AST, + NULL, + NESTOPIA_ASPECT_INFO_0_AST, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_AST }, + { "ntsc", OPTION_VAL_NTSC_AST }, + { "pal", OPTION_VAL_PAL_AST }, + { "4:3", OPTION_VAL_4_3_AST }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_AST, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_AST, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_AST, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_AST, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_AST }, + { "ntsc", OPTION_VAL_NTSC_AST }, + { "pal", OPTION_VAL_PAL_AST }, + { "famicom", OPTION_VAL_FAMICOM_AST }, + { "dendy", OPTION_VAL_DENDY_AST }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_AST, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_AST, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_AST }, + { "0xFF", OPTION_VAL_0XFF_AST }, + { "random", OPTION_VAL_RANDOM_AST }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_AST, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_AST, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_AST, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_AST, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_AST }, + { "pointer", OPTION_VAL_POINTER_AST }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_AST, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_AST, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_AST }, + { "mouse", OPTION_VAL_MOUSE_AST }, + { "pointer", OPTION_VAL_POINTER_AST }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_AST, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_AST, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_AST, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_AST, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_AST, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_AST, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_AST, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_AST, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_AST, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_AST, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_AST, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_AST, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_AST, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_AST, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_AST, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_AST, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_AST, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_AST, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_AST, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_AST, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_AST, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_AST, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_AST, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_AST, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_AST, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_AST, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_AST, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_AST, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_CA NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_CA NULL +#define CATEGORY_HACKS_INFO_0_CA NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_CA NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_CA NULL +#define OPTION_VAL_COMPOSITE_CA NULL +#define OPTION_VAL_SVIDEO_CA NULL +#define OPTION_VAL_RGB_CA NULL +#define OPTION_VAL_MONOCHROME_CA NULL +#define NESTOPIA_PALETTE_LABEL_CA NULL +#define NESTOPIA_PALETTE_INFO_0_CA NULL +#define OPTION_VAL_CXA2025AS_CA NULL +#define OPTION_VAL_CONSUMER_CA NULL +#define OPTION_VAL_CANONICAL_CA NULL +#define OPTION_VAL_ALTERNATIVE_CA NULL +#define OPTION_VAL_RGB_O1_CA NULL +#define OPTION_VAL_PAL_CA NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_CA NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_CA NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_CA NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_CA NULL +#define OPTION_VAL_RAW_CA NULL +#define OPTION_VAL_CUSTOM_CA NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_CA NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_CA NULL +#define NESTOPIA_OVERCLOCK_LABEL_CA NULL +#define NESTOPIA_OVERCLOCK_INFO_0_CA NULL +#define OPTION_VAL_1X_CA NULL +#define OPTION_VAL_2X_CA NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_CA NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_CA NULL +#define OPTION_VAL_AUTO_CA NULL +#define OPTION_VAL_NTSC_CA NULL +#define OPTION_VAL_FAMICOM_CA NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_CA NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_CA NULL +#define NESTOPIA_OVERSCAN_V_LABEL_CA NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_CA NULL +#define NESTOPIA_OVERSCAN_H_LABEL_CA NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_CA NULL +#define NESTOPIA_ASPECT_LABEL_CA NULL +#define NESTOPIA_ASPECT_INFO_0_CA NULL +#define OPTION_VAL_4_3_CA NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_CA NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_CA NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_CA NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_CA NULL +#define OPTION_VAL_DENDY_CA NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_CA NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_CA NULL +#define OPTION_VAL_0X00_CA NULL +#define OPTION_VAL_0XFF_CA NULL +#define OPTION_VAL_RANDOM_CA NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_CA NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_CA NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_CA NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_CA NULL +#define OPTION_VAL_MOUSE_CA NULL +#define OPTION_VAL_POINTER_CA NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_CA NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_CA NULL +#define OPTION_VAL_LIGHTGUN_CA NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_CA NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_CA NULL +#define NESTOPIA_TURBO_PULSE_LABEL_CA NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_CA NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_CA NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_CA NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_CA NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_CA NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_CA NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_CA NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_CA NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_CA NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_CA NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_CA NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_CA NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_CA NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_CA NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_CA NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_CA NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_CA NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_CA NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_CA NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_CA NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_CA NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_CA NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_CA NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_CA NULL + +struct retro_core_option_v2_category option_cats_ca[] = { + { + "video", + CATEGORY_VIDEO_LABEL_CA, + CATEGORY_VIDEO_INFO_0_CA + }, + { + "audio", + CATEGORY_AUDIO_LABEL_CA, + CATEGORY_AUDIO_INFO_0_CA + }, + { + "input", + CATEGORY_INPUT_LABEL_CA, + CATEGORY_INPUT_INFO_0_CA + }, + { + "hacks", + CATEGORY_HACKS_LABEL_CA, + CATEGORY_HACKS_INFO_0_CA + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_ca[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_CA, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_CA, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_CA }, + { "svideo", OPTION_VAL_SVIDEO_CA }, + { "rgb", OPTION_VAL_RGB_CA }, + { "monochrome", OPTION_VAL_MONOCHROME_CA }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_CA, + NULL, + NESTOPIA_PALETTE_INFO_0_CA, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_CA }, + { "consumer", OPTION_VAL_CONSUMER_CA }, + { "canonical", OPTION_VAL_CANONICAL_CA }, + { "alternative", OPTION_VAL_ALTERNATIVE_CA }, + { "rgb", OPTION_VAL_RGB_O1_CA }, + { "pal", OPTION_VAL_PAL_CA }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_CA }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_CA }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_CA }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_CA }, + { "raw", OPTION_VAL_RAW_CA }, + { "custom", OPTION_VAL_CUSTOM_CA }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_CA, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_CA, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_CA, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_CA, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_CA }, + { "2x", OPTION_VAL_2X_CA }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_CA, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_CA, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_CA }, + { "ntsc", OPTION_VAL_NTSC_CA }, + { "famicom", OPTION_VAL_FAMICOM_CA }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_CA, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_CA, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_CA, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_CA, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_CA, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_CA, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_CA, + NULL, + NESTOPIA_ASPECT_INFO_0_CA, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_CA }, + { "ntsc", OPTION_VAL_NTSC_CA }, + { "pal", OPTION_VAL_PAL_CA }, + { "4:3", OPTION_VAL_4_3_CA }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_CA, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_CA, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_CA, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_CA, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_CA }, + { "ntsc", OPTION_VAL_NTSC_CA }, + { "pal", OPTION_VAL_PAL_CA }, + { "famicom", OPTION_VAL_FAMICOM_CA }, + { "dendy", OPTION_VAL_DENDY_CA }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_CA, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_CA, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_CA }, + { "0xFF", OPTION_VAL_0XFF_CA }, + { "random", OPTION_VAL_RANDOM_CA }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_CA, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_CA, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_CA, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_CA, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_CA }, + { "pointer", OPTION_VAL_POINTER_CA }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_CA, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_CA, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_CA }, + { "mouse", OPTION_VAL_MOUSE_CA }, + { "pointer", OPTION_VAL_POINTER_CA }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_CA, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_CA, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_CA, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_CA, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_CA, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_CA, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_CA, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_CA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_CA, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_CA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_CA, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_CA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_CA, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_CA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_CA, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_CA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_CA, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_CA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_CA, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_CA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_CA, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_CA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_CA, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_CA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_CA, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_CA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_CA, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_CA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_CHS NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_CHS NULL +#define CATEGORY_HACKS_INFO_0_CHS NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_CHS NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_CHS NULL +#define OPTION_VAL_COMPOSITE_CHS NULL +#define OPTION_VAL_SVIDEO_CHS NULL +#define OPTION_VAL_RGB_CHS NULL +#define OPTION_VAL_MONOCHROME_CHS NULL +#define NESTOPIA_PALETTE_LABEL_CHS NULL +#define NESTOPIA_PALETTE_INFO_0_CHS NULL +#define OPTION_VAL_CXA2025AS_CHS NULL +#define OPTION_VAL_CONSUMER_CHS NULL +#define OPTION_VAL_CANONICAL_CHS NULL +#define OPTION_VAL_ALTERNATIVE_CHS NULL +#define OPTION_VAL_RGB_O1_CHS NULL +#define OPTION_VAL_PAL_CHS NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_CHS NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_CHS NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_CHS NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_CHS NULL +#define OPTION_VAL_RAW_CHS NULL +#define OPTION_VAL_CUSTOM_CHS NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_CHS NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_CHS NULL +#define NESTOPIA_OVERCLOCK_LABEL_CHS NULL +#define NESTOPIA_OVERCLOCK_INFO_0_CHS NULL +#define OPTION_VAL_1X_CHS NULL +#define OPTION_VAL_2X_CHS NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_CHS NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_CHS NULL +#define OPTION_VAL_AUTO_CHS NULL +#define OPTION_VAL_NTSC_CHS NULL +#define OPTION_VAL_FAMICOM_CHS NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_CHS NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_CHS NULL +#define NESTOPIA_OVERSCAN_V_LABEL_CHS NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_CHS NULL +#define NESTOPIA_OVERSCAN_H_LABEL_CHS NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_CHS NULL +#define NESTOPIA_ASPECT_LABEL_CHS NULL +#define NESTOPIA_ASPECT_INFO_0_CHS NULL +#define OPTION_VAL_4_3_CHS NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_CHS NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_CHS NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_CHS NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_CHS NULL +#define OPTION_VAL_DENDY_CHS NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_CHS NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_CHS NULL +#define OPTION_VAL_0X00_CHS NULL +#define OPTION_VAL_0XFF_CHS NULL +#define OPTION_VAL_RANDOM_CHS NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_CHS NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_CHS NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_CHS NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_CHS NULL +#define OPTION_VAL_MOUSE_CHS NULL +#define OPTION_VAL_POINTER_CHS NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_CHS NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_CHS NULL +#define OPTION_VAL_LIGHTGUN_CHS NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_CHS NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_CHS NULL +#define NESTOPIA_TURBO_PULSE_LABEL_CHS NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_CHS NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_CHS NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_CHS NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_CHS NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_CHS NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_CHS NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_CHS NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_CHS NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_CHS NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_CHS NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_CHS NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_CHS NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_CHS NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_CHS NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_CHS NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_CHS NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_CHS NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_CHS NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_CHS NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_CHS NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_CHS NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_CHS NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_CHS NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_CHS NULL + +struct retro_core_option_v2_category option_cats_chs[] = { + { + "video", + CATEGORY_VIDEO_LABEL_CHS, + CATEGORY_VIDEO_INFO_0_CHS + }, + { + "audio", + CATEGORY_AUDIO_LABEL_CHS, + CATEGORY_AUDIO_INFO_0_CHS + }, + { + "input", + CATEGORY_INPUT_LABEL_CHS, + CATEGORY_INPUT_INFO_0_CHS + }, + { + "hacks", + CATEGORY_HACKS_LABEL_CHS, + CATEGORY_HACKS_INFO_0_CHS + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_chs[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_CHS, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_CHS, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_CHS }, + { "svideo", OPTION_VAL_SVIDEO_CHS }, + { "rgb", OPTION_VAL_RGB_CHS }, + { "monochrome", OPTION_VAL_MONOCHROME_CHS }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_CHS, + NULL, + NESTOPIA_PALETTE_INFO_0_CHS, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_CHS }, + { "consumer", OPTION_VAL_CONSUMER_CHS }, + { "canonical", OPTION_VAL_CANONICAL_CHS }, + { "alternative", OPTION_VAL_ALTERNATIVE_CHS }, + { "rgb", OPTION_VAL_RGB_O1_CHS }, + { "pal", OPTION_VAL_PAL_CHS }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_CHS }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_CHS }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_CHS }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_CHS }, + { "raw", OPTION_VAL_RAW_CHS }, + { "custom", OPTION_VAL_CUSTOM_CHS }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_CHS, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_CHS, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_CHS, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_CHS, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_CHS }, + { "2x", OPTION_VAL_2X_CHS }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_CHS, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_CHS, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_CHS }, + { "ntsc", OPTION_VAL_NTSC_CHS }, + { "famicom", OPTION_VAL_FAMICOM_CHS }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_CHS, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_CHS, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_CHS, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_CHS, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_CHS, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_CHS, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_CHS, + NULL, + NESTOPIA_ASPECT_INFO_0_CHS, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_CHS }, + { "ntsc", OPTION_VAL_NTSC_CHS }, + { "pal", OPTION_VAL_PAL_CHS }, + { "4:3", OPTION_VAL_4_3_CHS }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_CHS, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_CHS, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_CHS, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_CHS, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_CHS }, + { "ntsc", OPTION_VAL_NTSC_CHS }, + { "pal", OPTION_VAL_PAL_CHS }, + { "famicom", OPTION_VAL_FAMICOM_CHS }, + { "dendy", OPTION_VAL_DENDY_CHS }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_CHS, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_CHS, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_CHS }, + { "0xFF", OPTION_VAL_0XFF_CHS }, + { "random", OPTION_VAL_RANDOM_CHS }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_CHS, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_CHS, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_CHS, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_CHS, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_CHS }, + { "pointer", OPTION_VAL_POINTER_CHS }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_CHS, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_CHS, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_CHS }, + { "mouse", OPTION_VAL_MOUSE_CHS }, + { "pointer", OPTION_VAL_POINTER_CHS }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_CHS, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_CHS, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_CHS, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_CHS, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_CHS, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_CHS, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_CHS, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_CHS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_CHS, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_CHS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_CHS, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_CHS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_CHS, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_CHS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_CHS, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_CHS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_CHS, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_CHS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_CHS, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_CHS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_CHS, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_CHS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_CHS, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_CHS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_CHS, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_CHS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_CHS, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_CHS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_CHT NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_CHT NULL +#define CATEGORY_HACKS_INFO_0_CHT NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_CHT NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_CHT NULL +#define OPTION_VAL_COMPOSITE_CHT NULL +#define OPTION_VAL_SVIDEO_CHT NULL +#define OPTION_VAL_RGB_CHT NULL +#define OPTION_VAL_MONOCHROME_CHT NULL +#define NESTOPIA_PALETTE_LABEL_CHT NULL +#define NESTOPIA_PALETTE_INFO_0_CHT NULL +#define OPTION_VAL_CXA2025AS_CHT NULL +#define OPTION_VAL_CONSUMER_CHT NULL +#define OPTION_VAL_CANONICAL_CHT NULL +#define OPTION_VAL_ALTERNATIVE_CHT NULL +#define OPTION_VAL_RGB_O1_CHT NULL +#define OPTION_VAL_PAL_CHT NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_CHT NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_CHT NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_CHT NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_CHT NULL +#define OPTION_VAL_RAW_CHT NULL +#define OPTION_VAL_CUSTOM_CHT NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_CHT NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_CHT NULL +#define NESTOPIA_OVERCLOCK_LABEL_CHT NULL +#define NESTOPIA_OVERCLOCK_INFO_0_CHT NULL +#define OPTION_VAL_1X_CHT NULL +#define OPTION_VAL_2X_CHT NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_CHT NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_CHT NULL +#define OPTION_VAL_AUTO_CHT NULL +#define OPTION_VAL_NTSC_CHT NULL +#define OPTION_VAL_FAMICOM_CHT NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_CHT NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_CHT NULL +#define NESTOPIA_OVERSCAN_V_LABEL_CHT NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_CHT NULL +#define NESTOPIA_OVERSCAN_H_LABEL_CHT NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_CHT NULL +#define NESTOPIA_ASPECT_LABEL_CHT NULL +#define NESTOPIA_ASPECT_INFO_0_CHT NULL +#define OPTION_VAL_4_3_CHT NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_CHT NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_CHT NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_CHT NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_CHT NULL +#define OPTION_VAL_DENDY_CHT NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_CHT NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_CHT NULL +#define OPTION_VAL_0X00_CHT NULL +#define OPTION_VAL_0XFF_CHT NULL +#define OPTION_VAL_RANDOM_CHT NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_CHT NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_CHT NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_CHT NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_CHT NULL +#define OPTION_VAL_MOUSE_CHT NULL +#define OPTION_VAL_POINTER_CHT NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_CHT NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_CHT NULL +#define OPTION_VAL_LIGHTGUN_CHT NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_CHT NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_CHT NULL +#define NESTOPIA_TURBO_PULSE_LABEL_CHT NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_CHT NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_CHT NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_CHT NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_CHT NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_CHT NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_CHT NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_CHT NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_CHT NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_CHT NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_CHT NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_CHT NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_CHT NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_CHT NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_CHT NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_CHT NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_CHT NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_CHT NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_CHT NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_CHT NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_CHT NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_CHT NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_CHT NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_CHT NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_CHT NULL + +struct retro_core_option_v2_category option_cats_cht[] = { + { + "video", + CATEGORY_VIDEO_LABEL_CHT, + CATEGORY_VIDEO_INFO_0_CHT + }, + { + "audio", + CATEGORY_AUDIO_LABEL_CHT, + CATEGORY_AUDIO_INFO_0_CHT + }, + { + "input", + CATEGORY_INPUT_LABEL_CHT, + CATEGORY_INPUT_INFO_0_CHT + }, + { + "hacks", + CATEGORY_HACKS_LABEL_CHT, + CATEGORY_HACKS_INFO_0_CHT + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_cht[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_CHT, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_CHT, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_CHT }, + { "svideo", OPTION_VAL_SVIDEO_CHT }, + { "rgb", OPTION_VAL_RGB_CHT }, + { "monochrome", OPTION_VAL_MONOCHROME_CHT }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_CHT, + NULL, + NESTOPIA_PALETTE_INFO_0_CHT, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_CHT }, + { "consumer", OPTION_VAL_CONSUMER_CHT }, + { "canonical", OPTION_VAL_CANONICAL_CHT }, + { "alternative", OPTION_VAL_ALTERNATIVE_CHT }, + { "rgb", OPTION_VAL_RGB_O1_CHT }, + { "pal", OPTION_VAL_PAL_CHT }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_CHT }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_CHT }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_CHT }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_CHT }, + { "raw", OPTION_VAL_RAW_CHT }, + { "custom", OPTION_VAL_CUSTOM_CHT }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_CHT, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_CHT, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_CHT, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_CHT, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_CHT }, + { "2x", OPTION_VAL_2X_CHT }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_CHT, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_CHT, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_CHT }, + { "ntsc", OPTION_VAL_NTSC_CHT }, + { "famicom", OPTION_VAL_FAMICOM_CHT }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_CHT, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_CHT, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_CHT, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_CHT, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_CHT, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_CHT, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_CHT, + NULL, + NESTOPIA_ASPECT_INFO_0_CHT, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_CHT }, + { "ntsc", OPTION_VAL_NTSC_CHT }, + { "pal", OPTION_VAL_PAL_CHT }, + { "4:3", OPTION_VAL_4_3_CHT }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_CHT, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_CHT, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_CHT, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_CHT, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_CHT }, + { "ntsc", OPTION_VAL_NTSC_CHT }, + { "pal", OPTION_VAL_PAL_CHT }, + { "famicom", OPTION_VAL_FAMICOM_CHT }, + { "dendy", OPTION_VAL_DENDY_CHT }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_CHT, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_CHT, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_CHT }, + { "0xFF", OPTION_VAL_0XFF_CHT }, + { "random", OPTION_VAL_RANDOM_CHT }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_CHT, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_CHT, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_CHT, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_CHT, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_CHT }, + { "pointer", OPTION_VAL_POINTER_CHT }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_CHT, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_CHT, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_CHT }, + { "mouse", OPTION_VAL_MOUSE_CHT }, + { "pointer", OPTION_VAL_POINTER_CHT }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_CHT, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_CHT, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_CHT, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_CHT, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_CHT, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_CHT, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_CHT, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_CHT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_CHT, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_CHT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_CHT, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_CHT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_CHT, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_CHT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_CHT, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_CHT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_CHT, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_CHT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_CHT, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_CHT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_CHT, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_CHT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_CHT, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_CHT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_CHT, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_CHT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_CHT, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_CHT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_CS NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_CS NULL +#define CATEGORY_HACKS_INFO_0_CS NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_CS NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_CS NULL +#define OPTION_VAL_COMPOSITE_CS NULL +#define OPTION_VAL_SVIDEO_CS NULL +#define OPTION_VAL_RGB_CS NULL +#define OPTION_VAL_MONOCHROME_CS NULL +#define NESTOPIA_PALETTE_LABEL_CS NULL +#define NESTOPIA_PALETTE_INFO_0_CS NULL +#define OPTION_VAL_CXA2025AS_CS NULL +#define OPTION_VAL_CONSUMER_CS NULL +#define OPTION_VAL_CANONICAL_CS NULL +#define OPTION_VAL_ALTERNATIVE_CS NULL +#define OPTION_VAL_RGB_O1_CS NULL +#define OPTION_VAL_PAL_CS NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_CS NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_CS NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_CS NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_CS NULL +#define OPTION_VAL_RAW_CS NULL +#define OPTION_VAL_CUSTOM_CS NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_CS NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_CS NULL +#define NESTOPIA_OVERCLOCK_LABEL_CS NULL +#define NESTOPIA_OVERCLOCK_INFO_0_CS NULL +#define OPTION_VAL_1X_CS NULL +#define OPTION_VAL_2X_CS NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_CS NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_CS NULL +#define OPTION_VAL_AUTO_CS NULL +#define OPTION_VAL_NTSC_CS NULL +#define OPTION_VAL_FAMICOM_CS NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_CS NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_CS NULL +#define NESTOPIA_OVERSCAN_V_LABEL_CS NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_CS NULL +#define NESTOPIA_OVERSCAN_H_LABEL_CS NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_CS NULL +#define NESTOPIA_ASPECT_LABEL_CS NULL +#define NESTOPIA_ASPECT_INFO_0_CS NULL +#define OPTION_VAL_4_3_CS NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_CS NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_CS NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_CS NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_CS NULL +#define OPTION_VAL_DENDY_CS NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_CS NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_CS NULL +#define OPTION_VAL_0X00_CS NULL +#define OPTION_VAL_0XFF_CS NULL +#define OPTION_VAL_RANDOM_CS NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_CS NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_CS NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_CS NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_CS NULL +#define OPTION_VAL_MOUSE_CS NULL +#define OPTION_VAL_POINTER_CS NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_CS NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_CS NULL +#define OPTION_VAL_LIGHTGUN_CS NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_CS NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_CS NULL +#define NESTOPIA_TURBO_PULSE_LABEL_CS NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_CS NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_CS NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_CS NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_CS NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_CS NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_CS NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_CS NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_CS NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_CS NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_CS NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_CS NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_CS NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_CS NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_CS NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_CS NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_CS NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_CS NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_CS NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_CS NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_CS NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_CS NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_CS NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_CS NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_CS NULL + +struct retro_core_option_v2_category option_cats_cs[] = { + { + "video", + CATEGORY_VIDEO_LABEL_CS, + CATEGORY_VIDEO_INFO_0_CS + }, + { + "audio", + CATEGORY_AUDIO_LABEL_CS, + CATEGORY_AUDIO_INFO_0_CS + }, + { + "input", + CATEGORY_INPUT_LABEL_CS, + CATEGORY_INPUT_INFO_0_CS + }, + { + "hacks", + CATEGORY_HACKS_LABEL_CS, + CATEGORY_HACKS_INFO_0_CS + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_cs[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_CS, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_CS, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_CS }, + { "svideo", OPTION_VAL_SVIDEO_CS }, + { "rgb", OPTION_VAL_RGB_CS }, + { "monochrome", OPTION_VAL_MONOCHROME_CS }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_CS, + NULL, + NESTOPIA_PALETTE_INFO_0_CS, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_CS }, + { "consumer", OPTION_VAL_CONSUMER_CS }, + { "canonical", OPTION_VAL_CANONICAL_CS }, + { "alternative", OPTION_VAL_ALTERNATIVE_CS }, + { "rgb", OPTION_VAL_RGB_O1_CS }, + { "pal", OPTION_VAL_PAL_CS }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_CS }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_CS }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_CS }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_CS }, + { "raw", OPTION_VAL_RAW_CS }, + { "custom", OPTION_VAL_CUSTOM_CS }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_CS, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_CS, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_CS, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_CS, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_CS }, + { "2x", OPTION_VAL_2X_CS }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_CS, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_CS, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_CS }, + { "ntsc", OPTION_VAL_NTSC_CS }, + { "famicom", OPTION_VAL_FAMICOM_CS }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_CS, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_CS, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_CS, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_CS, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_CS, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_CS, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_CS, + NULL, + NESTOPIA_ASPECT_INFO_0_CS, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_CS }, + { "ntsc", OPTION_VAL_NTSC_CS }, + { "pal", OPTION_VAL_PAL_CS }, + { "4:3", OPTION_VAL_4_3_CS }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_CS, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_CS, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_CS, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_CS, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_CS }, + { "ntsc", OPTION_VAL_NTSC_CS }, + { "pal", OPTION_VAL_PAL_CS }, + { "famicom", OPTION_VAL_FAMICOM_CS }, + { "dendy", OPTION_VAL_DENDY_CS }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_CS, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_CS, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_CS }, + { "0xFF", OPTION_VAL_0XFF_CS }, + { "random", OPTION_VAL_RANDOM_CS }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_CS, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_CS, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_CS, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_CS, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_CS }, + { "pointer", OPTION_VAL_POINTER_CS }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_CS, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_CS, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_CS }, + { "mouse", OPTION_VAL_MOUSE_CS }, + { "pointer", OPTION_VAL_POINTER_CS }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_CS, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_CS, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_CS, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_CS, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_CS, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_CS, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_CS, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_CS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_CS, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_CS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_CS, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_CS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_CS, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_CS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_CS, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_CS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_CS, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_CS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_CS, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_CS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_CS, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_CS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_CS, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_CS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_CS, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_CS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_CS, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_CS, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_CY NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_CY NULL +#define CATEGORY_HACKS_INFO_0_CY NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_CY NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_CY NULL +#define OPTION_VAL_COMPOSITE_CY NULL +#define OPTION_VAL_SVIDEO_CY NULL +#define OPTION_VAL_RGB_CY NULL +#define OPTION_VAL_MONOCHROME_CY NULL +#define NESTOPIA_PALETTE_LABEL_CY NULL +#define NESTOPIA_PALETTE_INFO_0_CY NULL +#define OPTION_VAL_CXA2025AS_CY NULL +#define OPTION_VAL_CONSUMER_CY NULL +#define OPTION_VAL_CANONICAL_CY NULL +#define OPTION_VAL_ALTERNATIVE_CY NULL +#define OPTION_VAL_RGB_O1_CY NULL +#define OPTION_VAL_PAL_CY NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_CY NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_CY NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_CY NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_CY NULL +#define OPTION_VAL_RAW_CY NULL +#define OPTION_VAL_CUSTOM_CY NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_CY NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_CY NULL +#define NESTOPIA_OVERCLOCK_LABEL_CY NULL +#define NESTOPIA_OVERCLOCK_INFO_0_CY NULL +#define OPTION_VAL_1X_CY NULL +#define OPTION_VAL_2X_CY NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_CY NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_CY NULL +#define OPTION_VAL_AUTO_CY NULL +#define OPTION_VAL_NTSC_CY NULL +#define OPTION_VAL_FAMICOM_CY NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_CY NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_CY NULL +#define NESTOPIA_OVERSCAN_V_LABEL_CY NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_CY NULL +#define NESTOPIA_OVERSCAN_H_LABEL_CY NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_CY NULL +#define NESTOPIA_ASPECT_LABEL_CY NULL +#define NESTOPIA_ASPECT_INFO_0_CY NULL +#define OPTION_VAL_4_3_CY NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_CY NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_CY NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_CY NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_CY NULL +#define OPTION_VAL_DENDY_CY NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_CY NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_CY NULL +#define OPTION_VAL_0X00_CY NULL +#define OPTION_VAL_0XFF_CY NULL +#define OPTION_VAL_RANDOM_CY NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_CY NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_CY NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_CY NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_CY NULL +#define OPTION_VAL_MOUSE_CY NULL +#define OPTION_VAL_POINTER_CY NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_CY NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_CY NULL +#define OPTION_VAL_LIGHTGUN_CY NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_CY NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_CY NULL +#define NESTOPIA_TURBO_PULSE_LABEL_CY NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_CY NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_CY NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_CY NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_CY NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_CY NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_CY NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_CY NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_CY NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_CY NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_CY NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_CY NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_CY NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_CY NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_CY NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_CY NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_CY NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_CY NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_CY NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_CY NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_CY NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_CY NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_CY NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_CY NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_CY NULL + +struct retro_core_option_v2_category option_cats_cy[] = { + { + "video", + CATEGORY_VIDEO_LABEL_CY, + CATEGORY_VIDEO_INFO_0_CY + }, + { + "audio", + CATEGORY_AUDIO_LABEL_CY, + CATEGORY_AUDIO_INFO_0_CY + }, + { + "input", + CATEGORY_INPUT_LABEL_CY, + CATEGORY_INPUT_INFO_0_CY + }, + { + "hacks", + CATEGORY_HACKS_LABEL_CY, + CATEGORY_HACKS_INFO_0_CY + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_cy[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_CY, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_CY, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_CY }, + { "svideo", OPTION_VAL_SVIDEO_CY }, + { "rgb", OPTION_VAL_RGB_CY }, + { "monochrome", OPTION_VAL_MONOCHROME_CY }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_CY, + NULL, + NESTOPIA_PALETTE_INFO_0_CY, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_CY }, + { "consumer", OPTION_VAL_CONSUMER_CY }, + { "canonical", OPTION_VAL_CANONICAL_CY }, + { "alternative", OPTION_VAL_ALTERNATIVE_CY }, + { "rgb", OPTION_VAL_RGB_O1_CY }, + { "pal", OPTION_VAL_PAL_CY }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_CY }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_CY }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_CY }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_CY }, + { "raw", OPTION_VAL_RAW_CY }, + { "custom", OPTION_VAL_CUSTOM_CY }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_CY, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_CY, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_CY, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_CY, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_CY }, + { "2x", OPTION_VAL_2X_CY }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_CY, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_CY, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_CY }, + { "ntsc", OPTION_VAL_NTSC_CY }, + { "famicom", OPTION_VAL_FAMICOM_CY }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_CY, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_CY, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_CY, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_CY, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_CY, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_CY, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_CY, + NULL, + NESTOPIA_ASPECT_INFO_0_CY, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_CY }, + { "ntsc", OPTION_VAL_NTSC_CY }, + { "pal", OPTION_VAL_PAL_CY }, + { "4:3", OPTION_VAL_4_3_CY }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_CY, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_CY, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_CY, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_CY, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_CY }, + { "ntsc", OPTION_VAL_NTSC_CY }, + { "pal", OPTION_VAL_PAL_CY }, + { "famicom", OPTION_VAL_FAMICOM_CY }, + { "dendy", OPTION_VAL_DENDY_CY }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_CY, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_CY, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_CY }, + { "0xFF", OPTION_VAL_0XFF_CY }, + { "random", OPTION_VAL_RANDOM_CY }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_CY, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_CY, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_CY, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_CY, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_CY }, + { "pointer", OPTION_VAL_POINTER_CY }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_CY, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_CY, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_CY }, + { "mouse", OPTION_VAL_MOUSE_CY }, + { "pointer", OPTION_VAL_POINTER_CY }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_CY, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_CY, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_CY, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_CY, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_CY, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_CY, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_CY, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_CY, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_CY, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_CY, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_CY, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_CY, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_CY, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_CY, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_CY, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_CY, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_CY, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_CY, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_CY, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_CY, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_CY, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_CY, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_CY, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_CY, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_CY, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_CY, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_CY, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_CY, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_DA NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_DA NULL +#define CATEGORY_HACKS_INFO_0_DA NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_DA NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_DA NULL +#define OPTION_VAL_COMPOSITE_DA NULL +#define OPTION_VAL_SVIDEO_DA NULL +#define OPTION_VAL_RGB_DA NULL +#define OPTION_VAL_MONOCHROME_DA NULL +#define NESTOPIA_PALETTE_LABEL_DA NULL +#define NESTOPIA_PALETTE_INFO_0_DA NULL +#define OPTION_VAL_CXA2025AS_DA NULL +#define OPTION_VAL_CONSUMER_DA NULL +#define OPTION_VAL_CANONICAL_DA NULL +#define OPTION_VAL_ALTERNATIVE_DA NULL +#define OPTION_VAL_RGB_O1_DA NULL +#define OPTION_VAL_PAL_DA NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_DA NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_DA NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_DA NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_DA NULL +#define OPTION_VAL_RAW_DA NULL +#define OPTION_VAL_CUSTOM_DA NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_DA NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_DA NULL +#define NESTOPIA_OVERCLOCK_LABEL_DA NULL +#define NESTOPIA_OVERCLOCK_INFO_0_DA NULL +#define OPTION_VAL_1X_DA NULL +#define OPTION_VAL_2X_DA NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_DA NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_DA NULL +#define OPTION_VAL_AUTO_DA NULL +#define OPTION_VAL_NTSC_DA NULL +#define OPTION_VAL_FAMICOM_DA NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_DA NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_DA NULL +#define NESTOPIA_OVERSCAN_V_LABEL_DA NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_DA NULL +#define NESTOPIA_OVERSCAN_H_LABEL_DA NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_DA NULL +#define NESTOPIA_ASPECT_LABEL_DA NULL +#define NESTOPIA_ASPECT_INFO_0_DA NULL +#define OPTION_VAL_4_3_DA NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_DA NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_DA NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_DA NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_DA NULL +#define OPTION_VAL_DENDY_DA NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_DA NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_DA NULL +#define OPTION_VAL_0X00_DA NULL +#define OPTION_VAL_0XFF_DA NULL +#define OPTION_VAL_RANDOM_DA NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_DA NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_DA NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_DA NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_DA NULL +#define OPTION_VAL_MOUSE_DA NULL +#define OPTION_VAL_POINTER_DA NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_DA NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_DA NULL +#define OPTION_VAL_LIGHTGUN_DA NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_DA NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_DA NULL +#define NESTOPIA_TURBO_PULSE_LABEL_DA NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_DA NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_DA NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_DA NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_DA NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_DA NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_DA NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_DA NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_DA NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_DA NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_DA NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_DA NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_DA NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_DA NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_DA NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_DA NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_DA NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_DA NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_DA NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_DA NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_DA NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_DA NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_DA NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_DA NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_DA NULL + +struct retro_core_option_v2_category option_cats_da[] = { + { + "video", + CATEGORY_VIDEO_LABEL_DA, + CATEGORY_VIDEO_INFO_0_DA + }, + { + "audio", + CATEGORY_AUDIO_LABEL_DA, + CATEGORY_AUDIO_INFO_0_DA + }, + { + "input", + CATEGORY_INPUT_LABEL_DA, + CATEGORY_INPUT_INFO_0_DA + }, + { + "hacks", + CATEGORY_HACKS_LABEL_DA, + CATEGORY_HACKS_INFO_0_DA + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_da[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_DA, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_DA, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_DA }, + { "svideo", OPTION_VAL_SVIDEO_DA }, + { "rgb", OPTION_VAL_RGB_DA }, + { "monochrome", OPTION_VAL_MONOCHROME_DA }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_DA, + NULL, + NESTOPIA_PALETTE_INFO_0_DA, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_DA }, + { "consumer", OPTION_VAL_CONSUMER_DA }, + { "canonical", OPTION_VAL_CANONICAL_DA }, + { "alternative", OPTION_VAL_ALTERNATIVE_DA }, + { "rgb", OPTION_VAL_RGB_O1_DA }, + { "pal", OPTION_VAL_PAL_DA }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_DA }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_DA }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_DA }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_DA }, + { "raw", OPTION_VAL_RAW_DA }, + { "custom", OPTION_VAL_CUSTOM_DA }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_DA, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_DA, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_DA, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_DA, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_DA }, + { "2x", OPTION_VAL_2X_DA }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_DA, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_DA, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_DA }, + { "ntsc", OPTION_VAL_NTSC_DA }, + { "famicom", OPTION_VAL_FAMICOM_DA }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_DA, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_DA, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_DA, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_DA, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_DA, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_DA, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_DA, + NULL, + NESTOPIA_ASPECT_INFO_0_DA, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_DA }, + { "ntsc", OPTION_VAL_NTSC_DA }, + { "pal", OPTION_VAL_PAL_DA }, + { "4:3", OPTION_VAL_4_3_DA }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_DA, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_DA, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_DA, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_DA, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_DA }, + { "ntsc", OPTION_VAL_NTSC_DA }, + { "pal", OPTION_VAL_PAL_DA }, + { "famicom", OPTION_VAL_FAMICOM_DA }, + { "dendy", OPTION_VAL_DENDY_DA }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_DA, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_DA, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_DA }, + { "0xFF", OPTION_VAL_0XFF_DA }, + { "random", OPTION_VAL_RANDOM_DA }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_DA, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_DA, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_DA, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_DA, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_DA }, + { "pointer", OPTION_VAL_POINTER_DA }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_DA, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_DA, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_DA }, + { "mouse", OPTION_VAL_MOUSE_DA }, + { "pointer", OPTION_VAL_POINTER_DA }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_DA, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_DA, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_DA, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_DA, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_DA, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_DA, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_DA, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_DA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_DA, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_DA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_DA, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_DA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_DA, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_DA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_DA, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_DA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_DA, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_DA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_DA, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_DA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_DA, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_DA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_DA, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_DA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_DA, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_DA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_DA, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_DA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_DE NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_DE NULL +#define CATEGORY_HACKS_INFO_0_DE NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_DE NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_DE NULL +#define OPTION_VAL_COMPOSITE_DE NULL +#define OPTION_VAL_SVIDEO_DE NULL +#define OPTION_VAL_RGB_DE NULL +#define OPTION_VAL_MONOCHROME_DE NULL +#define NESTOPIA_PALETTE_LABEL_DE NULL +#define NESTOPIA_PALETTE_INFO_0_DE NULL +#define OPTION_VAL_CXA2025AS_DE NULL +#define OPTION_VAL_CONSUMER_DE NULL +#define OPTION_VAL_CANONICAL_DE NULL +#define OPTION_VAL_ALTERNATIVE_DE NULL +#define OPTION_VAL_RGB_O1_DE NULL +#define OPTION_VAL_PAL_DE NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_DE NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_DE NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_DE NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_DE NULL +#define OPTION_VAL_RAW_DE NULL +#define OPTION_VAL_CUSTOM_DE NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_DE NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_DE NULL +#define NESTOPIA_OVERCLOCK_LABEL_DE NULL +#define NESTOPIA_OVERCLOCK_INFO_0_DE NULL +#define OPTION_VAL_1X_DE NULL +#define OPTION_VAL_2X_DE NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_DE NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_DE NULL +#define OPTION_VAL_AUTO_DE NULL +#define OPTION_VAL_NTSC_DE NULL +#define OPTION_VAL_FAMICOM_DE NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_DE NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_DE NULL +#define NESTOPIA_OVERSCAN_V_LABEL_DE NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_DE NULL +#define NESTOPIA_OVERSCAN_H_LABEL_DE NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_DE NULL +#define NESTOPIA_ASPECT_LABEL_DE NULL +#define NESTOPIA_ASPECT_INFO_0_DE NULL +#define OPTION_VAL_4_3_DE NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_DE NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_DE NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_DE NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_DE NULL +#define OPTION_VAL_DENDY_DE NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_DE NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_DE NULL +#define OPTION_VAL_0X00_DE NULL +#define OPTION_VAL_0XFF_DE NULL +#define OPTION_VAL_RANDOM_DE NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_DE NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_DE NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_DE NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_DE NULL +#define OPTION_VAL_MOUSE_DE NULL +#define OPTION_VAL_POINTER_DE NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_DE NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_DE NULL +#define OPTION_VAL_LIGHTGUN_DE NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_DE NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_DE NULL +#define NESTOPIA_TURBO_PULSE_LABEL_DE NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_DE NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_DE NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_DE NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_DE NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_DE NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_DE NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_DE NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_DE NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_DE NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_DE NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_DE NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_DE NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_DE NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_DE NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_DE NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_DE NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_DE NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_DE NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_DE NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_DE NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_DE NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_DE NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_DE NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_DE NULL + +struct retro_core_option_v2_category option_cats_de[] = { + { + "video", + CATEGORY_VIDEO_LABEL_DE, + CATEGORY_VIDEO_INFO_0_DE + }, + { + "audio", + CATEGORY_AUDIO_LABEL_DE, + CATEGORY_AUDIO_INFO_0_DE + }, + { + "input", + CATEGORY_INPUT_LABEL_DE, + CATEGORY_INPUT_INFO_0_DE + }, + { + "hacks", + CATEGORY_HACKS_LABEL_DE, + CATEGORY_HACKS_INFO_0_DE + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_de[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_DE, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_DE, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_DE }, + { "svideo", OPTION_VAL_SVIDEO_DE }, + { "rgb", OPTION_VAL_RGB_DE }, + { "monochrome", OPTION_VAL_MONOCHROME_DE }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_DE, + NULL, + NESTOPIA_PALETTE_INFO_0_DE, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_DE }, + { "consumer", OPTION_VAL_CONSUMER_DE }, + { "canonical", OPTION_VAL_CANONICAL_DE }, + { "alternative", OPTION_VAL_ALTERNATIVE_DE }, + { "rgb", OPTION_VAL_RGB_O1_DE }, + { "pal", OPTION_VAL_PAL_DE }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_DE }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_DE }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_DE }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_DE }, + { "raw", OPTION_VAL_RAW_DE }, + { "custom", OPTION_VAL_CUSTOM_DE }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_DE, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_DE, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_DE, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_DE, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_DE }, + { "2x", OPTION_VAL_2X_DE }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_DE, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_DE, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_DE }, + { "ntsc", OPTION_VAL_NTSC_DE }, + { "famicom", OPTION_VAL_FAMICOM_DE }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_DE, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_DE, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_DE, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_DE, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_DE, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_DE, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_DE, + NULL, + NESTOPIA_ASPECT_INFO_0_DE, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_DE }, + { "ntsc", OPTION_VAL_NTSC_DE }, + { "pal", OPTION_VAL_PAL_DE }, + { "4:3", OPTION_VAL_4_3_DE }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_DE, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_DE, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_DE, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_DE, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_DE }, + { "ntsc", OPTION_VAL_NTSC_DE }, + { "pal", OPTION_VAL_PAL_DE }, + { "famicom", OPTION_VAL_FAMICOM_DE }, + { "dendy", OPTION_VAL_DENDY_DE }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_DE, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_DE, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_DE }, + { "0xFF", OPTION_VAL_0XFF_DE }, + { "random", OPTION_VAL_RANDOM_DE }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_DE, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_DE, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_DE, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_DE, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_DE }, + { "pointer", OPTION_VAL_POINTER_DE }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_DE, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_DE, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_DE }, + { "mouse", OPTION_VAL_MOUSE_DE }, + { "pointer", OPTION_VAL_POINTER_DE }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_DE, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_DE, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_DE, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_DE, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_DE, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_DE, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_DE, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_DE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_DE, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_DE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_DE, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_DE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_DE, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_DE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_DE, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_DE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_DE, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_DE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_DE, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_DE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_DE, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_DE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_DE, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_DE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_DE, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_DE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_DE, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_DE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_EL NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_EL NULL +#define CATEGORY_HACKS_INFO_0_EL NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_EL NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_EL NULL +#define OPTION_VAL_COMPOSITE_EL NULL +#define OPTION_VAL_SVIDEO_EL NULL +#define OPTION_VAL_RGB_EL NULL +#define OPTION_VAL_MONOCHROME_EL NULL +#define NESTOPIA_PALETTE_LABEL_EL NULL +#define NESTOPIA_PALETTE_INFO_0_EL NULL +#define OPTION_VAL_CXA2025AS_EL NULL +#define OPTION_VAL_CONSUMER_EL NULL +#define OPTION_VAL_CANONICAL_EL NULL +#define OPTION_VAL_ALTERNATIVE_EL NULL +#define OPTION_VAL_RGB_O1_EL NULL +#define OPTION_VAL_PAL_EL NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_EL NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_EL NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_EL NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_EL NULL +#define OPTION_VAL_RAW_EL NULL +#define OPTION_VAL_CUSTOM_EL NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_EL NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_EL NULL +#define NESTOPIA_OVERCLOCK_LABEL_EL NULL +#define NESTOPIA_OVERCLOCK_INFO_0_EL NULL +#define OPTION_VAL_1X_EL NULL +#define OPTION_VAL_2X_EL NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_EL NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_EL NULL +#define OPTION_VAL_AUTO_EL NULL +#define OPTION_VAL_NTSC_EL NULL +#define OPTION_VAL_FAMICOM_EL NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_EL NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_EL NULL +#define NESTOPIA_OVERSCAN_V_LABEL_EL NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_EL NULL +#define NESTOPIA_OVERSCAN_H_LABEL_EL NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_EL NULL +#define NESTOPIA_ASPECT_LABEL_EL NULL +#define NESTOPIA_ASPECT_INFO_0_EL NULL +#define OPTION_VAL_4_3_EL NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_EL NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_EL NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_EL NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_EL NULL +#define OPTION_VAL_DENDY_EL NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_EL NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_EL NULL +#define OPTION_VAL_0X00_EL NULL +#define OPTION_VAL_0XFF_EL NULL +#define OPTION_VAL_RANDOM_EL NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_EL NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_EL NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_EL NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_EL NULL +#define OPTION_VAL_MOUSE_EL NULL +#define OPTION_VAL_POINTER_EL NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_EL NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_EL NULL +#define OPTION_VAL_LIGHTGUN_EL NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_EL NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_EL NULL +#define NESTOPIA_TURBO_PULSE_LABEL_EL NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_EL NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_EL NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_EL NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_EL NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_EL NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_EL NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_EL NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_EL NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_EL NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_EL NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_EL NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_EL NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_EL NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_EL NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_EL NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_EL NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_EL NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_EL NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_EL NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_EL NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_EL NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_EL NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_EL NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_EL NULL + +struct retro_core_option_v2_category option_cats_el[] = { + { + "video", + CATEGORY_VIDEO_LABEL_EL, + CATEGORY_VIDEO_INFO_0_EL + }, + { + "audio", + CATEGORY_AUDIO_LABEL_EL, + CATEGORY_AUDIO_INFO_0_EL + }, + { + "input", + CATEGORY_INPUT_LABEL_EL, + CATEGORY_INPUT_INFO_0_EL + }, + { + "hacks", + CATEGORY_HACKS_LABEL_EL, + CATEGORY_HACKS_INFO_0_EL + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_el[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_EL, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_EL, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_EL }, + { "svideo", OPTION_VAL_SVIDEO_EL }, + { "rgb", OPTION_VAL_RGB_EL }, + { "monochrome", OPTION_VAL_MONOCHROME_EL }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_EL, + NULL, + NESTOPIA_PALETTE_INFO_0_EL, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_EL }, + { "consumer", OPTION_VAL_CONSUMER_EL }, + { "canonical", OPTION_VAL_CANONICAL_EL }, + { "alternative", OPTION_VAL_ALTERNATIVE_EL }, + { "rgb", OPTION_VAL_RGB_O1_EL }, + { "pal", OPTION_VAL_PAL_EL }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_EL }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_EL }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_EL }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_EL }, + { "raw", OPTION_VAL_RAW_EL }, + { "custom", OPTION_VAL_CUSTOM_EL }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_EL, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_EL, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_EL, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_EL, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_EL }, + { "2x", OPTION_VAL_2X_EL }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_EL, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_EL, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_EL }, + { "ntsc", OPTION_VAL_NTSC_EL }, + { "famicom", OPTION_VAL_FAMICOM_EL }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_EL, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_EL, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_EL, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_EL, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_EL, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_EL, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_EL, + NULL, + NESTOPIA_ASPECT_INFO_0_EL, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_EL }, + { "ntsc", OPTION_VAL_NTSC_EL }, + { "pal", OPTION_VAL_PAL_EL }, + { "4:3", OPTION_VAL_4_3_EL }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_EL, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_EL, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_EL, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_EL, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_EL }, + { "ntsc", OPTION_VAL_NTSC_EL }, + { "pal", OPTION_VAL_PAL_EL }, + { "famicom", OPTION_VAL_FAMICOM_EL }, + { "dendy", OPTION_VAL_DENDY_EL }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_EL, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_EL, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_EL }, + { "0xFF", OPTION_VAL_0XFF_EL }, + { "random", OPTION_VAL_RANDOM_EL }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_EL, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_EL, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_EL, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_EL, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_EL }, + { "pointer", OPTION_VAL_POINTER_EL }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_EL, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_EL, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_EL }, + { "mouse", OPTION_VAL_MOUSE_EL }, + { "pointer", OPTION_VAL_POINTER_EL }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_EL, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_EL, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_EL, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_EL, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_EL, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_EL, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_EL, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_EL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_EL, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_EL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_EL, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_EL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_EL, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_EL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_EL, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_EL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_EL, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_EL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_EL, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_EL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_EL, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_EL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_EL, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_EL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_EL, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_EL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_EL, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_EL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_EO NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_EO NULL +#define CATEGORY_HACKS_INFO_0_EO NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_EO NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_EO NULL +#define OPTION_VAL_COMPOSITE_EO NULL +#define OPTION_VAL_SVIDEO_EO NULL +#define OPTION_VAL_RGB_EO NULL +#define OPTION_VAL_MONOCHROME_EO NULL +#define NESTOPIA_PALETTE_LABEL_EO NULL +#define NESTOPIA_PALETTE_INFO_0_EO NULL +#define OPTION_VAL_CXA2025AS_EO NULL +#define OPTION_VAL_CONSUMER_EO NULL +#define OPTION_VAL_CANONICAL_EO NULL +#define OPTION_VAL_ALTERNATIVE_EO NULL +#define OPTION_VAL_RGB_O1_EO NULL +#define OPTION_VAL_PAL_EO NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_EO NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_EO NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_EO NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_EO NULL +#define OPTION_VAL_RAW_EO NULL +#define OPTION_VAL_CUSTOM_EO NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_EO NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_EO NULL +#define NESTOPIA_OVERCLOCK_LABEL_EO NULL +#define NESTOPIA_OVERCLOCK_INFO_0_EO NULL +#define OPTION_VAL_1X_EO NULL +#define OPTION_VAL_2X_EO NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_EO NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_EO NULL +#define OPTION_VAL_AUTO_EO NULL +#define OPTION_VAL_NTSC_EO NULL +#define OPTION_VAL_FAMICOM_EO NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_EO NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_EO NULL +#define NESTOPIA_OVERSCAN_V_LABEL_EO NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_EO NULL +#define NESTOPIA_OVERSCAN_H_LABEL_EO NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_EO NULL +#define NESTOPIA_ASPECT_LABEL_EO NULL +#define NESTOPIA_ASPECT_INFO_0_EO NULL +#define OPTION_VAL_4_3_EO NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_EO NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_EO NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_EO NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_EO NULL +#define OPTION_VAL_DENDY_EO NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_EO NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_EO NULL +#define OPTION_VAL_0X00_EO NULL +#define OPTION_VAL_0XFF_EO NULL +#define OPTION_VAL_RANDOM_EO NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_EO NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_EO NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_EO NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_EO NULL +#define OPTION_VAL_MOUSE_EO NULL +#define OPTION_VAL_POINTER_EO NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_EO NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_EO NULL +#define OPTION_VAL_LIGHTGUN_EO NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_EO NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_EO NULL +#define NESTOPIA_TURBO_PULSE_LABEL_EO NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_EO NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_EO NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_EO NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_EO NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_EO NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_EO NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_EO NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_EO NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_EO NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_EO NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_EO NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_EO NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_EO NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_EO NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_EO NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_EO NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_EO NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_EO NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_EO NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_EO NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_EO NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_EO NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_EO NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_EO NULL + +struct retro_core_option_v2_category option_cats_eo[] = { + { + "video", + CATEGORY_VIDEO_LABEL_EO, + CATEGORY_VIDEO_INFO_0_EO + }, + { + "audio", + CATEGORY_AUDIO_LABEL_EO, + CATEGORY_AUDIO_INFO_0_EO + }, + { + "input", + CATEGORY_INPUT_LABEL_EO, + CATEGORY_INPUT_INFO_0_EO + }, + { + "hacks", + CATEGORY_HACKS_LABEL_EO, + CATEGORY_HACKS_INFO_0_EO + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_eo[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_EO, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_EO, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_EO }, + { "svideo", OPTION_VAL_SVIDEO_EO }, + { "rgb", OPTION_VAL_RGB_EO }, + { "monochrome", OPTION_VAL_MONOCHROME_EO }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_EO, + NULL, + NESTOPIA_PALETTE_INFO_0_EO, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_EO }, + { "consumer", OPTION_VAL_CONSUMER_EO }, + { "canonical", OPTION_VAL_CANONICAL_EO }, + { "alternative", OPTION_VAL_ALTERNATIVE_EO }, + { "rgb", OPTION_VAL_RGB_O1_EO }, + { "pal", OPTION_VAL_PAL_EO }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_EO }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_EO }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_EO }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_EO }, + { "raw", OPTION_VAL_RAW_EO }, + { "custom", OPTION_VAL_CUSTOM_EO }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_EO, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_EO, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_EO, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_EO, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_EO }, + { "2x", OPTION_VAL_2X_EO }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_EO, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_EO, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_EO }, + { "ntsc", OPTION_VAL_NTSC_EO }, + { "famicom", OPTION_VAL_FAMICOM_EO }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_EO, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_EO, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_EO, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_EO, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_EO, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_EO, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_EO, + NULL, + NESTOPIA_ASPECT_INFO_0_EO, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_EO }, + { "ntsc", OPTION_VAL_NTSC_EO }, + { "pal", OPTION_VAL_PAL_EO }, + { "4:3", OPTION_VAL_4_3_EO }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_EO, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_EO, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_EO, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_EO, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_EO }, + { "ntsc", OPTION_VAL_NTSC_EO }, + { "pal", OPTION_VAL_PAL_EO }, + { "famicom", OPTION_VAL_FAMICOM_EO }, + { "dendy", OPTION_VAL_DENDY_EO }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_EO, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_EO, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_EO }, + { "0xFF", OPTION_VAL_0XFF_EO }, + { "random", OPTION_VAL_RANDOM_EO }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_EO, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_EO, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_EO, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_EO, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_EO }, + { "pointer", OPTION_VAL_POINTER_EO }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_EO, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_EO, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_EO }, + { "mouse", OPTION_VAL_MOUSE_EO }, + { "pointer", OPTION_VAL_POINTER_EO }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_EO, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_EO, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_EO, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_EO, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_EO, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_EO, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_EO, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_EO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_EO, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_EO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_EO, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_EO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_EO, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_EO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_EO, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_EO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_EO, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_EO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_EO, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_EO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_EO, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_EO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_EO, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_EO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_EO, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_EO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_EO, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_EO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_ES NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_ES NULL +#define CATEGORY_HACKS_INFO_0_ES NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_ES NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_ES NULL +#define OPTION_VAL_COMPOSITE_ES NULL +#define OPTION_VAL_SVIDEO_ES NULL +#define OPTION_VAL_RGB_ES NULL +#define OPTION_VAL_MONOCHROME_ES NULL +#define NESTOPIA_PALETTE_LABEL_ES NULL +#define NESTOPIA_PALETTE_INFO_0_ES NULL +#define OPTION_VAL_CXA2025AS_ES NULL +#define OPTION_VAL_CONSUMER_ES NULL +#define OPTION_VAL_CANONICAL_ES NULL +#define OPTION_VAL_ALTERNATIVE_ES NULL +#define OPTION_VAL_RGB_O1_ES NULL +#define OPTION_VAL_PAL_ES NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_ES NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_ES NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_ES NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_ES NULL +#define OPTION_VAL_RAW_ES NULL +#define OPTION_VAL_CUSTOM_ES NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_ES NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_ES NULL +#define NESTOPIA_OVERCLOCK_LABEL_ES NULL +#define NESTOPIA_OVERCLOCK_INFO_0_ES NULL +#define OPTION_VAL_1X_ES NULL +#define OPTION_VAL_2X_ES NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_ES NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_ES NULL +#define OPTION_VAL_AUTO_ES NULL +#define OPTION_VAL_NTSC_ES NULL +#define OPTION_VAL_FAMICOM_ES NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_ES NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_ES NULL +#define NESTOPIA_OVERSCAN_V_LABEL_ES NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_ES NULL +#define NESTOPIA_OVERSCAN_H_LABEL_ES NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_ES NULL +#define NESTOPIA_ASPECT_LABEL_ES NULL +#define NESTOPIA_ASPECT_INFO_0_ES NULL +#define OPTION_VAL_4_3_ES NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_ES NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_ES NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_ES NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_ES NULL +#define OPTION_VAL_DENDY_ES NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_ES NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_ES NULL +#define OPTION_VAL_0X00_ES NULL +#define OPTION_VAL_0XFF_ES NULL +#define OPTION_VAL_RANDOM_ES NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_ES NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_ES NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_ES NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_ES NULL +#define OPTION_VAL_MOUSE_ES NULL +#define OPTION_VAL_POINTER_ES NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_ES NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_ES NULL +#define OPTION_VAL_LIGHTGUN_ES NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_ES NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_ES NULL +#define NESTOPIA_TURBO_PULSE_LABEL_ES NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_ES NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_ES NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_ES NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_ES NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_ES NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_ES NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_ES NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_ES NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_ES NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_ES NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_ES NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_ES NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_ES NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_ES NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_ES NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_ES NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_ES NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_ES NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_ES NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_ES NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_ES NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_ES NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_ES NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_ES NULL + +struct retro_core_option_v2_category option_cats_es[] = { + { + "video", + CATEGORY_VIDEO_LABEL_ES, + CATEGORY_VIDEO_INFO_0_ES + }, + { + "audio", + CATEGORY_AUDIO_LABEL_ES, + CATEGORY_AUDIO_INFO_0_ES + }, + { + "input", + CATEGORY_INPUT_LABEL_ES, + CATEGORY_INPUT_INFO_0_ES + }, + { + "hacks", + CATEGORY_HACKS_LABEL_ES, + CATEGORY_HACKS_INFO_0_ES + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_es[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_ES, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_ES, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_ES }, + { "svideo", OPTION_VAL_SVIDEO_ES }, + { "rgb", OPTION_VAL_RGB_ES }, + { "monochrome", OPTION_VAL_MONOCHROME_ES }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_ES, + NULL, + NESTOPIA_PALETTE_INFO_0_ES, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_ES }, + { "consumer", OPTION_VAL_CONSUMER_ES }, + { "canonical", OPTION_VAL_CANONICAL_ES }, + { "alternative", OPTION_VAL_ALTERNATIVE_ES }, + { "rgb", OPTION_VAL_RGB_O1_ES }, + { "pal", OPTION_VAL_PAL_ES }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_ES }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_ES }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_ES }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_ES }, + { "raw", OPTION_VAL_RAW_ES }, + { "custom", OPTION_VAL_CUSTOM_ES }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_ES, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_ES, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_ES, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_ES, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_ES }, + { "2x", OPTION_VAL_2X_ES }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_ES, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_ES, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_ES }, + { "ntsc", OPTION_VAL_NTSC_ES }, + { "famicom", OPTION_VAL_FAMICOM_ES }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_ES, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_ES, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_ES, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_ES, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_ES, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_ES, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_ES, + NULL, + NESTOPIA_ASPECT_INFO_0_ES, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_ES }, + { "ntsc", OPTION_VAL_NTSC_ES }, + { "pal", OPTION_VAL_PAL_ES }, + { "4:3", OPTION_VAL_4_3_ES }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_ES, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_ES, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_ES, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_ES, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_ES }, + { "ntsc", OPTION_VAL_NTSC_ES }, + { "pal", OPTION_VAL_PAL_ES }, + { "famicom", OPTION_VAL_FAMICOM_ES }, + { "dendy", OPTION_VAL_DENDY_ES }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_ES, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_ES, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_ES }, + { "0xFF", OPTION_VAL_0XFF_ES }, + { "random", OPTION_VAL_RANDOM_ES }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_ES, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_ES, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_ES, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_ES, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_ES }, + { "pointer", OPTION_VAL_POINTER_ES }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_ES, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_ES, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_ES }, + { "mouse", OPTION_VAL_MOUSE_ES }, + { "pointer", OPTION_VAL_POINTER_ES }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_ES, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_ES, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_ES, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_ES, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_ES, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_ES, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_ES, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_ES, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_ES, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_ES, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_ES, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_ES, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_ES, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_ES, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_ES, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_ES, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_ES, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_ES, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_ES, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_ES, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_ES, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_ES, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_ES, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_ES, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_ES, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_ES, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_ES, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_ES, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_es = { + option_cats_es, + option_defs_es +}; + +/* RETRO_LANGUAGE_FA */ + +#define CATEGORY_VIDEO_LABEL_FA NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_FA NULL +#define CATEGORY_HACKS_INFO_0_FA NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_FA NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_FA NULL +#define OPTION_VAL_COMPOSITE_FA NULL +#define OPTION_VAL_SVIDEO_FA NULL +#define OPTION_VAL_RGB_FA NULL +#define OPTION_VAL_MONOCHROME_FA NULL +#define NESTOPIA_PALETTE_LABEL_FA NULL +#define NESTOPIA_PALETTE_INFO_0_FA NULL +#define OPTION_VAL_CXA2025AS_FA NULL +#define OPTION_VAL_CONSUMER_FA NULL +#define OPTION_VAL_CANONICAL_FA NULL +#define OPTION_VAL_ALTERNATIVE_FA NULL +#define OPTION_VAL_RGB_O1_FA NULL +#define OPTION_VAL_PAL_FA NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_FA NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_FA NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_FA NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_FA NULL +#define OPTION_VAL_RAW_FA NULL +#define OPTION_VAL_CUSTOM_FA NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_FA NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_FA NULL +#define NESTOPIA_OVERCLOCK_LABEL_FA NULL +#define NESTOPIA_OVERCLOCK_INFO_0_FA NULL +#define OPTION_VAL_1X_FA NULL +#define OPTION_VAL_2X_FA NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_FA NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_FA NULL +#define OPTION_VAL_AUTO_FA NULL +#define OPTION_VAL_NTSC_FA NULL +#define OPTION_VAL_FAMICOM_FA NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_FA NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_FA NULL +#define NESTOPIA_OVERSCAN_V_LABEL_FA NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_FA NULL +#define NESTOPIA_OVERSCAN_H_LABEL_FA NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_FA NULL +#define NESTOPIA_ASPECT_LABEL_FA NULL +#define NESTOPIA_ASPECT_INFO_0_FA NULL +#define OPTION_VAL_4_3_FA NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_FA NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_FA NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_FA NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_FA NULL +#define OPTION_VAL_DENDY_FA NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_FA NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_FA NULL +#define OPTION_VAL_0X00_FA NULL +#define OPTION_VAL_0XFF_FA NULL +#define OPTION_VAL_RANDOM_FA NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_FA NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_FA NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_FA NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_FA NULL +#define OPTION_VAL_MOUSE_FA NULL +#define OPTION_VAL_POINTER_FA NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_FA NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_FA NULL +#define OPTION_VAL_LIGHTGUN_FA NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_FA NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_FA NULL +#define NESTOPIA_TURBO_PULSE_LABEL_FA NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_FA NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_FA NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_FA NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_FA NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_FA NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_FA NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_FA NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_FA NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_FA NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_FA NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_FA NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_FA NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_FA NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_FA NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_FA NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_FA NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_FA NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_FA NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_FA NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_FA NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_FA NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_FA NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_FA NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_FA NULL + +struct retro_core_option_v2_category option_cats_fa[] = { + { + "video", + CATEGORY_VIDEO_LABEL_FA, + CATEGORY_VIDEO_INFO_0_FA + }, + { + "audio", + CATEGORY_AUDIO_LABEL_FA, + CATEGORY_AUDIO_INFO_0_FA + }, + { + "input", + CATEGORY_INPUT_LABEL_FA, + CATEGORY_INPUT_INFO_0_FA + }, + { + "hacks", + CATEGORY_HACKS_LABEL_FA, + CATEGORY_HACKS_INFO_0_FA + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_fa[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_FA, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_FA, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_FA }, + { "svideo", OPTION_VAL_SVIDEO_FA }, + { "rgb", OPTION_VAL_RGB_FA }, + { "monochrome", OPTION_VAL_MONOCHROME_FA }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_FA, + NULL, + NESTOPIA_PALETTE_INFO_0_FA, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_FA }, + { "consumer", OPTION_VAL_CONSUMER_FA }, + { "canonical", OPTION_VAL_CANONICAL_FA }, + { "alternative", OPTION_VAL_ALTERNATIVE_FA }, + { "rgb", OPTION_VAL_RGB_O1_FA }, + { "pal", OPTION_VAL_PAL_FA }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_FA }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_FA }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_FA }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_FA }, + { "raw", OPTION_VAL_RAW_FA }, + { "custom", OPTION_VAL_CUSTOM_FA }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_FA, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_FA, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_FA, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_FA, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_FA }, + { "2x", OPTION_VAL_2X_FA }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_FA, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_FA, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_FA }, + { "ntsc", OPTION_VAL_NTSC_FA }, + { "famicom", OPTION_VAL_FAMICOM_FA }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_FA, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_FA, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_FA, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_FA, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_FA, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_FA, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_FA, + NULL, + NESTOPIA_ASPECT_INFO_0_FA, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_FA }, + { "ntsc", OPTION_VAL_NTSC_FA }, + { "pal", OPTION_VAL_PAL_FA }, + { "4:3", OPTION_VAL_4_3_FA }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_FA, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_FA, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_FA, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_FA, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_FA }, + { "ntsc", OPTION_VAL_NTSC_FA }, + { "pal", OPTION_VAL_PAL_FA }, + { "famicom", OPTION_VAL_FAMICOM_FA }, + { "dendy", OPTION_VAL_DENDY_FA }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_FA, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_FA, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_FA }, + { "0xFF", OPTION_VAL_0XFF_FA }, + { "random", OPTION_VAL_RANDOM_FA }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_FA, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_FA, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_FA, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_FA, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_FA }, + { "pointer", OPTION_VAL_POINTER_FA }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_FA, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_FA, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_FA }, + { "mouse", OPTION_VAL_MOUSE_FA }, + { "pointer", OPTION_VAL_POINTER_FA }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_FA, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_FA, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_FA, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_FA, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_FA, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_FA, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_FA, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_FA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_FA, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_FA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_FA, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_FA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_FA, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_FA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_FA, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_FA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_FA, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_FA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_FA, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_FA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_FA, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_FA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_FA, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_FA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_FA, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_FA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_FA, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_FA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_FI NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_FI NULL +#define CATEGORY_HACKS_INFO_0_FI NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_FI NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_FI NULL +#define OPTION_VAL_COMPOSITE_FI NULL +#define OPTION_VAL_SVIDEO_FI NULL +#define OPTION_VAL_RGB_FI NULL +#define OPTION_VAL_MONOCHROME_FI NULL +#define NESTOPIA_PALETTE_LABEL_FI NULL +#define NESTOPIA_PALETTE_INFO_0_FI NULL +#define OPTION_VAL_CXA2025AS_FI NULL +#define OPTION_VAL_CONSUMER_FI NULL +#define OPTION_VAL_CANONICAL_FI NULL +#define OPTION_VAL_ALTERNATIVE_FI NULL +#define OPTION_VAL_RGB_O1_FI NULL +#define OPTION_VAL_PAL_FI NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_FI NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_FI NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_FI NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_FI NULL +#define OPTION_VAL_RAW_FI NULL +#define OPTION_VAL_CUSTOM_FI NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_FI NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_FI NULL +#define NESTOPIA_OVERCLOCK_LABEL_FI NULL +#define NESTOPIA_OVERCLOCK_INFO_0_FI NULL +#define OPTION_VAL_1X_FI NULL +#define OPTION_VAL_2X_FI NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_FI NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_FI NULL +#define OPTION_VAL_AUTO_FI NULL +#define OPTION_VAL_NTSC_FI NULL +#define OPTION_VAL_FAMICOM_FI NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_FI NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_FI NULL +#define NESTOPIA_OVERSCAN_V_LABEL_FI NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_FI NULL +#define NESTOPIA_OVERSCAN_H_LABEL_FI NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_FI NULL +#define NESTOPIA_ASPECT_LABEL_FI NULL +#define NESTOPIA_ASPECT_INFO_0_FI NULL +#define OPTION_VAL_4_3_FI NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_FI NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_FI NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_FI NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_FI NULL +#define OPTION_VAL_DENDY_FI NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_FI NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_FI NULL +#define OPTION_VAL_0X00_FI NULL +#define OPTION_VAL_0XFF_FI NULL +#define OPTION_VAL_RANDOM_FI NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_FI NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_FI NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_FI NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_FI NULL +#define OPTION_VAL_MOUSE_FI NULL +#define OPTION_VAL_POINTER_FI NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_FI NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_FI NULL +#define OPTION_VAL_LIGHTGUN_FI NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_FI NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_FI NULL +#define NESTOPIA_TURBO_PULSE_LABEL_FI NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_FI NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_FI NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_FI NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_FI NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_FI NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_FI NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_FI NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_FI NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_FI NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_FI NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_FI NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_FI NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_FI NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_FI NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_FI NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_FI NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_FI NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_FI NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_FI NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_FI NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_FI NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_FI NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_FI NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_FI NULL + +struct retro_core_option_v2_category option_cats_fi[] = { + { + "video", + CATEGORY_VIDEO_LABEL_FI, + CATEGORY_VIDEO_INFO_0_FI + }, + { + "audio", + CATEGORY_AUDIO_LABEL_FI, + CATEGORY_AUDIO_INFO_0_FI + }, + { + "input", + CATEGORY_INPUT_LABEL_FI, + CATEGORY_INPUT_INFO_0_FI + }, + { + "hacks", + CATEGORY_HACKS_LABEL_FI, + CATEGORY_HACKS_INFO_0_FI + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_fi[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_FI, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_FI, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_FI }, + { "svideo", OPTION_VAL_SVIDEO_FI }, + { "rgb", OPTION_VAL_RGB_FI }, + { "monochrome", OPTION_VAL_MONOCHROME_FI }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_FI, + NULL, + NESTOPIA_PALETTE_INFO_0_FI, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_FI }, + { "consumer", OPTION_VAL_CONSUMER_FI }, + { "canonical", OPTION_VAL_CANONICAL_FI }, + { "alternative", OPTION_VAL_ALTERNATIVE_FI }, + { "rgb", OPTION_VAL_RGB_O1_FI }, + { "pal", OPTION_VAL_PAL_FI }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_FI }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_FI }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_FI }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_FI }, + { "raw", OPTION_VAL_RAW_FI }, + { "custom", OPTION_VAL_CUSTOM_FI }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_FI, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_FI, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_FI, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_FI, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_FI }, + { "2x", OPTION_VAL_2X_FI }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_FI, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_FI, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_FI }, + { "ntsc", OPTION_VAL_NTSC_FI }, + { "famicom", OPTION_VAL_FAMICOM_FI }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_FI, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_FI, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_FI, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_FI, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_FI, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_FI, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_FI, + NULL, + NESTOPIA_ASPECT_INFO_0_FI, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_FI }, + { "ntsc", OPTION_VAL_NTSC_FI }, + { "pal", OPTION_VAL_PAL_FI }, + { "4:3", OPTION_VAL_4_3_FI }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_FI, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_FI, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_FI, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_FI, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_FI }, + { "ntsc", OPTION_VAL_NTSC_FI }, + { "pal", OPTION_VAL_PAL_FI }, + { "famicom", OPTION_VAL_FAMICOM_FI }, + { "dendy", OPTION_VAL_DENDY_FI }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_FI, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_FI, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_FI }, + { "0xFF", OPTION_VAL_0XFF_FI }, + { "random", OPTION_VAL_RANDOM_FI }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_FI, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_FI, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_FI, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_FI, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_FI }, + { "pointer", OPTION_VAL_POINTER_FI }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_FI, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_FI, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_FI }, + { "mouse", OPTION_VAL_MOUSE_FI }, + { "pointer", OPTION_VAL_POINTER_FI }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_FI, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_FI, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_FI, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_FI, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_FI, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_FI, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_FI, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_FI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_FI, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_FI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_FI, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_FI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_FI, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_FI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_FI, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_FI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_FI, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_FI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_FI, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_FI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_FI, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_FI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_FI, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_FI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_FI, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_FI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_FI, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_FI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_FR NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_FR NULL +#define CATEGORY_HACKS_INFO_0_FR NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_FR NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_FR NULL +#define OPTION_VAL_COMPOSITE_FR NULL +#define OPTION_VAL_SVIDEO_FR NULL +#define OPTION_VAL_RGB_FR NULL +#define OPTION_VAL_MONOCHROME_FR NULL +#define NESTOPIA_PALETTE_LABEL_FR NULL +#define NESTOPIA_PALETTE_INFO_0_FR NULL +#define OPTION_VAL_CXA2025AS_FR NULL +#define OPTION_VAL_CONSUMER_FR NULL +#define OPTION_VAL_CANONICAL_FR NULL +#define OPTION_VAL_ALTERNATIVE_FR NULL +#define OPTION_VAL_RGB_O1_FR NULL +#define OPTION_VAL_PAL_FR NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_FR NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_FR NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_FR NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_FR NULL +#define OPTION_VAL_RAW_FR NULL +#define OPTION_VAL_CUSTOM_FR NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_FR NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_FR NULL +#define NESTOPIA_OVERCLOCK_LABEL_FR NULL +#define NESTOPIA_OVERCLOCK_INFO_0_FR NULL +#define OPTION_VAL_1X_FR NULL +#define OPTION_VAL_2X_FR NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_FR NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_FR NULL +#define OPTION_VAL_AUTO_FR NULL +#define OPTION_VAL_NTSC_FR NULL +#define OPTION_VAL_FAMICOM_FR NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_FR NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_FR NULL +#define NESTOPIA_OVERSCAN_V_LABEL_FR NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_FR NULL +#define NESTOPIA_OVERSCAN_H_LABEL_FR NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_FR NULL +#define NESTOPIA_ASPECT_LABEL_FR NULL +#define NESTOPIA_ASPECT_INFO_0_FR NULL +#define OPTION_VAL_4_3_FR NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_FR NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_FR NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_FR NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_FR NULL +#define OPTION_VAL_DENDY_FR NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_FR NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_FR NULL +#define OPTION_VAL_0X00_FR NULL +#define OPTION_VAL_0XFF_FR NULL +#define OPTION_VAL_RANDOM_FR NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_FR NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_FR NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_FR NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_FR NULL +#define OPTION_VAL_MOUSE_FR NULL +#define OPTION_VAL_POINTER_FR NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_FR NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_FR NULL +#define OPTION_VAL_LIGHTGUN_FR NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_FR NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_FR NULL +#define NESTOPIA_TURBO_PULSE_LABEL_FR NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_FR NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_FR NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_FR NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_FR NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_FR NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_FR NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_FR NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_FR NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_FR NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_FR NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_FR NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_FR NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_FR NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_FR NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_FR NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_FR NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_FR NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_FR NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_FR NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_FR NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_FR NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_FR NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_FR NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_FR NULL + +struct retro_core_option_v2_category option_cats_fr[] = { + { + "video", + CATEGORY_VIDEO_LABEL_FR, + CATEGORY_VIDEO_INFO_0_FR + }, + { + "audio", + CATEGORY_AUDIO_LABEL_FR, + CATEGORY_AUDIO_INFO_0_FR + }, + { + "input", + CATEGORY_INPUT_LABEL_FR, + CATEGORY_INPUT_INFO_0_FR + }, + { + "hacks", + CATEGORY_HACKS_LABEL_FR, + CATEGORY_HACKS_INFO_0_FR + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_fr[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_FR, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_FR, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_FR }, + { "svideo", OPTION_VAL_SVIDEO_FR }, + { "rgb", OPTION_VAL_RGB_FR }, + { "monochrome", OPTION_VAL_MONOCHROME_FR }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_FR, + NULL, + NESTOPIA_PALETTE_INFO_0_FR, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_FR }, + { "consumer", OPTION_VAL_CONSUMER_FR }, + { "canonical", OPTION_VAL_CANONICAL_FR }, + { "alternative", OPTION_VAL_ALTERNATIVE_FR }, + { "rgb", OPTION_VAL_RGB_O1_FR }, + { "pal", OPTION_VAL_PAL_FR }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_FR }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_FR }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_FR }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_FR }, + { "raw", OPTION_VAL_RAW_FR }, + { "custom", OPTION_VAL_CUSTOM_FR }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_FR, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_FR, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_FR, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_FR, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_FR }, + { "2x", OPTION_VAL_2X_FR }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_FR, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_FR, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_FR }, + { "ntsc", OPTION_VAL_NTSC_FR }, + { "famicom", OPTION_VAL_FAMICOM_FR }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_FR, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_FR, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_FR, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_FR, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_FR, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_FR, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_FR, + NULL, + NESTOPIA_ASPECT_INFO_0_FR, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_FR }, + { "ntsc", OPTION_VAL_NTSC_FR }, + { "pal", OPTION_VAL_PAL_FR }, + { "4:3", OPTION_VAL_4_3_FR }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_FR, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_FR, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_FR, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_FR, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_FR }, + { "ntsc", OPTION_VAL_NTSC_FR }, + { "pal", OPTION_VAL_PAL_FR }, + { "famicom", OPTION_VAL_FAMICOM_FR }, + { "dendy", OPTION_VAL_DENDY_FR }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_FR, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_FR, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_FR }, + { "0xFF", OPTION_VAL_0XFF_FR }, + { "random", OPTION_VAL_RANDOM_FR }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_FR, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_FR, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_FR, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_FR, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_FR }, + { "pointer", OPTION_VAL_POINTER_FR }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_FR, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_FR, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_FR }, + { "mouse", OPTION_VAL_MOUSE_FR }, + { "pointer", OPTION_VAL_POINTER_FR }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_FR, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_FR, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_FR, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_FR, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_FR, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_FR, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_FR, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_FR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_FR, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_FR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_FR, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_FR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_FR, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_FR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_FR, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_FR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_FR, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_FR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_FR, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_FR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_FR, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_FR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_FR, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_FR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_FR, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_FR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_FR, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_FR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_GL NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_GL NULL +#define CATEGORY_HACKS_INFO_0_GL NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_GL NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_GL NULL +#define OPTION_VAL_COMPOSITE_GL NULL +#define OPTION_VAL_SVIDEO_GL NULL +#define OPTION_VAL_RGB_GL NULL +#define OPTION_VAL_MONOCHROME_GL NULL +#define NESTOPIA_PALETTE_LABEL_GL NULL +#define NESTOPIA_PALETTE_INFO_0_GL NULL +#define OPTION_VAL_CXA2025AS_GL NULL +#define OPTION_VAL_CONSUMER_GL NULL +#define OPTION_VAL_CANONICAL_GL NULL +#define OPTION_VAL_ALTERNATIVE_GL NULL +#define OPTION_VAL_RGB_O1_GL NULL +#define OPTION_VAL_PAL_GL NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_GL NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_GL NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_GL NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_GL NULL +#define OPTION_VAL_RAW_GL NULL +#define OPTION_VAL_CUSTOM_GL NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_GL NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_GL NULL +#define NESTOPIA_OVERCLOCK_LABEL_GL NULL +#define NESTOPIA_OVERCLOCK_INFO_0_GL NULL +#define OPTION_VAL_1X_GL NULL +#define OPTION_VAL_2X_GL NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_GL NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_GL NULL +#define OPTION_VAL_AUTO_GL NULL +#define OPTION_VAL_NTSC_GL NULL +#define OPTION_VAL_FAMICOM_GL NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_GL NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_GL NULL +#define NESTOPIA_OVERSCAN_V_LABEL_GL NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_GL NULL +#define NESTOPIA_OVERSCAN_H_LABEL_GL NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_GL NULL +#define NESTOPIA_ASPECT_LABEL_GL NULL +#define NESTOPIA_ASPECT_INFO_0_GL NULL +#define OPTION_VAL_4_3_GL NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_GL NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_GL NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_GL NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_GL NULL +#define OPTION_VAL_DENDY_GL NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_GL NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_GL NULL +#define OPTION_VAL_0X00_GL NULL +#define OPTION_VAL_0XFF_GL NULL +#define OPTION_VAL_RANDOM_GL NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_GL NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_GL NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_GL NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_GL NULL +#define OPTION_VAL_MOUSE_GL NULL +#define OPTION_VAL_POINTER_GL NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_GL NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_GL NULL +#define OPTION_VAL_LIGHTGUN_GL NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_GL NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_GL NULL +#define NESTOPIA_TURBO_PULSE_LABEL_GL NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_GL NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_GL NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_GL NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_GL NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_GL NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_GL NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_GL NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_GL NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_GL NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_GL NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_GL NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_GL NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_GL NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_GL NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_GL NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_GL NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_GL NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_GL NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_GL NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_GL NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_GL NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_GL NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_GL NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_GL NULL + +struct retro_core_option_v2_category option_cats_gl[] = { + { + "video", + CATEGORY_VIDEO_LABEL_GL, + CATEGORY_VIDEO_INFO_0_GL + }, + { + "audio", + CATEGORY_AUDIO_LABEL_GL, + CATEGORY_AUDIO_INFO_0_GL + }, + { + "input", + CATEGORY_INPUT_LABEL_GL, + CATEGORY_INPUT_INFO_0_GL + }, + { + "hacks", + CATEGORY_HACKS_LABEL_GL, + CATEGORY_HACKS_INFO_0_GL + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_gl[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_GL, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_GL, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_GL }, + { "svideo", OPTION_VAL_SVIDEO_GL }, + { "rgb", OPTION_VAL_RGB_GL }, + { "monochrome", OPTION_VAL_MONOCHROME_GL }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_GL, + NULL, + NESTOPIA_PALETTE_INFO_0_GL, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_GL }, + { "consumer", OPTION_VAL_CONSUMER_GL }, + { "canonical", OPTION_VAL_CANONICAL_GL }, + { "alternative", OPTION_VAL_ALTERNATIVE_GL }, + { "rgb", OPTION_VAL_RGB_O1_GL }, + { "pal", OPTION_VAL_PAL_GL }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_GL }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_GL }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_GL }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_GL }, + { "raw", OPTION_VAL_RAW_GL }, + { "custom", OPTION_VAL_CUSTOM_GL }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_GL, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_GL, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_GL, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_GL, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_GL }, + { "2x", OPTION_VAL_2X_GL }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_GL, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_GL, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_GL }, + { "ntsc", OPTION_VAL_NTSC_GL }, + { "famicom", OPTION_VAL_FAMICOM_GL }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_GL, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_GL, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_GL, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_GL, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_GL, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_GL, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_GL, + NULL, + NESTOPIA_ASPECT_INFO_0_GL, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_GL }, + { "ntsc", OPTION_VAL_NTSC_GL }, + { "pal", OPTION_VAL_PAL_GL }, + { "4:3", OPTION_VAL_4_3_GL }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_GL, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_GL, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_GL, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_GL, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_GL }, + { "ntsc", OPTION_VAL_NTSC_GL }, + { "pal", OPTION_VAL_PAL_GL }, + { "famicom", OPTION_VAL_FAMICOM_GL }, + { "dendy", OPTION_VAL_DENDY_GL }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_GL, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_GL, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_GL }, + { "0xFF", OPTION_VAL_0XFF_GL }, + { "random", OPTION_VAL_RANDOM_GL }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_GL, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_GL, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_GL, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_GL, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_GL }, + { "pointer", OPTION_VAL_POINTER_GL }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_GL, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_GL, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_GL }, + { "mouse", OPTION_VAL_MOUSE_GL }, + { "pointer", OPTION_VAL_POINTER_GL }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_GL, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_GL, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_GL, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_GL, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_GL, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_GL, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_GL, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_GL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_GL, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_GL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_GL, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_GL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_GL, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_GL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_GL, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_GL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_GL, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_GL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_GL, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_GL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_GL, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_GL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_GL, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_GL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_GL, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_GL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_GL, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_GL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_HE NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_HE NULL +#define CATEGORY_HACKS_INFO_0_HE NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_HE NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_HE NULL +#define OPTION_VAL_COMPOSITE_HE NULL +#define OPTION_VAL_SVIDEO_HE NULL +#define OPTION_VAL_RGB_HE NULL +#define OPTION_VAL_MONOCHROME_HE NULL +#define NESTOPIA_PALETTE_LABEL_HE NULL +#define NESTOPIA_PALETTE_INFO_0_HE NULL +#define OPTION_VAL_CXA2025AS_HE NULL +#define OPTION_VAL_CONSUMER_HE NULL +#define OPTION_VAL_CANONICAL_HE NULL +#define OPTION_VAL_ALTERNATIVE_HE NULL +#define OPTION_VAL_RGB_O1_HE NULL +#define OPTION_VAL_PAL_HE NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_HE NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_HE NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_HE NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_HE NULL +#define OPTION_VAL_RAW_HE NULL +#define OPTION_VAL_CUSTOM_HE NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_HE NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_HE NULL +#define NESTOPIA_OVERCLOCK_LABEL_HE NULL +#define NESTOPIA_OVERCLOCK_INFO_0_HE NULL +#define OPTION_VAL_1X_HE NULL +#define OPTION_VAL_2X_HE NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_HE NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_HE NULL +#define OPTION_VAL_AUTO_HE NULL +#define OPTION_VAL_NTSC_HE NULL +#define OPTION_VAL_FAMICOM_HE NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_HE NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_HE NULL +#define NESTOPIA_OVERSCAN_V_LABEL_HE NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_HE NULL +#define NESTOPIA_OVERSCAN_H_LABEL_HE NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_HE NULL +#define NESTOPIA_ASPECT_LABEL_HE NULL +#define NESTOPIA_ASPECT_INFO_0_HE NULL +#define OPTION_VAL_4_3_HE NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_HE NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_HE NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_HE NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_HE NULL +#define OPTION_VAL_DENDY_HE NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_HE NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_HE NULL +#define OPTION_VAL_0X00_HE NULL +#define OPTION_VAL_0XFF_HE NULL +#define OPTION_VAL_RANDOM_HE NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_HE NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_HE NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_HE NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_HE NULL +#define OPTION_VAL_MOUSE_HE NULL +#define OPTION_VAL_POINTER_HE NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_HE NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_HE NULL +#define OPTION_VAL_LIGHTGUN_HE NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_HE NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_HE NULL +#define NESTOPIA_TURBO_PULSE_LABEL_HE NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_HE NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_HE NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_HE NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_HE NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_HE NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_HE NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_HE NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_HE NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_HE NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_HE NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_HE NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_HE NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_HE NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_HE NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_HE NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_HE NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_HE NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_HE NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_HE NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_HE NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_HE NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_HE NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_HE NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_HE NULL + +struct retro_core_option_v2_category option_cats_he[] = { + { + "video", + CATEGORY_VIDEO_LABEL_HE, + CATEGORY_VIDEO_INFO_0_HE + }, + { + "audio", + CATEGORY_AUDIO_LABEL_HE, + CATEGORY_AUDIO_INFO_0_HE + }, + { + "input", + CATEGORY_INPUT_LABEL_HE, + CATEGORY_INPUT_INFO_0_HE + }, + { + "hacks", + CATEGORY_HACKS_LABEL_HE, + CATEGORY_HACKS_INFO_0_HE + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_he[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_HE, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_HE, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_HE }, + { "svideo", OPTION_VAL_SVIDEO_HE }, + { "rgb", OPTION_VAL_RGB_HE }, + { "monochrome", OPTION_VAL_MONOCHROME_HE }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_HE, + NULL, + NESTOPIA_PALETTE_INFO_0_HE, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_HE }, + { "consumer", OPTION_VAL_CONSUMER_HE }, + { "canonical", OPTION_VAL_CANONICAL_HE }, + { "alternative", OPTION_VAL_ALTERNATIVE_HE }, + { "rgb", OPTION_VAL_RGB_O1_HE }, + { "pal", OPTION_VAL_PAL_HE }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_HE }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_HE }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_HE }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_HE }, + { "raw", OPTION_VAL_RAW_HE }, + { "custom", OPTION_VAL_CUSTOM_HE }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_HE, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_HE, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_HE, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_HE, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_HE }, + { "2x", OPTION_VAL_2X_HE }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_HE, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_HE, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_HE }, + { "ntsc", OPTION_VAL_NTSC_HE }, + { "famicom", OPTION_VAL_FAMICOM_HE }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_HE, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_HE, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_HE, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_HE, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_HE, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_HE, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_HE, + NULL, + NESTOPIA_ASPECT_INFO_0_HE, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_HE }, + { "ntsc", OPTION_VAL_NTSC_HE }, + { "pal", OPTION_VAL_PAL_HE }, + { "4:3", OPTION_VAL_4_3_HE }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_HE, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_HE, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_HE, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_HE, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_HE }, + { "ntsc", OPTION_VAL_NTSC_HE }, + { "pal", OPTION_VAL_PAL_HE }, + { "famicom", OPTION_VAL_FAMICOM_HE }, + { "dendy", OPTION_VAL_DENDY_HE }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_HE, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_HE, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_HE }, + { "0xFF", OPTION_VAL_0XFF_HE }, + { "random", OPTION_VAL_RANDOM_HE }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_HE, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_HE, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_HE, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_HE, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_HE }, + { "pointer", OPTION_VAL_POINTER_HE }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_HE, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_HE, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_HE }, + { "mouse", OPTION_VAL_MOUSE_HE }, + { "pointer", OPTION_VAL_POINTER_HE }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_HE, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_HE, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_HE, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_HE, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_HE, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_HE, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_HE, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_HE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_HE, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_HE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_HE, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_HE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_HE, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_HE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_HE, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_HE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_HE, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_HE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_HE, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_HE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_HE, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_HE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_HE, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_HE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_HE, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_HE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_HE, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_HE, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_HU NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_HU NULL +#define CATEGORY_HACKS_INFO_0_HU NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_HU NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_HU NULL +#define OPTION_VAL_COMPOSITE_HU NULL +#define OPTION_VAL_SVIDEO_HU NULL +#define OPTION_VAL_RGB_HU NULL +#define OPTION_VAL_MONOCHROME_HU NULL +#define NESTOPIA_PALETTE_LABEL_HU NULL +#define NESTOPIA_PALETTE_INFO_0_HU NULL +#define OPTION_VAL_CXA2025AS_HU NULL +#define OPTION_VAL_CONSUMER_HU NULL +#define OPTION_VAL_CANONICAL_HU NULL +#define OPTION_VAL_ALTERNATIVE_HU NULL +#define OPTION_VAL_RGB_O1_HU NULL +#define OPTION_VAL_PAL_HU NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_HU NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_HU NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_HU NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_HU NULL +#define OPTION_VAL_RAW_HU NULL +#define OPTION_VAL_CUSTOM_HU NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_HU NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_HU NULL +#define NESTOPIA_OVERCLOCK_LABEL_HU NULL +#define NESTOPIA_OVERCLOCK_INFO_0_HU NULL +#define OPTION_VAL_1X_HU NULL +#define OPTION_VAL_2X_HU NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_HU NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_HU NULL +#define OPTION_VAL_AUTO_HU NULL +#define OPTION_VAL_NTSC_HU NULL +#define OPTION_VAL_FAMICOM_HU NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_HU NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_HU NULL +#define NESTOPIA_OVERSCAN_V_LABEL_HU NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_HU NULL +#define NESTOPIA_OVERSCAN_H_LABEL_HU NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_HU NULL +#define NESTOPIA_ASPECT_LABEL_HU NULL +#define NESTOPIA_ASPECT_INFO_0_HU NULL +#define OPTION_VAL_4_3_HU NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_HU NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_HU NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_HU NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_HU NULL +#define OPTION_VAL_DENDY_HU NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_HU NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_HU NULL +#define OPTION_VAL_0X00_HU NULL +#define OPTION_VAL_0XFF_HU NULL +#define OPTION_VAL_RANDOM_HU NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_HU NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_HU NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_HU NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_HU NULL +#define OPTION_VAL_MOUSE_HU NULL +#define OPTION_VAL_POINTER_HU NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_HU NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_HU NULL +#define OPTION_VAL_LIGHTGUN_HU NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_HU NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_HU NULL +#define NESTOPIA_TURBO_PULSE_LABEL_HU NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_HU NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_HU NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_HU NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_HU NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_HU NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_HU NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_HU NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_HU NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_HU NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_HU NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_HU NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_HU NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_HU NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_HU NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_HU NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_HU NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_HU NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_HU NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_HU NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_HU NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_HU NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_HU NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_HU NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_HU NULL + +struct retro_core_option_v2_category option_cats_hu[] = { + { + "video", + CATEGORY_VIDEO_LABEL_HU, + CATEGORY_VIDEO_INFO_0_HU + }, + { + "audio", + CATEGORY_AUDIO_LABEL_HU, + CATEGORY_AUDIO_INFO_0_HU + }, + { + "input", + CATEGORY_INPUT_LABEL_HU, + CATEGORY_INPUT_INFO_0_HU + }, + { + "hacks", + CATEGORY_HACKS_LABEL_HU, + CATEGORY_HACKS_INFO_0_HU + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_hu[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_HU, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_HU, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_HU }, + { "svideo", OPTION_VAL_SVIDEO_HU }, + { "rgb", OPTION_VAL_RGB_HU }, + { "monochrome", OPTION_VAL_MONOCHROME_HU }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_HU, + NULL, + NESTOPIA_PALETTE_INFO_0_HU, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_HU }, + { "consumer", OPTION_VAL_CONSUMER_HU }, + { "canonical", OPTION_VAL_CANONICAL_HU }, + { "alternative", OPTION_VAL_ALTERNATIVE_HU }, + { "rgb", OPTION_VAL_RGB_O1_HU }, + { "pal", OPTION_VAL_PAL_HU }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_HU }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_HU }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_HU }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_HU }, + { "raw", OPTION_VAL_RAW_HU }, + { "custom", OPTION_VAL_CUSTOM_HU }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_HU, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_HU, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_HU, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_HU, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_HU }, + { "2x", OPTION_VAL_2X_HU }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_HU, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_HU, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_HU }, + { "ntsc", OPTION_VAL_NTSC_HU }, + { "famicom", OPTION_VAL_FAMICOM_HU }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_HU, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_HU, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_HU, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_HU, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_HU, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_HU, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_HU, + NULL, + NESTOPIA_ASPECT_INFO_0_HU, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_HU }, + { "ntsc", OPTION_VAL_NTSC_HU }, + { "pal", OPTION_VAL_PAL_HU }, + { "4:3", OPTION_VAL_4_3_HU }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_HU, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_HU, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_HU, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_HU, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_HU }, + { "ntsc", OPTION_VAL_NTSC_HU }, + { "pal", OPTION_VAL_PAL_HU }, + { "famicom", OPTION_VAL_FAMICOM_HU }, + { "dendy", OPTION_VAL_DENDY_HU }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_HU, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_HU, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_HU }, + { "0xFF", OPTION_VAL_0XFF_HU }, + { "random", OPTION_VAL_RANDOM_HU }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_HU, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_HU, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_HU, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_HU, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_HU }, + { "pointer", OPTION_VAL_POINTER_HU }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_HU, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_HU, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_HU }, + { "mouse", OPTION_VAL_MOUSE_HU }, + { "pointer", OPTION_VAL_POINTER_HU }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_HU, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_HU, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_HU, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_HU, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_HU, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_HU, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_HU, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_HU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_HU, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_HU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_HU, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_HU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_HU, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_HU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_HU, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_HU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_HU, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_HU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_HU, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_HU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_HU, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_HU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_HU, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_HU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_HU, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_HU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_HU, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_HU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_ID NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_ID NULL +#define CATEGORY_HACKS_INFO_0_ID NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_ID NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_ID NULL +#define OPTION_VAL_COMPOSITE_ID NULL +#define OPTION_VAL_SVIDEO_ID NULL +#define OPTION_VAL_RGB_ID NULL +#define OPTION_VAL_MONOCHROME_ID NULL +#define NESTOPIA_PALETTE_LABEL_ID NULL +#define NESTOPIA_PALETTE_INFO_0_ID NULL +#define OPTION_VAL_CXA2025AS_ID NULL +#define OPTION_VAL_CONSUMER_ID NULL +#define OPTION_VAL_CANONICAL_ID NULL +#define OPTION_VAL_ALTERNATIVE_ID NULL +#define OPTION_VAL_RGB_O1_ID NULL +#define OPTION_VAL_PAL_ID NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_ID NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_ID NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_ID NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_ID NULL +#define OPTION_VAL_RAW_ID NULL +#define OPTION_VAL_CUSTOM_ID NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_ID NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_ID NULL +#define NESTOPIA_OVERCLOCK_LABEL_ID NULL +#define NESTOPIA_OVERCLOCK_INFO_0_ID NULL +#define OPTION_VAL_1X_ID NULL +#define OPTION_VAL_2X_ID NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_ID NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_ID NULL +#define OPTION_VAL_AUTO_ID NULL +#define OPTION_VAL_NTSC_ID NULL +#define OPTION_VAL_FAMICOM_ID NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_ID NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_ID NULL +#define NESTOPIA_OVERSCAN_V_LABEL_ID NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_ID NULL +#define NESTOPIA_OVERSCAN_H_LABEL_ID NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_ID NULL +#define NESTOPIA_ASPECT_LABEL_ID NULL +#define NESTOPIA_ASPECT_INFO_0_ID NULL +#define OPTION_VAL_4_3_ID NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_ID NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_ID NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_ID NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_ID NULL +#define OPTION_VAL_DENDY_ID NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_ID NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_ID NULL +#define OPTION_VAL_0X00_ID NULL +#define OPTION_VAL_0XFF_ID NULL +#define OPTION_VAL_RANDOM_ID NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_ID NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_ID NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_ID NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_ID NULL +#define OPTION_VAL_MOUSE_ID NULL +#define OPTION_VAL_POINTER_ID NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_ID NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_ID NULL +#define OPTION_VAL_LIGHTGUN_ID NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_ID NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_ID NULL +#define NESTOPIA_TURBO_PULSE_LABEL_ID NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_ID NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_ID NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_ID NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_ID NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_ID NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_ID NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_ID NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_ID NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_ID NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_ID NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_ID NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_ID NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_ID NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_ID NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_ID NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_ID NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_ID NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_ID NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_ID NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_ID NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_ID NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_ID NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_ID NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_ID NULL + +struct retro_core_option_v2_category option_cats_id[] = { + { + "video", + CATEGORY_VIDEO_LABEL_ID, + CATEGORY_VIDEO_INFO_0_ID + }, + { + "audio", + CATEGORY_AUDIO_LABEL_ID, + CATEGORY_AUDIO_INFO_0_ID + }, + { + "input", + CATEGORY_INPUT_LABEL_ID, + CATEGORY_INPUT_INFO_0_ID + }, + { + "hacks", + CATEGORY_HACKS_LABEL_ID, + CATEGORY_HACKS_INFO_0_ID + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_id[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_ID, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_ID, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_ID }, + { "svideo", OPTION_VAL_SVIDEO_ID }, + { "rgb", OPTION_VAL_RGB_ID }, + { "monochrome", OPTION_VAL_MONOCHROME_ID }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_ID, + NULL, + NESTOPIA_PALETTE_INFO_0_ID, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_ID }, + { "consumer", OPTION_VAL_CONSUMER_ID }, + { "canonical", OPTION_VAL_CANONICAL_ID }, + { "alternative", OPTION_VAL_ALTERNATIVE_ID }, + { "rgb", OPTION_VAL_RGB_O1_ID }, + { "pal", OPTION_VAL_PAL_ID }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_ID }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_ID }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_ID }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_ID }, + { "raw", OPTION_VAL_RAW_ID }, + { "custom", OPTION_VAL_CUSTOM_ID }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_ID, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_ID, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_ID, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_ID, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_ID }, + { "2x", OPTION_VAL_2X_ID }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_ID, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_ID, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_ID }, + { "ntsc", OPTION_VAL_NTSC_ID }, + { "famicom", OPTION_VAL_FAMICOM_ID }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_ID, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_ID, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_ID, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_ID, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_ID, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_ID, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_ID, + NULL, + NESTOPIA_ASPECT_INFO_0_ID, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_ID }, + { "ntsc", OPTION_VAL_NTSC_ID }, + { "pal", OPTION_VAL_PAL_ID }, + { "4:3", OPTION_VAL_4_3_ID }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_ID, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_ID, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_ID, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_ID, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_ID }, + { "ntsc", OPTION_VAL_NTSC_ID }, + { "pal", OPTION_VAL_PAL_ID }, + { "famicom", OPTION_VAL_FAMICOM_ID }, + { "dendy", OPTION_VAL_DENDY_ID }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_ID, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_ID, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_ID }, + { "0xFF", OPTION_VAL_0XFF_ID }, + { "random", OPTION_VAL_RANDOM_ID }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_ID, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_ID, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_ID, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_ID, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_ID }, + { "pointer", OPTION_VAL_POINTER_ID }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_ID, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_ID, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_ID }, + { "mouse", OPTION_VAL_MOUSE_ID }, + { "pointer", OPTION_VAL_POINTER_ID }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_ID, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_ID, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_ID, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_ID, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_ID, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_ID, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_ID, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_ID, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_ID, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_ID, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_ID, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_ID, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_ID, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_ID, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_ID, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_ID, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_ID, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_ID, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_ID, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_ID, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_ID, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_ID, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_ID, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_ID, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_ID, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_ID, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_ID, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_ID, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_IT NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_IT NULL +#define CATEGORY_HACKS_INFO_0_IT NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_IT NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_IT NULL +#define OPTION_VAL_COMPOSITE_IT NULL +#define OPTION_VAL_SVIDEO_IT NULL +#define OPTION_VAL_RGB_IT NULL +#define OPTION_VAL_MONOCHROME_IT NULL +#define NESTOPIA_PALETTE_LABEL_IT NULL +#define NESTOPIA_PALETTE_INFO_0_IT NULL +#define OPTION_VAL_CXA2025AS_IT NULL +#define OPTION_VAL_CONSUMER_IT NULL +#define OPTION_VAL_CANONICAL_IT NULL +#define OPTION_VAL_ALTERNATIVE_IT NULL +#define OPTION_VAL_RGB_O1_IT NULL +#define OPTION_VAL_PAL_IT NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_IT NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_IT NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_IT NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_IT NULL +#define OPTION_VAL_RAW_IT NULL +#define OPTION_VAL_CUSTOM_IT NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_IT NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_IT NULL +#define NESTOPIA_OVERCLOCK_LABEL_IT NULL +#define NESTOPIA_OVERCLOCK_INFO_0_IT NULL +#define OPTION_VAL_1X_IT NULL +#define OPTION_VAL_2X_IT NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_IT NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_IT NULL +#define OPTION_VAL_AUTO_IT NULL +#define OPTION_VAL_NTSC_IT NULL +#define OPTION_VAL_FAMICOM_IT NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_IT NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_IT NULL +#define NESTOPIA_OVERSCAN_V_LABEL_IT NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_IT NULL +#define NESTOPIA_OVERSCAN_H_LABEL_IT NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_IT NULL +#define NESTOPIA_ASPECT_LABEL_IT NULL +#define NESTOPIA_ASPECT_INFO_0_IT NULL +#define OPTION_VAL_4_3_IT NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_IT NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_IT NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_IT NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_IT NULL +#define OPTION_VAL_DENDY_IT NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_IT NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_IT NULL +#define OPTION_VAL_0X00_IT NULL +#define OPTION_VAL_0XFF_IT NULL +#define OPTION_VAL_RANDOM_IT NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_IT NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_IT NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_IT NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_IT NULL +#define OPTION_VAL_MOUSE_IT NULL +#define OPTION_VAL_POINTER_IT NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_IT NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_IT NULL +#define OPTION_VAL_LIGHTGUN_IT NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_IT NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_IT NULL +#define NESTOPIA_TURBO_PULSE_LABEL_IT NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_IT NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_IT NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_IT NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_IT NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_IT NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_IT NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_IT NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_IT NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_IT NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_IT NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_IT NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_IT NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_IT NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_IT NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_IT NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_IT NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_IT NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_IT NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_IT NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_IT NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_IT NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_IT NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_IT NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_IT NULL + +struct retro_core_option_v2_category option_cats_it[] = { + { + "video", + CATEGORY_VIDEO_LABEL_IT, + CATEGORY_VIDEO_INFO_0_IT + }, + { + "audio", + CATEGORY_AUDIO_LABEL_IT, + CATEGORY_AUDIO_INFO_0_IT + }, + { + "input", + CATEGORY_INPUT_LABEL_IT, + CATEGORY_INPUT_INFO_0_IT + }, + { + "hacks", + CATEGORY_HACKS_LABEL_IT, + CATEGORY_HACKS_INFO_0_IT + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_it[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_IT, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_IT, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_IT }, + { "svideo", OPTION_VAL_SVIDEO_IT }, + { "rgb", OPTION_VAL_RGB_IT }, + { "monochrome", OPTION_VAL_MONOCHROME_IT }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_IT, + NULL, + NESTOPIA_PALETTE_INFO_0_IT, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_IT }, + { "consumer", OPTION_VAL_CONSUMER_IT }, + { "canonical", OPTION_VAL_CANONICAL_IT }, + { "alternative", OPTION_VAL_ALTERNATIVE_IT }, + { "rgb", OPTION_VAL_RGB_O1_IT }, + { "pal", OPTION_VAL_PAL_IT }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_IT }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_IT }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_IT }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_IT }, + { "raw", OPTION_VAL_RAW_IT }, + { "custom", OPTION_VAL_CUSTOM_IT }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_IT, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_IT, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_IT, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_IT, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_IT }, + { "2x", OPTION_VAL_2X_IT }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_IT, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_IT, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_IT }, + { "ntsc", OPTION_VAL_NTSC_IT }, + { "famicom", OPTION_VAL_FAMICOM_IT }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_IT, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_IT, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_IT, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_IT, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_IT, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_IT, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_IT, + NULL, + NESTOPIA_ASPECT_INFO_0_IT, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_IT }, + { "ntsc", OPTION_VAL_NTSC_IT }, + { "pal", OPTION_VAL_PAL_IT }, + { "4:3", OPTION_VAL_4_3_IT }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_IT, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_IT, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_IT, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_IT, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_IT }, + { "ntsc", OPTION_VAL_NTSC_IT }, + { "pal", OPTION_VAL_PAL_IT }, + { "famicom", OPTION_VAL_FAMICOM_IT }, + { "dendy", OPTION_VAL_DENDY_IT }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_IT, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_IT, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_IT }, + { "0xFF", OPTION_VAL_0XFF_IT }, + { "random", OPTION_VAL_RANDOM_IT }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_IT, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_IT, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_IT, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_IT, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_IT }, + { "pointer", OPTION_VAL_POINTER_IT }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_IT, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_IT, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_IT }, + { "mouse", OPTION_VAL_MOUSE_IT }, + { "pointer", OPTION_VAL_POINTER_IT }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_IT, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_IT, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_IT, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_IT, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_IT, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_IT, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_IT, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_IT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_IT, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_IT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_IT, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_IT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_IT, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_IT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_IT, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_IT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_IT, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_IT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_IT, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_IT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_IT, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_IT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_IT, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_IT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_IT, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_IT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_IT, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_IT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_it = { + option_cats_it, + option_defs_it +}; + +/* RETRO_LANGUAGE_JA */ + +#define CATEGORY_VIDEO_LABEL_JA NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_JA NULL +#define CATEGORY_HACKS_INFO_0_JA NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_JA NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_JA NULL +#define OPTION_VAL_COMPOSITE_JA NULL +#define OPTION_VAL_SVIDEO_JA NULL +#define OPTION_VAL_RGB_JA NULL +#define OPTION_VAL_MONOCHROME_JA NULL +#define NESTOPIA_PALETTE_LABEL_JA NULL +#define NESTOPIA_PALETTE_INFO_0_JA NULL +#define OPTION_VAL_CXA2025AS_JA NULL +#define OPTION_VAL_CONSUMER_JA NULL +#define OPTION_VAL_CANONICAL_JA NULL +#define OPTION_VAL_ALTERNATIVE_JA NULL +#define OPTION_VAL_RGB_O1_JA NULL +#define OPTION_VAL_PAL_JA NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_JA NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_JA NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_JA NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_JA NULL +#define OPTION_VAL_RAW_JA NULL +#define OPTION_VAL_CUSTOM_JA NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_JA NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_JA NULL +#define NESTOPIA_OVERCLOCK_LABEL_JA NULL +#define NESTOPIA_OVERCLOCK_INFO_0_JA NULL +#define OPTION_VAL_1X_JA NULL +#define OPTION_VAL_2X_JA NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_JA NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_JA NULL +#define OPTION_VAL_AUTO_JA NULL +#define OPTION_VAL_NTSC_JA NULL +#define OPTION_VAL_FAMICOM_JA NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_JA NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_JA NULL +#define NESTOPIA_OVERSCAN_V_LABEL_JA NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_JA NULL +#define NESTOPIA_OVERSCAN_H_LABEL_JA NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_JA NULL +#define NESTOPIA_ASPECT_LABEL_JA NULL +#define NESTOPIA_ASPECT_INFO_0_JA NULL +#define OPTION_VAL_4_3_JA NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_JA NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_JA NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_JA NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_JA NULL +#define OPTION_VAL_DENDY_JA NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_JA NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_JA NULL +#define OPTION_VAL_0X00_JA NULL +#define OPTION_VAL_0XFF_JA NULL +#define OPTION_VAL_RANDOM_JA NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_JA NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_JA NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_JA NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_JA NULL +#define OPTION_VAL_MOUSE_JA NULL +#define OPTION_VAL_POINTER_JA NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_JA NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_JA NULL +#define OPTION_VAL_LIGHTGUN_JA NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_JA NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_JA NULL +#define NESTOPIA_TURBO_PULSE_LABEL_JA NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_JA NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_JA NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_JA NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_JA NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_JA NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_JA NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_JA NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_JA NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_JA NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_JA NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_JA NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_JA NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_JA NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_JA NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_JA NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_JA NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_JA NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_JA NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_JA NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_JA NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_JA NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_JA NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_JA NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_JA NULL + +struct retro_core_option_v2_category option_cats_ja[] = { + { + "video", + CATEGORY_VIDEO_LABEL_JA, + CATEGORY_VIDEO_INFO_0_JA + }, + { + "audio", + CATEGORY_AUDIO_LABEL_JA, + CATEGORY_AUDIO_INFO_0_JA + }, + { + "input", + CATEGORY_INPUT_LABEL_JA, + CATEGORY_INPUT_INFO_0_JA + }, + { + "hacks", + CATEGORY_HACKS_LABEL_JA, + CATEGORY_HACKS_INFO_0_JA + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_ja[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_JA, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_JA, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_JA }, + { "svideo", OPTION_VAL_SVIDEO_JA }, + { "rgb", OPTION_VAL_RGB_JA }, + { "monochrome", OPTION_VAL_MONOCHROME_JA }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_JA, + NULL, + NESTOPIA_PALETTE_INFO_0_JA, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_JA }, + { "consumer", OPTION_VAL_CONSUMER_JA }, + { "canonical", OPTION_VAL_CANONICAL_JA }, + { "alternative", OPTION_VAL_ALTERNATIVE_JA }, + { "rgb", OPTION_VAL_RGB_O1_JA }, + { "pal", OPTION_VAL_PAL_JA }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_JA }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_JA }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_JA }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_JA }, + { "raw", OPTION_VAL_RAW_JA }, + { "custom", OPTION_VAL_CUSTOM_JA }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_JA, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_JA, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_JA, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_JA, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_JA }, + { "2x", OPTION_VAL_2X_JA }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_JA, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_JA, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_JA }, + { "ntsc", OPTION_VAL_NTSC_JA }, + { "famicom", OPTION_VAL_FAMICOM_JA }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_JA, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_JA, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_JA, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_JA, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_JA, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_JA, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_JA, + NULL, + NESTOPIA_ASPECT_INFO_0_JA, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_JA }, + { "ntsc", OPTION_VAL_NTSC_JA }, + { "pal", OPTION_VAL_PAL_JA }, + { "4:3", OPTION_VAL_4_3_JA }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_JA, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_JA, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_JA, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_JA, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_JA }, + { "ntsc", OPTION_VAL_NTSC_JA }, + { "pal", OPTION_VAL_PAL_JA }, + { "famicom", OPTION_VAL_FAMICOM_JA }, + { "dendy", OPTION_VAL_DENDY_JA }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_JA, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_JA, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_JA }, + { "0xFF", OPTION_VAL_0XFF_JA }, + { "random", OPTION_VAL_RANDOM_JA }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_JA, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_JA, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_JA, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_JA, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_JA }, + { "pointer", OPTION_VAL_POINTER_JA }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_JA, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_JA, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_JA }, + { "mouse", OPTION_VAL_MOUSE_JA }, + { "pointer", OPTION_VAL_POINTER_JA }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_JA, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_JA, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_JA, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_JA, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_JA, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_JA, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_JA, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_JA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_JA, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_JA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_JA, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_JA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_JA, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_JA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_JA, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_JA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_JA, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_JA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_JA, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_JA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_JA, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_JA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_JA, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_JA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_JA, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_JA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_JA, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_JA, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_KO NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_KO NULL +#define CATEGORY_HACKS_INFO_0_KO NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_KO NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_KO NULL +#define OPTION_VAL_COMPOSITE_KO NULL +#define OPTION_VAL_SVIDEO_KO NULL +#define OPTION_VAL_RGB_KO NULL +#define OPTION_VAL_MONOCHROME_KO NULL +#define NESTOPIA_PALETTE_LABEL_KO NULL +#define NESTOPIA_PALETTE_INFO_0_KO NULL +#define OPTION_VAL_CXA2025AS_KO NULL +#define OPTION_VAL_CONSUMER_KO NULL +#define OPTION_VAL_CANONICAL_KO NULL +#define OPTION_VAL_ALTERNATIVE_KO NULL +#define OPTION_VAL_RGB_O1_KO NULL +#define OPTION_VAL_PAL_KO NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_KO NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_KO NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_KO NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_KO NULL +#define OPTION_VAL_RAW_KO NULL +#define OPTION_VAL_CUSTOM_KO NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_KO NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_KO NULL +#define NESTOPIA_OVERCLOCK_LABEL_KO NULL +#define NESTOPIA_OVERCLOCK_INFO_0_KO NULL +#define OPTION_VAL_1X_KO NULL +#define OPTION_VAL_2X_KO NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_KO NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_KO NULL +#define OPTION_VAL_AUTO_KO NULL +#define OPTION_VAL_NTSC_KO NULL +#define OPTION_VAL_FAMICOM_KO NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_KO NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_KO NULL +#define NESTOPIA_OVERSCAN_V_LABEL_KO NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_KO NULL +#define NESTOPIA_OVERSCAN_H_LABEL_KO NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_KO NULL +#define NESTOPIA_ASPECT_LABEL_KO NULL +#define NESTOPIA_ASPECT_INFO_0_KO NULL +#define OPTION_VAL_4_3_KO NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_KO NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_KO NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_KO NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_KO NULL +#define OPTION_VAL_DENDY_KO NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_KO NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_KO NULL +#define OPTION_VAL_0X00_KO NULL +#define OPTION_VAL_0XFF_KO NULL +#define OPTION_VAL_RANDOM_KO NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_KO NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_KO NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_KO NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_KO NULL +#define OPTION_VAL_MOUSE_KO NULL +#define OPTION_VAL_POINTER_KO NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_KO NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_KO NULL +#define OPTION_VAL_LIGHTGUN_KO NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_KO NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_KO NULL +#define NESTOPIA_TURBO_PULSE_LABEL_KO NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_KO NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_KO NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_KO NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_KO NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_KO NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_KO NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_KO NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_KO NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_KO NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_KO NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_KO NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_KO NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_KO NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_KO NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_KO NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_KO NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_KO NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_KO NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_KO NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_KO NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_KO NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_KO NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_KO NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_KO NULL + +struct retro_core_option_v2_category option_cats_ko[] = { + { + "video", + CATEGORY_VIDEO_LABEL_KO, + CATEGORY_VIDEO_INFO_0_KO + }, + { + "audio", + CATEGORY_AUDIO_LABEL_KO, + CATEGORY_AUDIO_INFO_0_KO + }, + { + "input", + CATEGORY_INPUT_LABEL_KO, + CATEGORY_INPUT_INFO_0_KO + }, + { + "hacks", + CATEGORY_HACKS_LABEL_KO, + CATEGORY_HACKS_INFO_0_KO + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_ko[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_KO, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_KO, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_KO }, + { "svideo", OPTION_VAL_SVIDEO_KO }, + { "rgb", OPTION_VAL_RGB_KO }, + { "monochrome", OPTION_VAL_MONOCHROME_KO }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_KO, + NULL, + NESTOPIA_PALETTE_INFO_0_KO, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_KO }, + { "consumer", OPTION_VAL_CONSUMER_KO }, + { "canonical", OPTION_VAL_CANONICAL_KO }, + { "alternative", OPTION_VAL_ALTERNATIVE_KO }, + { "rgb", OPTION_VAL_RGB_O1_KO }, + { "pal", OPTION_VAL_PAL_KO }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_KO }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_KO }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_KO }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_KO }, + { "raw", OPTION_VAL_RAW_KO }, + { "custom", OPTION_VAL_CUSTOM_KO }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_KO, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_KO, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_KO, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_KO, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_KO }, + { "2x", OPTION_VAL_2X_KO }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_KO, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_KO, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_KO }, + { "ntsc", OPTION_VAL_NTSC_KO }, + { "famicom", OPTION_VAL_FAMICOM_KO }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_KO, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_KO, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_KO, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_KO, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_KO, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_KO, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_KO, + NULL, + NESTOPIA_ASPECT_INFO_0_KO, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_KO }, + { "ntsc", OPTION_VAL_NTSC_KO }, + { "pal", OPTION_VAL_PAL_KO }, + { "4:3", OPTION_VAL_4_3_KO }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_KO, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_KO, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_KO, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_KO, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_KO }, + { "ntsc", OPTION_VAL_NTSC_KO }, + { "pal", OPTION_VAL_PAL_KO }, + { "famicom", OPTION_VAL_FAMICOM_KO }, + { "dendy", OPTION_VAL_DENDY_KO }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_KO, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_KO, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_KO }, + { "0xFF", OPTION_VAL_0XFF_KO }, + { "random", OPTION_VAL_RANDOM_KO }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_KO, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_KO, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_KO, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_KO, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_KO }, + { "pointer", OPTION_VAL_POINTER_KO }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_KO, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_KO, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_KO }, + { "mouse", OPTION_VAL_MOUSE_KO }, + { "pointer", OPTION_VAL_POINTER_KO }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_KO, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_KO, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_KO, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_KO, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_KO, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_KO, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_KO, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_KO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_KO, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_KO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_KO, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_KO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_KO, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_KO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_KO, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_KO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_KO, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_KO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_KO, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_KO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_KO, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_KO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_KO, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_KO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_KO, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_KO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_KO, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_KO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_MT NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_MT NULL +#define CATEGORY_HACKS_INFO_0_MT NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_MT NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_MT NULL +#define OPTION_VAL_COMPOSITE_MT NULL +#define OPTION_VAL_SVIDEO_MT NULL +#define OPTION_VAL_RGB_MT NULL +#define OPTION_VAL_MONOCHROME_MT NULL +#define NESTOPIA_PALETTE_LABEL_MT NULL +#define NESTOPIA_PALETTE_INFO_0_MT NULL +#define OPTION_VAL_CXA2025AS_MT NULL +#define OPTION_VAL_CONSUMER_MT NULL +#define OPTION_VAL_CANONICAL_MT NULL +#define OPTION_VAL_ALTERNATIVE_MT NULL +#define OPTION_VAL_RGB_O1_MT NULL +#define OPTION_VAL_PAL_MT NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_MT NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_MT NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_MT NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_MT NULL +#define OPTION_VAL_RAW_MT NULL +#define OPTION_VAL_CUSTOM_MT NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_MT NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_MT NULL +#define NESTOPIA_OVERCLOCK_LABEL_MT NULL +#define NESTOPIA_OVERCLOCK_INFO_0_MT NULL +#define OPTION_VAL_1X_MT NULL +#define OPTION_VAL_2X_MT NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_MT NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_MT NULL +#define OPTION_VAL_AUTO_MT NULL +#define OPTION_VAL_NTSC_MT NULL +#define OPTION_VAL_FAMICOM_MT NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_MT NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_MT NULL +#define NESTOPIA_OVERSCAN_V_LABEL_MT NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_MT NULL +#define NESTOPIA_OVERSCAN_H_LABEL_MT NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_MT NULL +#define NESTOPIA_ASPECT_LABEL_MT NULL +#define NESTOPIA_ASPECT_INFO_0_MT NULL +#define OPTION_VAL_4_3_MT NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_MT NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_MT NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_MT NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_MT NULL +#define OPTION_VAL_DENDY_MT NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_MT NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_MT NULL +#define OPTION_VAL_0X00_MT NULL +#define OPTION_VAL_0XFF_MT NULL +#define OPTION_VAL_RANDOM_MT NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_MT NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_MT NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_MT NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_MT NULL +#define OPTION_VAL_MOUSE_MT NULL +#define OPTION_VAL_POINTER_MT NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_MT NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_MT NULL +#define OPTION_VAL_LIGHTGUN_MT NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_MT NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_MT NULL +#define NESTOPIA_TURBO_PULSE_LABEL_MT NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_MT NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_MT NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_MT NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_MT NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_MT NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_MT NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_MT NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_MT NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_MT NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_MT NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_MT NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_MT NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_MT NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_MT NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_MT NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_MT NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_MT NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_MT NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_MT NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_MT NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_MT NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_MT NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_MT NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_MT NULL + +struct retro_core_option_v2_category option_cats_mt[] = { + { + "video", + CATEGORY_VIDEO_LABEL_MT, + CATEGORY_VIDEO_INFO_0_MT + }, + { + "audio", + CATEGORY_AUDIO_LABEL_MT, + CATEGORY_AUDIO_INFO_0_MT + }, + { + "input", + CATEGORY_INPUT_LABEL_MT, + CATEGORY_INPUT_INFO_0_MT + }, + { + "hacks", + CATEGORY_HACKS_LABEL_MT, + CATEGORY_HACKS_INFO_0_MT + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_mt[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_MT, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_MT, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_MT }, + { "svideo", OPTION_VAL_SVIDEO_MT }, + { "rgb", OPTION_VAL_RGB_MT }, + { "monochrome", OPTION_VAL_MONOCHROME_MT }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_MT, + NULL, + NESTOPIA_PALETTE_INFO_0_MT, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_MT }, + { "consumer", OPTION_VAL_CONSUMER_MT }, + { "canonical", OPTION_VAL_CANONICAL_MT }, + { "alternative", OPTION_VAL_ALTERNATIVE_MT }, + { "rgb", OPTION_VAL_RGB_O1_MT }, + { "pal", OPTION_VAL_PAL_MT }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_MT }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_MT }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_MT }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_MT }, + { "raw", OPTION_VAL_RAW_MT }, + { "custom", OPTION_VAL_CUSTOM_MT }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_MT, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_MT, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_MT, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_MT, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_MT }, + { "2x", OPTION_VAL_2X_MT }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_MT, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_MT, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_MT }, + { "ntsc", OPTION_VAL_NTSC_MT }, + { "famicom", OPTION_VAL_FAMICOM_MT }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_MT, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_MT, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_MT, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_MT, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_MT, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_MT, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_MT, + NULL, + NESTOPIA_ASPECT_INFO_0_MT, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_MT }, + { "ntsc", OPTION_VAL_NTSC_MT }, + { "pal", OPTION_VAL_PAL_MT }, + { "4:3", OPTION_VAL_4_3_MT }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_MT, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_MT, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_MT, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_MT, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_MT }, + { "ntsc", OPTION_VAL_NTSC_MT }, + { "pal", OPTION_VAL_PAL_MT }, + { "famicom", OPTION_VAL_FAMICOM_MT }, + { "dendy", OPTION_VAL_DENDY_MT }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_MT, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_MT, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_MT }, + { "0xFF", OPTION_VAL_0XFF_MT }, + { "random", OPTION_VAL_RANDOM_MT }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_MT, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_MT, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_MT, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_MT, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_MT }, + { "pointer", OPTION_VAL_POINTER_MT }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_MT, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_MT, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_MT }, + { "mouse", OPTION_VAL_MOUSE_MT }, + { "pointer", OPTION_VAL_POINTER_MT }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_MT, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_MT, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_MT, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_MT, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_MT, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_MT, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_MT, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_MT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_MT, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_MT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_MT, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_MT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_MT, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_MT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_MT, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_MT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_MT, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_MT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_MT, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_MT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_MT, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_MT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_MT, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_MT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_MT, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_MT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_MT, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_MT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_NL NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_NL NULL +#define CATEGORY_HACKS_INFO_0_NL NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_NL NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_NL NULL +#define OPTION_VAL_COMPOSITE_NL NULL +#define OPTION_VAL_SVIDEO_NL NULL +#define OPTION_VAL_RGB_NL NULL +#define OPTION_VAL_MONOCHROME_NL NULL +#define NESTOPIA_PALETTE_LABEL_NL NULL +#define NESTOPIA_PALETTE_INFO_0_NL NULL +#define OPTION_VAL_CXA2025AS_NL NULL +#define OPTION_VAL_CONSUMER_NL NULL +#define OPTION_VAL_CANONICAL_NL NULL +#define OPTION_VAL_ALTERNATIVE_NL NULL +#define OPTION_VAL_RGB_O1_NL NULL +#define OPTION_VAL_PAL_NL NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_NL NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_NL NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_NL NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_NL NULL +#define OPTION_VAL_RAW_NL NULL +#define OPTION_VAL_CUSTOM_NL NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_NL NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_NL NULL +#define NESTOPIA_OVERCLOCK_LABEL_NL NULL +#define NESTOPIA_OVERCLOCK_INFO_0_NL NULL +#define OPTION_VAL_1X_NL NULL +#define OPTION_VAL_2X_NL NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_NL NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_NL NULL +#define OPTION_VAL_AUTO_NL NULL +#define OPTION_VAL_NTSC_NL NULL +#define OPTION_VAL_FAMICOM_NL NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_NL NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_NL NULL +#define NESTOPIA_OVERSCAN_V_LABEL_NL NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_NL NULL +#define NESTOPIA_OVERSCAN_H_LABEL_NL NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_NL NULL +#define NESTOPIA_ASPECT_LABEL_NL NULL +#define NESTOPIA_ASPECT_INFO_0_NL NULL +#define OPTION_VAL_4_3_NL NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_NL NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_NL NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_NL NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_NL NULL +#define OPTION_VAL_DENDY_NL NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_NL NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_NL NULL +#define OPTION_VAL_0X00_NL NULL +#define OPTION_VAL_0XFF_NL NULL +#define OPTION_VAL_RANDOM_NL NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_NL NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_NL NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_NL NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_NL NULL +#define OPTION_VAL_MOUSE_NL NULL +#define OPTION_VAL_POINTER_NL NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_NL NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_NL NULL +#define OPTION_VAL_LIGHTGUN_NL NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_NL NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_NL NULL +#define NESTOPIA_TURBO_PULSE_LABEL_NL NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_NL NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_NL NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_NL NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_NL NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_NL NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_NL NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_NL NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_NL NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_NL NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_NL NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_NL NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_NL NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_NL NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_NL NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_NL NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_NL NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_NL NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_NL NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_NL NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_NL NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_NL NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_NL NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_NL NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_NL NULL + +struct retro_core_option_v2_category option_cats_nl[] = { + { + "video", + CATEGORY_VIDEO_LABEL_NL, + CATEGORY_VIDEO_INFO_0_NL + }, + { + "audio", + CATEGORY_AUDIO_LABEL_NL, + CATEGORY_AUDIO_INFO_0_NL + }, + { + "input", + CATEGORY_INPUT_LABEL_NL, + CATEGORY_INPUT_INFO_0_NL + }, + { + "hacks", + CATEGORY_HACKS_LABEL_NL, + CATEGORY_HACKS_INFO_0_NL + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_nl[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_NL, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_NL, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_NL }, + { "svideo", OPTION_VAL_SVIDEO_NL }, + { "rgb", OPTION_VAL_RGB_NL }, + { "monochrome", OPTION_VAL_MONOCHROME_NL }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_NL, + NULL, + NESTOPIA_PALETTE_INFO_0_NL, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_NL }, + { "consumer", OPTION_VAL_CONSUMER_NL }, + { "canonical", OPTION_VAL_CANONICAL_NL }, + { "alternative", OPTION_VAL_ALTERNATIVE_NL }, + { "rgb", OPTION_VAL_RGB_O1_NL }, + { "pal", OPTION_VAL_PAL_NL }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_NL }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_NL }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_NL }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_NL }, + { "raw", OPTION_VAL_RAW_NL }, + { "custom", OPTION_VAL_CUSTOM_NL }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_NL, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_NL, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_NL, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_NL, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_NL }, + { "2x", OPTION_VAL_2X_NL }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_NL, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_NL, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_NL }, + { "ntsc", OPTION_VAL_NTSC_NL }, + { "famicom", OPTION_VAL_FAMICOM_NL }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_NL, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_NL, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_NL, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_NL, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_NL, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_NL, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_NL, + NULL, + NESTOPIA_ASPECT_INFO_0_NL, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_NL }, + { "ntsc", OPTION_VAL_NTSC_NL }, + { "pal", OPTION_VAL_PAL_NL }, + { "4:3", OPTION_VAL_4_3_NL }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_NL, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_NL, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_NL, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_NL, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_NL }, + { "ntsc", OPTION_VAL_NTSC_NL }, + { "pal", OPTION_VAL_PAL_NL }, + { "famicom", OPTION_VAL_FAMICOM_NL }, + { "dendy", OPTION_VAL_DENDY_NL }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_NL, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_NL, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_NL }, + { "0xFF", OPTION_VAL_0XFF_NL }, + { "random", OPTION_VAL_RANDOM_NL }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_NL, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_NL, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_NL, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_NL, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_NL }, + { "pointer", OPTION_VAL_POINTER_NL }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_NL, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_NL, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_NL }, + { "mouse", OPTION_VAL_MOUSE_NL }, + { "pointer", OPTION_VAL_POINTER_NL }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_NL, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_NL, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_NL, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_NL, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_NL, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_NL, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_NL, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_NL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_NL, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_NL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_NL, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_NL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_NL, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_NL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_NL, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_NL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_NL, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_NL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_NL, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_NL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_NL, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_NL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_NL, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_NL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_NL, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_NL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_NL, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_NL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_OC NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_OC NULL +#define CATEGORY_HACKS_INFO_0_OC NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_OC NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_OC NULL +#define OPTION_VAL_COMPOSITE_OC NULL +#define OPTION_VAL_SVIDEO_OC NULL +#define OPTION_VAL_RGB_OC NULL +#define OPTION_VAL_MONOCHROME_OC NULL +#define NESTOPIA_PALETTE_LABEL_OC NULL +#define NESTOPIA_PALETTE_INFO_0_OC NULL +#define OPTION_VAL_CXA2025AS_OC NULL +#define OPTION_VAL_CONSUMER_OC NULL +#define OPTION_VAL_CANONICAL_OC NULL +#define OPTION_VAL_ALTERNATIVE_OC NULL +#define OPTION_VAL_RGB_O1_OC NULL +#define OPTION_VAL_PAL_OC NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_OC NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_OC NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_OC NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_OC NULL +#define OPTION_VAL_RAW_OC NULL +#define OPTION_VAL_CUSTOM_OC NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_OC NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_OC NULL +#define NESTOPIA_OVERCLOCK_LABEL_OC NULL +#define NESTOPIA_OVERCLOCK_INFO_0_OC NULL +#define OPTION_VAL_1X_OC NULL +#define OPTION_VAL_2X_OC NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_OC NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_OC NULL +#define OPTION_VAL_AUTO_OC NULL +#define OPTION_VAL_NTSC_OC NULL +#define OPTION_VAL_FAMICOM_OC NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_OC NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_OC NULL +#define NESTOPIA_OVERSCAN_V_LABEL_OC NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_OC NULL +#define NESTOPIA_OVERSCAN_H_LABEL_OC NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_OC NULL +#define NESTOPIA_ASPECT_LABEL_OC NULL +#define NESTOPIA_ASPECT_INFO_0_OC NULL +#define OPTION_VAL_4_3_OC NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_OC NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_OC NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_OC NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_OC NULL +#define OPTION_VAL_DENDY_OC NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_OC NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_OC NULL +#define OPTION_VAL_0X00_OC NULL +#define OPTION_VAL_0XFF_OC NULL +#define OPTION_VAL_RANDOM_OC NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_OC NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_OC NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_OC NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_OC NULL +#define OPTION_VAL_MOUSE_OC NULL +#define OPTION_VAL_POINTER_OC NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_OC NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_OC NULL +#define OPTION_VAL_LIGHTGUN_OC NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_OC NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_OC NULL +#define NESTOPIA_TURBO_PULSE_LABEL_OC NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_OC NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_OC NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_OC NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_OC NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_OC NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_OC NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_OC NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_OC NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_OC NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_OC NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_OC NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_OC NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_OC NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_OC NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_OC NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_OC NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_OC NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_OC NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_OC NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_OC NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_OC NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_OC NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_OC NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_OC NULL + +struct retro_core_option_v2_category option_cats_oc[] = { + { + "video", + CATEGORY_VIDEO_LABEL_OC, + CATEGORY_VIDEO_INFO_0_OC + }, + { + "audio", + CATEGORY_AUDIO_LABEL_OC, + CATEGORY_AUDIO_INFO_0_OC + }, + { + "input", + CATEGORY_INPUT_LABEL_OC, + CATEGORY_INPUT_INFO_0_OC + }, + { + "hacks", + CATEGORY_HACKS_LABEL_OC, + CATEGORY_HACKS_INFO_0_OC + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_oc[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_OC, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_OC, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_OC }, + { "svideo", OPTION_VAL_SVIDEO_OC }, + { "rgb", OPTION_VAL_RGB_OC }, + { "monochrome", OPTION_VAL_MONOCHROME_OC }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_OC, + NULL, + NESTOPIA_PALETTE_INFO_0_OC, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_OC }, + { "consumer", OPTION_VAL_CONSUMER_OC }, + { "canonical", OPTION_VAL_CANONICAL_OC }, + { "alternative", OPTION_VAL_ALTERNATIVE_OC }, + { "rgb", OPTION_VAL_RGB_O1_OC }, + { "pal", OPTION_VAL_PAL_OC }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_OC }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_OC }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_OC }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_OC }, + { "raw", OPTION_VAL_RAW_OC }, + { "custom", OPTION_VAL_CUSTOM_OC }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_OC, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_OC, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_OC, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_OC, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_OC }, + { "2x", OPTION_VAL_2X_OC }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_OC, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_OC, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_OC }, + { "ntsc", OPTION_VAL_NTSC_OC }, + { "famicom", OPTION_VAL_FAMICOM_OC }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_OC, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_OC, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_OC, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_OC, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_OC, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_OC, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_OC, + NULL, + NESTOPIA_ASPECT_INFO_0_OC, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_OC }, + { "ntsc", OPTION_VAL_NTSC_OC }, + { "pal", OPTION_VAL_PAL_OC }, + { "4:3", OPTION_VAL_4_3_OC }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_OC, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_OC, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_OC, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_OC, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_OC }, + { "ntsc", OPTION_VAL_NTSC_OC }, + { "pal", OPTION_VAL_PAL_OC }, + { "famicom", OPTION_VAL_FAMICOM_OC }, + { "dendy", OPTION_VAL_DENDY_OC }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_OC, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_OC, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_OC }, + { "0xFF", OPTION_VAL_0XFF_OC }, + { "random", OPTION_VAL_RANDOM_OC }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_OC, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_OC, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_OC, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_OC, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_OC }, + { "pointer", OPTION_VAL_POINTER_OC }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_OC, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_OC, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_OC }, + { "mouse", OPTION_VAL_MOUSE_OC }, + { "pointer", OPTION_VAL_POINTER_OC }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_OC, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_OC, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_OC, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_OC, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_OC, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_OC, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_OC, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_OC, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_OC, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_OC, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_OC, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_OC, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_OC, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_OC, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_OC, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_OC, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_OC, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_OC, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_OC, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_OC, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_OC, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_OC, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_OC, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_OC, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_OC, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_OC, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_OC, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_OC, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_PL NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_PL NULL +#define CATEGORY_HACKS_INFO_0_PL NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_PL NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_PL NULL +#define OPTION_VAL_COMPOSITE_PL NULL +#define OPTION_VAL_SVIDEO_PL NULL +#define OPTION_VAL_RGB_PL NULL +#define OPTION_VAL_MONOCHROME_PL NULL +#define NESTOPIA_PALETTE_LABEL_PL NULL +#define NESTOPIA_PALETTE_INFO_0_PL NULL +#define OPTION_VAL_CXA2025AS_PL NULL +#define OPTION_VAL_CONSUMER_PL NULL +#define OPTION_VAL_CANONICAL_PL NULL +#define OPTION_VAL_ALTERNATIVE_PL NULL +#define OPTION_VAL_RGB_O1_PL NULL +#define OPTION_VAL_PAL_PL NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_PL NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_PL NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_PL NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_PL NULL +#define OPTION_VAL_RAW_PL NULL +#define OPTION_VAL_CUSTOM_PL NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_PL NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_PL NULL +#define NESTOPIA_OVERCLOCK_LABEL_PL NULL +#define NESTOPIA_OVERCLOCK_INFO_0_PL NULL +#define OPTION_VAL_1X_PL NULL +#define OPTION_VAL_2X_PL NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_PL NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_PL NULL +#define OPTION_VAL_AUTO_PL NULL +#define OPTION_VAL_NTSC_PL NULL +#define OPTION_VAL_FAMICOM_PL NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_PL NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_PL NULL +#define NESTOPIA_OVERSCAN_V_LABEL_PL NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_PL NULL +#define NESTOPIA_OVERSCAN_H_LABEL_PL NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_PL NULL +#define NESTOPIA_ASPECT_LABEL_PL NULL +#define NESTOPIA_ASPECT_INFO_0_PL NULL +#define OPTION_VAL_4_3_PL NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_PL NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_PL NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_PL NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_PL NULL +#define OPTION_VAL_DENDY_PL NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_PL NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_PL NULL +#define OPTION_VAL_0X00_PL NULL +#define OPTION_VAL_0XFF_PL NULL +#define OPTION_VAL_RANDOM_PL NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_PL NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_PL NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_PL NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_PL NULL +#define OPTION_VAL_MOUSE_PL NULL +#define OPTION_VAL_POINTER_PL NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_PL NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_PL NULL +#define OPTION_VAL_LIGHTGUN_PL NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_PL NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_PL NULL +#define NESTOPIA_TURBO_PULSE_LABEL_PL NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_PL NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_PL NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_PL NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_PL NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_PL NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_PL NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_PL NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_PL NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_PL NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_PL NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_PL NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_PL NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_PL NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_PL NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_PL NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_PL NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_PL NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_PL NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_PL NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_PL NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_PL NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_PL NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_PL NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_PL NULL + +struct retro_core_option_v2_category option_cats_pl[] = { + { + "video", + CATEGORY_VIDEO_LABEL_PL, + CATEGORY_VIDEO_INFO_0_PL + }, + { + "audio", + CATEGORY_AUDIO_LABEL_PL, + CATEGORY_AUDIO_INFO_0_PL + }, + { + "input", + CATEGORY_INPUT_LABEL_PL, + CATEGORY_INPUT_INFO_0_PL + }, + { + "hacks", + CATEGORY_HACKS_LABEL_PL, + CATEGORY_HACKS_INFO_0_PL + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_pl[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_PL, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_PL, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_PL }, + { "svideo", OPTION_VAL_SVIDEO_PL }, + { "rgb", OPTION_VAL_RGB_PL }, + { "monochrome", OPTION_VAL_MONOCHROME_PL }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_PL, + NULL, + NESTOPIA_PALETTE_INFO_0_PL, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_PL }, + { "consumer", OPTION_VAL_CONSUMER_PL }, + { "canonical", OPTION_VAL_CANONICAL_PL }, + { "alternative", OPTION_VAL_ALTERNATIVE_PL }, + { "rgb", OPTION_VAL_RGB_O1_PL }, + { "pal", OPTION_VAL_PAL_PL }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_PL }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_PL }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_PL }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_PL }, + { "raw", OPTION_VAL_RAW_PL }, + { "custom", OPTION_VAL_CUSTOM_PL }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_PL, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_PL, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_PL, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_PL, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_PL }, + { "2x", OPTION_VAL_2X_PL }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_PL, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_PL, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_PL }, + { "ntsc", OPTION_VAL_NTSC_PL }, + { "famicom", OPTION_VAL_FAMICOM_PL }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_PL, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_PL, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_PL, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_PL, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_PL, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_PL, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_PL, + NULL, + NESTOPIA_ASPECT_INFO_0_PL, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_PL }, + { "ntsc", OPTION_VAL_NTSC_PL }, + { "pal", OPTION_VAL_PAL_PL }, + { "4:3", OPTION_VAL_4_3_PL }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_PL, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_PL, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_PL, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_PL, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_PL }, + { "ntsc", OPTION_VAL_NTSC_PL }, + { "pal", OPTION_VAL_PAL_PL }, + { "famicom", OPTION_VAL_FAMICOM_PL }, + { "dendy", OPTION_VAL_DENDY_PL }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_PL, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_PL, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_PL }, + { "0xFF", OPTION_VAL_0XFF_PL }, + { "random", OPTION_VAL_RANDOM_PL }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_PL, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_PL, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_PL, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_PL, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_PL }, + { "pointer", OPTION_VAL_POINTER_PL }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_PL, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_PL, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_PL }, + { "mouse", OPTION_VAL_MOUSE_PL }, + { "pointer", OPTION_VAL_POINTER_PL }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_PL, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_PL, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_PL, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_PL, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_PL, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_PL, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_PL, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_PL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_PL, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_PL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_PL, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_PL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_PL, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_PL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_PL, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_PL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_PL, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_PL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_PL, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_PL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_PL, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_PL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_PL, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_PL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_PL, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_PL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_PL, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_PL, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_PT_BR NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_PT_BR NULL +#define CATEGORY_HACKS_INFO_0_PT_BR NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_PT_BR NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_PT_BR NULL +#define OPTION_VAL_COMPOSITE_PT_BR NULL +#define OPTION_VAL_SVIDEO_PT_BR NULL +#define OPTION_VAL_RGB_PT_BR NULL +#define OPTION_VAL_MONOCHROME_PT_BR NULL +#define NESTOPIA_PALETTE_LABEL_PT_BR NULL +#define NESTOPIA_PALETTE_INFO_0_PT_BR NULL +#define OPTION_VAL_CXA2025AS_PT_BR NULL +#define OPTION_VAL_CONSUMER_PT_BR NULL +#define OPTION_VAL_CANONICAL_PT_BR NULL +#define OPTION_VAL_ALTERNATIVE_PT_BR NULL +#define OPTION_VAL_RGB_O1_PT_BR NULL +#define OPTION_VAL_PAL_PT_BR NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_PT_BR NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_PT_BR NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_PT_BR NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_PT_BR NULL +#define OPTION_VAL_RAW_PT_BR NULL +#define OPTION_VAL_CUSTOM_PT_BR NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_PT_BR NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_PT_BR NULL +#define NESTOPIA_OVERCLOCK_LABEL_PT_BR NULL +#define NESTOPIA_OVERCLOCK_INFO_0_PT_BR NULL +#define OPTION_VAL_1X_PT_BR NULL +#define OPTION_VAL_2X_PT_BR NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_PT_BR NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_PT_BR NULL +#define OPTION_VAL_AUTO_PT_BR NULL +#define OPTION_VAL_NTSC_PT_BR NULL +#define OPTION_VAL_FAMICOM_PT_BR NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_PT_BR NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_PT_BR NULL +#define NESTOPIA_OVERSCAN_V_LABEL_PT_BR NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_PT_BR NULL +#define NESTOPIA_OVERSCAN_H_LABEL_PT_BR NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_PT_BR NULL +#define NESTOPIA_ASPECT_LABEL_PT_BR NULL +#define NESTOPIA_ASPECT_INFO_0_PT_BR NULL +#define OPTION_VAL_4_3_PT_BR NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_PT_BR NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_PT_BR NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_PT_BR NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_PT_BR NULL +#define OPTION_VAL_DENDY_PT_BR NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_PT_BR NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_PT_BR NULL +#define OPTION_VAL_0X00_PT_BR NULL +#define OPTION_VAL_0XFF_PT_BR NULL +#define OPTION_VAL_RANDOM_PT_BR NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_PT_BR NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_PT_BR NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_PT_BR NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_PT_BR NULL +#define OPTION_VAL_MOUSE_PT_BR NULL +#define OPTION_VAL_POINTER_PT_BR NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_PT_BR NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_PT_BR NULL +#define OPTION_VAL_LIGHTGUN_PT_BR NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_PT_BR NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_PT_BR NULL +#define NESTOPIA_TURBO_PULSE_LABEL_PT_BR NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_PT_BR NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_PT_BR NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_PT_BR NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_PT_BR NULL + +struct retro_core_option_v2_category option_cats_pt_br[] = { + { + "video", + CATEGORY_VIDEO_LABEL_PT_BR, + CATEGORY_VIDEO_INFO_0_PT_BR + }, + { + "audio", + CATEGORY_AUDIO_LABEL_PT_BR, + CATEGORY_AUDIO_INFO_0_PT_BR + }, + { + "input", + CATEGORY_INPUT_LABEL_PT_BR, + CATEGORY_INPUT_INFO_0_PT_BR + }, + { + "hacks", + CATEGORY_HACKS_LABEL_PT_BR, + CATEGORY_HACKS_INFO_0_PT_BR + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_pt_br[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_PT_BR, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_PT_BR, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_PT_BR }, + { "svideo", OPTION_VAL_SVIDEO_PT_BR }, + { "rgb", OPTION_VAL_RGB_PT_BR }, + { "monochrome", OPTION_VAL_MONOCHROME_PT_BR }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_PT_BR, + NULL, + NESTOPIA_PALETTE_INFO_0_PT_BR, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_PT_BR }, + { "consumer", OPTION_VAL_CONSUMER_PT_BR }, + { "canonical", OPTION_VAL_CANONICAL_PT_BR }, + { "alternative", OPTION_VAL_ALTERNATIVE_PT_BR }, + { "rgb", OPTION_VAL_RGB_O1_PT_BR }, + { "pal", OPTION_VAL_PAL_PT_BR }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_PT_BR }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_PT_BR }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_PT_BR }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_PT_BR }, + { "raw", OPTION_VAL_RAW_PT_BR }, + { "custom", OPTION_VAL_CUSTOM_PT_BR }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_PT_BR, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_PT_BR, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_PT_BR, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_PT_BR, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_PT_BR }, + { "2x", OPTION_VAL_2X_PT_BR }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_PT_BR, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_PT_BR, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_PT_BR }, + { "ntsc", OPTION_VAL_NTSC_PT_BR }, + { "famicom", OPTION_VAL_FAMICOM_PT_BR }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_PT_BR, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_PT_BR, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_PT_BR, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_PT_BR, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_PT_BR, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_PT_BR, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_PT_BR, + NULL, + NESTOPIA_ASPECT_INFO_0_PT_BR, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_PT_BR }, + { "ntsc", OPTION_VAL_NTSC_PT_BR }, + { "pal", OPTION_VAL_PAL_PT_BR }, + { "4:3", OPTION_VAL_4_3_PT_BR }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_PT_BR, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_PT_BR, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_PT_BR, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_PT_BR, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_PT_BR }, + { "ntsc", OPTION_VAL_NTSC_PT_BR }, + { "pal", OPTION_VAL_PAL_PT_BR }, + { "famicom", OPTION_VAL_FAMICOM_PT_BR }, + { "dendy", OPTION_VAL_DENDY_PT_BR }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_PT_BR, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_PT_BR, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_PT_BR }, + { "0xFF", OPTION_VAL_0XFF_PT_BR }, + { "random", OPTION_VAL_RANDOM_PT_BR }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_PT_BR, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_PT_BR, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_PT_BR, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_PT_BR, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_PT_BR }, + { "pointer", OPTION_VAL_POINTER_PT_BR }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_PT_BR, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_PT_BR, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_PT_BR }, + { "mouse", OPTION_VAL_MOUSE_PT_BR }, + { "pointer", OPTION_VAL_POINTER_PT_BR }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_PT_BR, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_PT_BR, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_PT_BR, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_PT_BR, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_PT_BR, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_PT_BR, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_PT_BR, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_PT_BR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_PT_BR, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_PT_BR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_PT_BR, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_PT_BR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_PT_BR, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_PT_BR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_PT_BR, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_PT_BR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_PT_BR, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_PT_BR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_PT_BR, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_PT_BR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_PT_BR, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_PT_BR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_PT_BR, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_PT_BR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_PT_BR, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_PT_BR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_PT_BR, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_PT_BR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_PT_PT NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_PT_PT NULL +#define CATEGORY_HACKS_INFO_0_PT_PT NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_PT_PT NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_PT_PT NULL +#define OPTION_VAL_COMPOSITE_PT_PT NULL +#define OPTION_VAL_SVIDEO_PT_PT NULL +#define OPTION_VAL_RGB_PT_PT NULL +#define OPTION_VAL_MONOCHROME_PT_PT NULL +#define NESTOPIA_PALETTE_LABEL_PT_PT NULL +#define NESTOPIA_PALETTE_INFO_0_PT_PT NULL +#define OPTION_VAL_CXA2025AS_PT_PT NULL +#define OPTION_VAL_CONSUMER_PT_PT NULL +#define OPTION_VAL_CANONICAL_PT_PT NULL +#define OPTION_VAL_ALTERNATIVE_PT_PT NULL +#define OPTION_VAL_RGB_O1_PT_PT NULL +#define OPTION_VAL_PAL_PT_PT NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_PT_PT NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_PT_PT NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_PT_PT NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_PT_PT NULL +#define OPTION_VAL_RAW_PT_PT NULL +#define OPTION_VAL_CUSTOM_PT_PT NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_PT_PT NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_PT_PT NULL +#define NESTOPIA_OVERCLOCK_LABEL_PT_PT NULL +#define NESTOPIA_OVERCLOCK_INFO_0_PT_PT NULL +#define OPTION_VAL_1X_PT_PT NULL +#define OPTION_VAL_2X_PT_PT NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_PT_PT NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_PT_PT NULL +#define OPTION_VAL_AUTO_PT_PT NULL +#define OPTION_VAL_NTSC_PT_PT NULL +#define OPTION_VAL_FAMICOM_PT_PT NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_PT_PT NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_PT_PT NULL +#define NESTOPIA_OVERSCAN_V_LABEL_PT_PT NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_PT_PT NULL +#define NESTOPIA_OVERSCAN_H_LABEL_PT_PT NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_PT_PT NULL +#define NESTOPIA_ASPECT_LABEL_PT_PT NULL +#define NESTOPIA_ASPECT_INFO_0_PT_PT NULL +#define OPTION_VAL_4_3_PT_PT NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_PT_PT NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_PT_PT NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_PT_PT NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_PT_PT NULL +#define OPTION_VAL_DENDY_PT_PT NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_PT_PT NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_PT_PT NULL +#define OPTION_VAL_0X00_PT_PT NULL +#define OPTION_VAL_0XFF_PT_PT NULL +#define OPTION_VAL_RANDOM_PT_PT NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_PT_PT NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_PT_PT NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_PT_PT NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_PT_PT NULL +#define OPTION_VAL_MOUSE_PT_PT NULL +#define OPTION_VAL_POINTER_PT_PT NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_PT_PT NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_PT_PT NULL +#define OPTION_VAL_LIGHTGUN_PT_PT NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_PT_PT NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_PT_PT NULL +#define NESTOPIA_TURBO_PULSE_LABEL_PT_PT NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_PT_PT NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_PT_PT NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_PT_PT NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_PT_PT NULL + +struct retro_core_option_v2_category option_cats_pt_pt[] = { + { + "video", + CATEGORY_VIDEO_LABEL_PT_PT, + CATEGORY_VIDEO_INFO_0_PT_PT + }, + { + "audio", + CATEGORY_AUDIO_LABEL_PT_PT, + CATEGORY_AUDIO_INFO_0_PT_PT + }, + { + "input", + CATEGORY_INPUT_LABEL_PT_PT, + CATEGORY_INPUT_INFO_0_PT_PT + }, + { + "hacks", + CATEGORY_HACKS_LABEL_PT_PT, + CATEGORY_HACKS_INFO_0_PT_PT + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_pt_pt[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_PT_PT, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_PT_PT, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_PT_PT }, + { "svideo", OPTION_VAL_SVIDEO_PT_PT }, + { "rgb", OPTION_VAL_RGB_PT_PT }, + { "monochrome", OPTION_VAL_MONOCHROME_PT_PT }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_PT_PT, + NULL, + NESTOPIA_PALETTE_INFO_0_PT_PT, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_PT_PT }, + { "consumer", OPTION_VAL_CONSUMER_PT_PT }, + { "canonical", OPTION_VAL_CANONICAL_PT_PT }, + { "alternative", OPTION_VAL_ALTERNATIVE_PT_PT }, + { "rgb", OPTION_VAL_RGB_O1_PT_PT }, + { "pal", OPTION_VAL_PAL_PT_PT }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_PT_PT }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_PT_PT }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_PT_PT }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_PT_PT }, + { "raw", OPTION_VAL_RAW_PT_PT }, + { "custom", OPTION_VAL_CUSTOM_PT_PT }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_PT_PT, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_PT_PT, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_PT_PT, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_PT_PT, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_PT_PT }, + { "2x", OPTION_VAL_2X_PT_PT }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_PT_PT, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_PT_PT, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_PT_PT }, + { "ntsc", OPTION_VAL_NTSC_PT_PT }, + { "famicom", OPTION_VAL_FAMICOM_PT_PT }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_PT_PT, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_PT_PT, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_PT_PT, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_PT_PT, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_PT_PT, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_PT_PT, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_PT_PT, + NULL, + NESTOPIA_ASPECT_INFO_0_PT_PT, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_PT_PT }, + { "ntsc", OPTION_VAL_NTSC_PT_PT }, + { "pal", OPTION_VAL_PAL_PT_PT }, + { "4:3", OPTION_VAL_4_3_PT_PT }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_PT_PT, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_PT_PT, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_PT_PT, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_PT_PT, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_PT_PT }, + { "ntsc", OPTION_VAL_NTSC_PT_PT }, + { "pal", OPTION_VAL_PAL_PT_PT }, + { "famicom", OPTION_VAL_FAMICOM_PT_PT }, + { "dendy", OPTION_VAL_DENDY_PT_PT }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_PT_PT, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_PT_PT, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_PT_PT }, + { "0xFF", OPTION_VAL_0XFF_PT_PT }, + { "random", OPTION_VAL_RANDOM_PT_PT }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_PT_PT, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_PT_PT, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_PT_PT, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_PT_PT, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_PT_PT }, + { "pointer", OPTION_VAL_POINTER_PT_PT }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_PT_PT, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_PT_PT, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_PT_PT }, + { "mouse", OPTION_VAL_MOUSE_PT_PT }, + { "pointer", OPTION_VAL_POINTER_PT_PT }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_PT_PT, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_PT_PT, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_PT_PT, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_PT_PT, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_PT_PT, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_PT_PT, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_PT_PT, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_PT_PT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_PT_PT, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_PT_PT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_PT_PT, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_PT_PT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_PT_PT, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_PT_PT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_PT_PT, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_PT_PT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_PT_PT, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_PT_PT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_PT_PT, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_PT_PT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_PT_PT, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_PT_PT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_PT_PT, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_PT_PT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_PT_PT, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_PT_PT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_PT_PT, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_PT_PT, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_RO NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_RO NULL +#define CATEGORY_HACKS_INFO_0_RO NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_RO NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_RO NULL +#define OPTION_VAL_COMPOSITE_RO NULL +#define OPTION_VAL_SVIDEO_RO NULL +#define OPTION_VAL_RGB_RO NULL +#define OPTION_VAL_MONOCHROME_RO NULL +#define NESTOPIA_PALETTE_LABEL_RO NULL +#define NESTOPIA_PALETTE_INFO_0_RO NULL +#define OPTION_VAL_CXA2025AS_RO NULL +#define OPTION_VAL_CONSUMER_RO NULL +#define OPTION_VAL_CANONICAL_RO NULL +#define OPTION_VAL_ALTERNATIVE_RO NULL +#define OPTION_VAL_RGB_O1_RO NULL +#define OPTION_VAL_PAL_RO NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_RO NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_RO NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_RO NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_RO NULL +#define OPTION_VAL_RAW_RO NULL +#define OPTION_VAL_CUSTOM_RO NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_RO NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_RO NULL +#define NESTOPIA_OVERCLOCK_LABEL_RO NULL +#define NESTOPIA_OVERCLOCK_INFO_0_RO NULL +#define OPTION_VAL_1X_RO NULL +#define OPTION_VAL_2X_RO NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_RO NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_RO NULL +#define OPTION_VAL_AUTO_RO NULL +#define OPTION_VAL_NTSC_RO NULL +#define OPTION_VAL_FAMICOM_RO NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_RO NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_RO NULL +#define NESTOPIA_OVERSCAN_V_LABEL_RO NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_RO NULL +#define NESTOPIA_OVERSCAN_H_LABEL_RO NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_RO NULL +#define NESTOPIA_ASPECT_LABEL_RO NULL +#define NESTOPIA_ASPECT_INFO_0_RO NULL +#define OPTION_VAL_4_3_RO NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_RO NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_RO NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_RO NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_RO NULL +#define OPTION_VAL_DENDY_RO NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_RO NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_RO NULL +#define OPTION_VAL_0X00_RO NULL +#define OPTION_VAL_0XFF_RO NULL +#define OPTION_VAL_RANDOM_RO NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_RO NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_RO NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_RO NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_RO NULL +#define OPTION_VAL_MOUSE_RO NULL +#define OPTION_VAL_POINTER_RO NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_RO NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_RO NULL +#define OPTION_VAL_LIGHTGUN_RO NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_RO NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_RO NULL +#define NESTOPIA_TURBO_PULSE_LABEL_RO NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_RO NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_RO NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_RO NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_RO NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_RO NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_RO NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_RO NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_RO NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_RO NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_RO NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_RO NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_RO NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_RO NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_RO NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_RO NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_RO NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_RO NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_RO NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_RO NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_RO NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_RO NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_RO NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_RO NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_RO NULL + +struct retro_core_option_v2_category option_cats_ro[] = { + { + "video", + CATEGORY_VIDEO_LABEL_RO, + CATEGORY_VIDEO_INFO_0_RO + }, + { + "audio", + CATEGORY_AUDIO_LABEL_RO, + CATEGORY_AUDIO_INFO_0_RO + }, + { + "input", + CATEGORY_INPUT_LABEL_RO, + CATEGORY_INPUT_INFO_0_RO + }, + { + "hacks", + CATEGORY_HACKS_LABEL_RO, + CATEGORY_HACKS_INFO_0_RO + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_ro[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_RO, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_RO, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_RO }, + { "svideo", OPTION_VAL_SVIDEO_RO }, + { "rgb", OPTION_VAL_RGB_RO }, + { "monochrome", OPTION_VAL_MONOCHROME_RO }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_RO, + NULL, + NESTOPIA_PALETTE_INFO_0_RO, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_RO }, + { "consumer", OPTION_VAL_CONSUMER_RO }, + { "canonical", OPTION_VAL_CANONICAL_RO }, + { "alternative", OPTION_VAL_ALTERNATIVE_RO }, + { "rgb", OPTION_VAL_RGB_O1_RO }, + { "pal", OPTION_VAL_PAL_RO }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_RO }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_RO }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_RO }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_RO }, + { "raw", OPTION_VAL_RAW_RO }, + { "custom", OPTION_VAL_CUSTOM_RO }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_RO, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_RO, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_RO, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_RO, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_RO }, + { "2x", OPTION_VAL_2X_RO }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_RO, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_RO, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_RO }, + { "ntsc", OPTION_VAL_NTSC_RO }, + { "famicom", OPTION_VAL_FAMICOM_RO }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_RO, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_RO, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_RO, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_RO, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_RO, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_RO, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_RO, + NULL, + NESTOPIA_ASPECT_INFO_0_RO, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_RO }, + { "ntsc", OPTION_VAL_NTSC_RO }, + { "pal", OPTION_VAL_PAL_RO }, + { "4:3", OPTION_VAL_4_3_RO }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_RO, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_RO, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_RO, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_RO, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_RO }, + { "ntsc", OPTION_VAL_NTSC_RO }, + { "pal", OPTION_VAL_PAL_RO }, + { "famicom", OPTION_VAL_FAMICOM_RO }, + { "dendy", OPTION_VAL_DENDY_RO }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_RO, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_RO, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_RO }, + { "0xFF", OPTION_VAL_0XFF_RO }, + { "random", OPTION_VAL_RANDOM_RO }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_RO, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_RO, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_RO, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_RO, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_RO }, + { "pointer", OPTION_VAL_POINTER_RO }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_RO, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_RO, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_RO }, + { "mouse", OPTION_VAL_MOUSE_RO }, + { "pointer", OPTION_VAL_POINTER_RO }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_RO, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_RO, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_RO, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_RO, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_RO, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_RO, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_RO, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_RO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_RO, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_RO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_RO, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_RO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_RO, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_RO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_RO, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_RO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_RO, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_RO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_RO, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_RO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_RO, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_RO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_RO, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_RO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_RO, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_RO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_RO, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_RO, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_RU NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_RU NULL +#define CATEGORY_HACKS_INFO_0_RU NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_RU NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_RU NULL +#define OPTION_VAL_COMPOSITE_RU NULL +#define OPTION_VAL_SVIDEO_RU NULL +#define OPTION_VAL_RGB_RU NULL +#define OPTION_VAL_MONOCHROME_RU NULL +#define NESTOPIA_PALETTE_LABEL_RU NULL +#define NESTOPIA_PALETTE_INFO_0_RU NULL +#define OPTION_VAL_CXA2025AS_RU NULL +#define OPTION_VAL_CONSUMER_RU NULL +#define OPTION_VAL_CANONICAL_RU NULL +#define OPTION_VAL_ALTERNATIVE_RU NULL +#define OPTION_VAL_RGB_O1_RU NULL +#define OPTION_VAL_PAL_RU NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_RU NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_RU NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_RU NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_RU NULL +#define OPTION_VAL_RAW_RU NULL +#define OPTION_VAL_CUSTOM_RU NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_RU NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_RU NULL +#define NESTOPIA_OVERCLOCK_LABEL_RU NULL +#define NESTOPIA_OVERCLOCK_INFO_0_RU NULL +#define OPTION_VAL_1X_RU NULL +#define OPTION_VAL_2X_RU NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_RU NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_RU NULL +#define OPTION_VAL_AUTO_RU NULL +#define OPTION_VAL_NTSC_RU NULL +#define OPTION_VAL_FAMICOM_RU NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_RU NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_RU NULL +#define NESTOPIA_OVERSCAN_V_LABEL_RU NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_RU NULL +#define NESTOPIA_OVERSCAN_H_LABEL_RU NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_RU NULL +#define NESTOPIA_ASPECT_LABEL_RU NULL +#define NESTOPIA_ASPECT_INFO_0_RU NULL +#define OPTION_VAL_4_3_RU NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_RU NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_RU NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_RU NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_RU NULL +#define OPTION_VAL_DENDY_RU NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_RU NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_RU NULL +#define OPTION_VAL_0X00_RU NULL +#define OPTION_VAL_0XFF_RU NULL +#define OPTION_VAL_RANDOM_RU NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_RU NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_RU NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_RU NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_RU NULL +#define OPTION_VAL_MOUSE_RU NULL +#define OPTION_VAL_POINTER_RU NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_RU NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_RU NULL +#define OPTION_VAL_LIGHTGUN_RU NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_RU NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_RU NULL +#define NESTOPIA_TURBO_PULSE_LABEL_RU NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_RU NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_RU NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_RU NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_RU NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_RU NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_RU NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_RU NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_RU NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_RU NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_RU NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_RU NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_RU NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_RU NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_RU NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_RU NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_RU NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_RU NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_RU NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_RU NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_RU NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_RU NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_RU NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_RU NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_RU NULL + +struct retro_core_option_v2_category option_cats_ru[] = { + { + "video", + CATEGORY_VIDEO_LABEL_RU, + CATEGORY_VIDEO_INFO_0_RU + }, + { + "audio", + CATEGORY_AUDIO_LABEL_RU, + CATEGORY_AUDIO_INFO_0_RU + }, + { + "input", + CATEGORY_INPUT_LABEL_RU, + CATEGORY_INPUT_INFO_0_RU + }, + { + "hacks", + CATEGORY_HACKS_LABEL_RU, + CATEGORY_HACKS_INFO_0_RU + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_ru[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_RU, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_RU, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_RU }, + { "svideo", OPTION_VAL_SVIDEO_RU }, + { "rgb", OPTION_VAL_RGB_RU }, + { "monochrome", OPTION_VAL_MONOCHROME_RU }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_RU, + NULL, + NESTOPIA_PALETTE_INFO_0_RU, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_RU }, + { "consumer", OPTION_VAL_CONSUMER_RU }, + { "canonical", OPTION_VAL_CANONICAL_RU }, + { "alternative", OPTION_VAL_ALTERNATIVE_RU }, + { "rgb", OPTION_VAL_RGB_O1_RU }, + { "pal", OPTION_VAL_PAL_RU }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_RU }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_RU }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_RU }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_RU }, + { "raw", OPTION_VAL_RAW_RU }, + { "custom", OPTION_VAL_CUSTOM_RU }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_RU, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_RU, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_RU, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_RU, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_RU }, + { "2x", OPTION_VAL_2X_RU }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_RU, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_RU, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_RU }, + { "ntsc", OPTION_VAL_NTSC_RU }, + { "famicom", OPTION_VAL_FAMICOM_RU }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_RU, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_RU, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_RU, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_RU, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_RU, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_RU, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_RU, + NULL, + NESTOPIA_ASPECT_INFO_0_RU, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_RU }, + { "ntsc", OPTION_VAL_NTSC_RU }, + { "pal", OPTION_VAL_PAL_RU }, + { "4:3", OPTION_VAL_4_3_RU }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_RU, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_RU, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_RU, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_RU, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_RU }, + { "ntsc", OPTION_VAL_NTSC_RU }, + { "pal", OPTION_VAL_PAL_RU }, + { "famicom", OPTION_VAL_FAMICOM_RU }, + { "dendy", OPTION_VAL_DENDY_RU }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_RU, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_RU, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_RU }, + { "0xFF", OPTION_VAL_0XFF_RU }, + { "random", OPTION_VAL_RANDOM_RU }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_RU, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_RU, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_RU, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_RU, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_RU }, + { "pointer", OPTION_VAL_POINTER_RU }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_RU, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_RU, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_RU }, + { "mouse", OPTION_VAL_MOUSE_RU }, + { "pointer", OPTION_VAL_POINTER_RU }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_RU, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_RU, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_RU, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_RU, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_RU, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_RU, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_RU, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_RU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_RU, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_RU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_RU, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_RU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_RU, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_RU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_RU, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_RU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_RU, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_RU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_RU, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_RU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_RU, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_RU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_RU, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_RU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_RU, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_RU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_RU, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_RU, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_SI NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_SI NULL +#define CATEGORY_HACKS_INFO_0_SI NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_SI NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_SI NULL +#define OPTION_VAL_COMPOSITE_SI NULL +#define OPTION_VAL_SVIDEO_SI NULL +#define OPTION_VAL_RGB_SI NULL +#define OPTION_VAL_MONOCHROME_SI NULL +#define NESTOPIA_PALETTE_LABEL_SI NULL +#define NESTOPIA_PALETTE_INFO_0_SI NULL +#define OPTION_VAL_CXA2025AS_SI NULL +#define OPTION_VAL_CONSUMER_SI NULL +#define OPTION_VAL_CANONICAL_SI NULL +#define OPTION_VAL_ALTERNATIVE_SI NULL +#define OPTION_VAL_RGB_O1_SI NULL +#define OPTION_VAL_PAL_SI NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_SI NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_SI NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_SI NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_SI NULL +#define OPTION_VAL_RAW_SI NULL +#define OPTION_VAL_CUSTOM_SI NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_SI NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_SI NULL +#define NESTOPIA_OVERCLOCK_LABEL_SI NULL +#define NESTOPIA_OVERCLOCK_INFO_0_SI NULL +#define OPTION_VAL_1X_SI NULL +#define OPTION_VAL_2X_SI NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_SI NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_SI NULL +#define OPTION_VAL_AUTO_SI NULL +#define OPTION_VAL_NTSC_SI NULL +#define OPTION_VAL_FAMICOM_SI NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_SI NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_SI NULL +#define NESTOPIA_OVERSCAN_V_LABEL_SI NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_SI NULL +#define NESTOPIA_OVERSCAN_H_LABEL_SI NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_SI NULL +#define NESTOPIA_ASPECT_LABEL_SI NULL +#define NESTOPIA_ASPECT_INFO_0_SI NULL +#define OPTION_VAL_4_3_SI NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_SI NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_SI NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_SI NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_SI NULL +#define OPTION_VAL_DENDY_SI NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_SI NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_SI NULL +#define OPTION_VAL_0X00_SI NULL +#define OPTION_VAL_0XFF_SI NULL +#define OPTION_VAL_RANDOM_SI NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_SI NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_SI NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_SI NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_SI NULL +#define OPTION_VAL_MOUSE_SI NULL +#define OPTION_VAL_POINTER_SI NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_SI NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_SI NULL +#define OPTION_VAL_LIGHTGUN_SI NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_SI NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_SI NULL +#define NESTOPIA_TURBO_PULSE_LABEL_SI NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_SI NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_SI NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_SI NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_SI NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_SI NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_SI NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_SI NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_SI NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_SI NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_SI NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_SI NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_SI NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_SI NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_SI NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_SI NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_SI NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_SI NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_SI NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_SI NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_SI NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_SI NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_SI NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_SI NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_SI NULL + +struct retro_core_option_v2_category option_cats_si[] = { + { + "video", + CATEGORY_VIDEO_LABEL_SI, + CATEGORY_VIDEO_INFO_0_SI + }, + { + "audio", + CATEGORY_AUDIO_LABEL_SI, + CATEGORY_AUDIO_INFO_0_SI + }, + { + "input", + CATEGORY_INPUT_LABEL_SI, + CATEGORY_INPUT_INFO_0_SI + }, + { + "hacks", + CATEGORY_HACKS_LABEL_SI, + CATEGORY_HACKS_INFO_0_SI + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_si[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_SI, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_SI, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_SI }, + { "svideo", OPTION_VAL_SVIDEO_SI }, + { "rgb", OPTION_VAL_RGB_SI }, + { "monochrome", OPTION_VAL_MONOCHROME_SI }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_SI, + NULL, + NESTOPIA_PALETTE_INFO_0_SI, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_SI }, + { "consumer", OPTION_VAL_CONSUMER_SI }, + { "canonical", OPTION_VAL_CANONICAL_SI }, + { "alternative", OPTION_VAL_ALTERNATIVE_SI }, + { "rgb", OPTION_VAL_RGB_O1_SI }, + { "pal", OPTION_VAL_PAL_SI }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_SI }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_SI }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_SI }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_SI }, + { "raw", OPTION_VAL_RAW_SI }, + { "custom", OPTION_VAL_CUSTOM_SI }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_SI, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_SI, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_SI, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_SI, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_SI }, + { "2x", OPTION_VAL_2X_SI }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_SI, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_SI, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_SI }, + { "ntsc", OPTION_VAL_NTSC_SI }, + { "famicom", OPTION_VAL_FAMICOM_SI }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_SI, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_SI, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_SI, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_SI, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_SI, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_SI, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_SI, + NULL, + NESTOPIA_ASPECT_INFO_0_SI, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_SI }, + { "ntsc", OPTION_VAL_NTSC_SI }, + { "pal", OPTION_VAL_PAL_SI }, + { "4:3", OPTION_VAL_4_3_SI }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_SI, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_SI, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_SI, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_SI, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_SI }, + { "ntsc", OPTION_VAL_NTSC_SI }, + { "pal", OPTION_VAL_PAL_SI }, + { "famicom", OPTION_VAL_FAMICOM_SI }, + { "dendy", OPTION_VAL_DENDY_SI }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_SI, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_SI, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_SI }, + { "0xFF", OPTION_VAL_0XFF_SI }, + { "random", OPTION_VAL_RANDOM_SI }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_SI, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_SI, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_SI, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_SI, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_SI }, + { "pointer", OPTION_VAL_POINTER_SI }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_SI, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_SI, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_SI }, + { "mouse", OPTION_VAL_MOUSE_SI }, + { "pointer", OPTION_VAL_POINTER_SI }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_SI, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_SI, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_SI, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_SI, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_SI, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_SI, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_SI, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_SI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_SI, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_SI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_SI, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_SI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_SI, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_SI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_SI, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_SI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_SI, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_SI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_SI, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_SI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_SI, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_SI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_SI, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_SI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_SI, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_SI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_SI, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_SI, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_SK NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_SK NULL +#define CATEGORY_HACKS_INFO_0_SK NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_SK NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_SK NULL +#define OPTION_VAL_COMPOSITE_SK NULL +#define OPTION_VAL_SVIDEO_SK NULL +#define OPTION_VAL_RGB_SK NULL +#define OPTION_VAL_MONOCHROME_SK NULL +#define NESTOPIA_PALETTE_LABEL_SK NULL +#define NESTOPIA_PALETTE_INFO_0_SK NULL +#define OPTION_VAL_CXA2025AS_SK NULL +#define OPTION_VAL_CONSUMER_SK NULL +#define OPTION_VAL_CANONICAL_SK NULL +#define OPTION_VAL_ALTERNATIVE_SK NULL +#define OPTION_VAL_RGB_O1_SK NULL +#define OPTION_VAL_PAL_SK NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_SK NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_SK NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_SK NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_SK NULL +#define OPTION_VAL_RAW_SK NULL +#define OPTION_VAL_CUSTOM_SK NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_SK NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_SK NULL +#define NESTOPIA_OVERCLOCK_LABEL_SK NULL +#define NESTOPIA_OVERCLOCK_INFO_0_SK NULL +#define OPTION_VAL_1X_SK NULL +#define OPTION_VAL_2X_SK NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_SK NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_SK NULL +#define OPTION_VAL_AUTO_SK NULL +#define OPTION_VAL_NTSC_SK NULL +#define OPTION_VAL_FAMICOM_SK NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_SK NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_SK NULL +#define NESTOPIA_OVERSCAN_V_LABEL_SK NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_SK NULL +#define NESTOPIA_OVERSCAN_H_LABEL_SK NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_SK NULL +#define NESTOPIA_ASPECT_LABEL_SK NULL +#define NESTOPIA_ASPECT_INFO_0_SK NULL +#define OPTION_VAL_4_3_SK NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_SK NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_SK NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_SK NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_SK NULL +#define OPTION_VAL_DENDY_SK NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_SK NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_SK NULL +#define OPTION_VAL_0X00_SK NULL +#define OPTION_VAL_0XFF_SK NULL +#define OPTION_VAL_RANDOM_SK NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_SK NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_SK NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_SK NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_SK NULL +#define OPTION_VAL_MOUSE_SK NULL +#define OPTION_VAL_POINTER_SK NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_SK NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_SK NULL +#define OPTION_VAL_LIGHTGUN_SK NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_SK NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_SK NULL +#define NESTOPIA_TURBO_PULSE_LABEL_SK NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_SK NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_SK NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_SK NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_SK NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_SK NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_SK NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_SK NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_SK NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_SK NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_SK NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_SK NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_SK NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_SK NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_SK NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_SK NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_SK NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_SK NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_SK NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_SK NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_SK NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_SK NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_SK NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_SK NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_SK NULL + +struct retro_core_option_v2_category option_cats_sk[] = { + { + "video", + CATEGORY_VIDEO_LABEL_SK, + CATEGORY_VIDEO_INFO_0_SK + }, + { + "audio", + CATEGORY_AUDIO_LABEL_SK, + CATEGORY_AUDIO_INFO_0_SK + }, + { + "input", + CATEGORY_INPUT_LABEL_SK, + CATEGORY_INPUT_INFO_0_SK + }, + { + "hacks", + CATEGORY_HACKS_LABEL_SK, + CATEGORY_HACKS_INFO_0_SK + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_sk[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_SK, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_SK, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_SK }, + { "svideo", OPTION_VAL_SVIDEO_SK }, + { "rgb", OPTION_VAL_RGB_SK }, + { "monochrome", OPTION_VAL_MONOCHROME_SK }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_SK, + NULL, + NESTOPIA_PALETTE_INFO_0_SK, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_SK }, + { "consumer", OPTION_VAL_CONSUMER_SK }, + { "canonical", OPTION_VAL_CANONICAL_SK }, + { "alternative", OPTION_VAL_ALTERNATIVE_SK }, + { "rgb", OPTION_VAL_RGB_O1_SK }, + { "pal", OPTION_VAL_PAL_SK }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_SK }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_SK }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_SK }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_SK }, + { "raw", OPTION_VAL_RAW_SK }, + { "custom", OPTION_VAL_CUSTOM_SK }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_SK, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_SK, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_SK, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_SK, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_SK }, + { "2x", OPTION_VAL_2X_SK }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_SK, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_SK, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_SK }, + { "ntsc", OPTION_VAL_NTSC_SK }, + { "famicom", OPTION_VAL_FAMICOM_SK }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_SK, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_SK, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_SK, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_SK, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_SK, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_SK, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_SK, + NULL, + NESTOPIA_ASPECT_INFO_0_SK, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_SK }, + { "ntsc", OPTION_VAL_NTSC_SK }, + { "pal", OPTION_VAL_PAL_SK }, + { "4:3", OPTION_VAL_4_3_SK }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_SK, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_SK, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_SK, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_SK, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_SK }, + { "ntsc", OPTION_VAL_NTSC_SK }, + { "pal", OPTION_VAL_PAL_SK }, + { "famicom", OPTION_VAL_FAMICOM_SK }, + { "dendy", OPTION_VAL_DENDY_SK }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_SK, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_SK, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_SK }, + { "0xFF", OPTION_VAL_0XFF_SK }, + { "random", OPTION_VAL_RANDOM_SK }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_SK, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_SK, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_SK, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_SK, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_SK }, + { "pointer", OPTION_VAL_POINTER_SK }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_SK, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_SK, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_SK }, + { "mouse", OPTION_VAL_MOUSE_SK }, + { "pointer", OPTION_VAL_POINTER_SK }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_SK, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_SK, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_SK, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_SK, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_SK, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_SK, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_SK, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_SK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_SK, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_SK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_SK, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_SK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_SK, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_SK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_SK, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_SK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_SK, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_SK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_SK, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_SK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_SK, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_SK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_SK, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_SK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_SK, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_SK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_SK, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_SK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_SR NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_SR NULL +#define CATEGORY_HACKS_INFO_0_SR NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_SR NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_SR NULL +#define OPTION_VAL_COMPOSITE_SR NULL +#define OPTION_VAL_SVIDEO_SR NULL +#define OPTION_VAL_RGB_SR NULL +#define OPTION_VAL_MONOCHROME_SR NULL +#define NESTOPIA_PALETTE_LABEL_SR NULL +#define NESTOPIA_PALETTE_INFO_0_SR NULL +#define OPTION_VAL_CXA2025AS_SR NULL +#define OPTION_VAL_CONSUMER_SR NULL +#define OPTION_VAL_CANONICAL_SR NULL +#define OPTION_VAL_ALTERNATIVE_SR NULL +#define OPTION_VAL_RGB_O1_SR NULL +#define OPTION_VAL_PAL_SR NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_SR NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_SR NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_SR NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_SR NULL +#define OPTION_VAL_RAW_SR NULL +#define OPTION_VAL_CUSTOM_SR NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_SR NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_SR NULL +#define NESTOPIA_OVERCLOCK_LABEL_SR NULL +#define NESTOPIA_OVERCLOCK_INFO_0_SR NULL +#define OPTION_VAL_1X_SR NULL +#define OPTION_VAL_2X_SR NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_SR NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_SR NULL +#define OPTION_VAL_AUTO_SR NULL +#define OPTION_VAL_NTSC_SR NULL +#define OPTION_VAL_FAMICOM_SR NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_SR NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_SR NULL +#define NESTOPIA_OVERSCAN_V_LABEL_SR NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_SR NULL +#define NESTOPIA_OVERSCAN_H_LABEL_SR NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_SR NULL +#define NESTOPIA_ASPECT_LABEL_SR NULL +#define NESTOPIA_ASPECT_INFO_0_SR NULL +#define OPTION_VAL_4_3_SR NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_SR NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_SR NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_SR NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_SR NULL +#define OPTION_VAL_DENDY_SR NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_SR NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_SR NULL +#define OPTION_VAL_0X00_SR NULL +#define OPTION_VAL_0XFF_SR NULL +#define OPTION_VAL_RANDOM_SR NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_SR NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_SR NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_SR NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_SR NULL +#define OPTION_VAL_MOUSE_SR NULL +#define OPTION_VAL_POINTER_SR NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_SR NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_SR NULL +#define OPTION_VAL_LIGHTGUN_SR NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_SR NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_SR NULL +#define NESTOPIA_TURBO_PULSE_LABEL_SR NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_SR NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_SR NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_SR NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_SR NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_SR NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_SR NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_SR NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_SR NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_SR NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_SR NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_SR NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_SR NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_SR NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_SR NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_SR NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_SR NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_SR NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_SR NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_SR NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_SR NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_SR NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_SR NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_SR NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_SR NULL + +struct retro_core_option_v2_category option_cats_sr[] = { + { + "video", + CATEGORY_VIDEO_LABEL_SR, + CATEGORY_VIDEO_INFO_0_SR + }, + { + "audio", + CATEGORY_AUDIO_LABEL_SR, + CATEGORY_AUDIO_INFO_0_SR + }, + { + "input", + CATEGORY_INPUT_LABEL_SR, + CATEGORY_INPUT_INFO_0_SR + }, + { + "hacks", + CATEGORY_HACKS_LABEL_SR, + CATEGORY_HACKS_INFO_0_SR + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_sr[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_SR, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_SR, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_SR }, + { "svideo", OPTION_VAL_SVIDEO_SR }, + { "rgb", OPTION_VAL_RGB_SR }, + { "monochrome", OPTION_VAL_MONOCHROME_SR }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_SR, + NULL, + NESTOPIA_PALETTE_INFO_0_SR, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_SR }, + { "consumer", OPTION_VAL_CONSUMER_SR }, + { "canonical", OPTION_VAL_CANONICAL_SR }, + { "alternative", OPTION_VAL_ALTERNATIVE_SR }, + { "rgb", OPTION_VAL_RGB_O1_SR }, + { "pal", OPTION_VAL_PAL_SR }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_SR }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_SR }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_SR }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_SR }, + { "raw", OPTION_VAL_RAW_SR }, + { "custom", OPTION_VAL_CUSTOM_SR }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_SR, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_SR, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_SR, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_SR, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_SR }, + { "2x", OPTION_VAL_2X_SR }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_SR, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_SR, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_SR }, + { "ntsc", OPTION_VAL_NTSC_SR }, + { "famicom", OPTION_VAL_FAMICOM_SR }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_SR, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_SR, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_SR, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_SR, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_SR, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_SR, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_SR, + NULL, + NESTOPIA_ASPECT_INFO_0_SR, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_SR }, + { "ntsc", OPTION_VAL_NTSC_SR }, + { "pal", OPTION_VAL_PAL_SR }, + { "4:3", OPTION_VAL_4_3_SR }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_SR, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_SR, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_SR, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_SR, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_SR }, + { "ntsc", OPTION_VAL_NTSC_SR }, + { "pal", OPTION_VAL_PAL_SR }, + { "famicom", OPTION_VAL_FAMICOM_SR }, + { "dendy", OPTION_VAL_DENDY_SR }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_SR, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_SR, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_SR }, + { "0xFF", OPTION_VAL_0XFF_SR }, + { "random", OPTION_VAL_RANDOM_SR }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_SR, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_SR, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_SR, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_SR, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_SR }, + { "pointer", OPTION_VAL_POINTER_SR }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_SR, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_SR, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_SR }, + { "mouse", OPTION_VAL_MOUSE_SR }, + { "pointer", OPTION_VAL_POINTER_SR }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_SR, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_SR, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_SR, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_SR, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_SR, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_SR, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_SR, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_SR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_SR, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_SR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_SR, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_SR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_SR, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_SR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_SR, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_SR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_SR, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_SR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_SR, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_SR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_SR, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_SR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_SR, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_SR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_SR, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_SR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_SR, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_SR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_SV NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_SV NULL +#define CATEGORY_HACKS_INFO_0_SV NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_SV NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_SV NULL +#define OPTION_VAL_COMPOSITE_SV NULL +#define OPTION_VAL_SVIDEO_SV NULL +#define OPTION_VAL_RGB_SV NULL +#define OPTION_VAL_MONOCHROME_SV NULL +#define NESTOPIA_PALETTE_LABEL_SV NULL +#define NESTOPIA_PALETTE_INFO_0_SV NULL +#define OPTION_VAL_CXA2025AS_SV NULL +#define OPTION_VAL_CONSUMER_SV NULL +#define OPTION_VAL_CANONICAL_SV NULL +#define OPTION_VAL_ALTERNATIVE_SV NULL +#define OPTION_VAL_RGB_O1_SV NULL +#define OPTION_VAL_PAL_SV NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_SV NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_SV NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_SV NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_SV NULL +#define OPTION_VAL_RAW_SV NULL +#define OPTION_VAL_CUSTOM_SV NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_SV NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_SV NULL +#define NESTOPIA_OVERCLOCK_LABEL_SV NULL +#define NESTOPIA_OVERCLOCK_INFO_0_SV NULL +#define OPTION_VAL_1X_SV NULL +#define OPTION_VAL_2X_SV NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_SV NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_SV NULL +#define OPTION_VAL_AUTO_SV NULL +#define OPTION_VAL_NTSC_SV NULL +#define OPTION_VAL_FAMICOM_SV NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_SV NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_SV NULL +#define NESTOPIA_OVERSCAN_V_LABEL_SV NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_SV NULL +#define NESTOPIA_OVERSCAN_H_LABEL_SV NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_SV NULL +#define NESTOPIA_ASPECT_LABEL_SV NULL +#define NESTOPIA_ASPECT_INFO_0_SV NULL +#define OPTION_VAL_4_3_SV NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_SV NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_SV NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_SV NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_SV NULL +#define OPTION_VAL_DENDY_SV NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_SV NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_SV NULL +#define OPTION_VAL_0X00_SV NULL +#define OPTION_VAL_0XFF_SV NULL +#define OPTION_VAL_RANDOM_SV NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_SV NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_SV NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_SV NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_SV NULL +#define OPTION_VAL_MOUSE_SV NULL +#define OPTION_VAL_POINTER_SV NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_SV NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_SV NULL +#define OPTION_VAL_LIGHTGUN_SV NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_SV NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_SV NULL +#define NESTOPIA_TURBO_PULSE_LABEL_SV NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_SV NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_SV NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_SV NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_SV NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_SV NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_SV NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_SV NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_SV NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_SV NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_SV NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_SV NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_SV NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_SV NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_SV NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_SV NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_SV NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_SV NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_SV NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_SV NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_SV NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_SV NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_SV NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_SV NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_SV NULL + +struct retro_core_option_v2_category option_cats_sv[] = { + { + "video", + CATEGORY_VIDEO_LABEL_SV, + CATEGORY_VIDEO_INFO_0_SV + }, + { + "audio", + CATEGORY_AUDIO_LABEL_SV, + CATEGORY_AUDIO_INFO_0_SV + }, + { + "input", + CATEGORY_INPUT_LABEL_SV, + CATEGORY_INPUT_INFO_0_SV + }, + { + "hacks", + CATEGORY_HACKS_LABEL_SV, + CATEGORY_HACKS_INFO_0_SV + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_sv[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_SV, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_SV, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_SV }, + { "svideo", OPTION_VAL_SVIDEO_SV }, + { "rgb", OPTION_VAL_RGB_SV }, + { "monochrome", OPTION_VAL_MONOCHROME_SV }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_SV, + NULL, + NESTOPIA_PALETTE_INFO_0_SV, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_SV }, + { "consumer", OPTION_VAL_CONSUMER_SV }, + { "canonical", OPTION_VAL_CANONICAL_SV }, + { "alternative", OPTION_VAL_ALTERNATIVE_SV }, + { "rgb", OPTION_VAL_RGB_O1_SV }, + { "pal", OPTION_VAL_PAL_SV }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_SV }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_SV }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_SV }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_SV }, + { "raw", OPTION_VAL_RAW_SV }, + { "custom", OPTION_VAL_CUSTOM_SV }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_SV, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_SV, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_SV, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_SV, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_SV }, + { "2x", OPTION_VAL_2X_SV }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_SV, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_SV, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_SV }, + { "ntsc", OPTION_VAL_NTSC_SV }, + { "famicom", OPTION_VAL_FAMICOM_SV }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_SV, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_SV, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_SV, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_SV, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_SV, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_SV, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_SV, + NULL, + NESTOPIA_ASPECT_INFO_0_SV, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_SV }, + { "ntsc", OPTION_VAL_NTSC_SV }, + { "pal", OPTION_VAL_PAL_SV }, + { "4:3", OPTION_VAL_4_3_SV }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_SV, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_SV, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_SV, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_SV, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_SV }, + { "ntsc", OPTION_VAL_NTSC_SV }, + { "pal", OPTION_VAL_PAL_SV }, + { "famicom", OPTION_VAL_FAMICOM_SV }, + { "dendy", OPTION_VAL_DENDY_SV }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_SV, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_SV, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_SV }, + { "0xFF", OPTION_VAL_0XFF_SV }, + { "random", OPTION_VAL_RANDOM_SV }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_SV, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_SV, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_SV, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_SV, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_SV }, + { "pointer", OPTION_VAL_POINTER_SV }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_SV, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_SV, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_SV }, + { "mouse", OPTION_VAL_MOUSE_SV }, + { "pointer", OPTION_VAL_POINTER_SV }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_SV, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_SV, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_SV, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_SV, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_SV, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_SV, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_SV, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_SV, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_SV, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_SV, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_SV, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_SV, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_SV, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_SV, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_SV, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_SV, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_SV, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_SV, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_SV, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_SV, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_SV, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_SV, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_SV, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_SV, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_SV, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_SV, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_SV, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_SV, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_TR NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_TR NULL +#define CATEGORY_HACKS_INFO_0_TR NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_TR "Blargg NTSC Filtresi" +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_TR "Blargg NTSC filtrelerini etkinleştirin." +#define OPTION_VAL_COMPOSITE_TR "Kompozit Video" +#define OPTION_VAL_SVIDEO_TR NULL +#define OPTION_VAL_RGB_TR NULL +#define OPTION_VAL_MONOCHROME_TR "Tek renkli" +#define NESTOPIA_PALETTE_LABEL_TR "Palet" +#define NESTOPIA_PALETTE_INFO_0_TR "Hangi renk paletinin kullanılacağını seçin." +#define OPTION_VAL_CXA2025AS_TR NULL +#define OPTION_VAL_CONSUMER_TR NULL +#define OPTION_VAL_CANONICAL_TR "Standart" +#define OPTION_VAL_ALTERNATIVE_TR "Alternatif" +#define OPTION_VAL_RGB_O1_TR NULL +#define OPTION_VAL_PAL_TR NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_TR "Doğrudan Kompozit FBx" +#define OPTION_VAL_PVM_STYLE_D93_FBX_TR NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_TR "NTSC donanım FBx" +#define OPTION_VAL_NES_CLASSIC_FBX_FS_TR "NES Klasik FBx FS" +#define OPTION_VAL_RAW_TR NULL +#define OPTION_VAL_CUSTOM_TR "Özel" +#define NESTOPIA_NOSPRITELIMIT_LABEL_TR "Sprite Limitini Kaldır" +#define NESTOPIA_NOSPRITELIMIT_INFO_0_TR "Tarama başına 8 sprite donanım sınırını kaldır." +#define NESTOPIA_OVERCLOCK_LABEL_TR "CPU Hızı (Hız aşırtma)" +#define NESTOPIA_OVERCLOCK_INFO_0_TR "Öykünülmüş CPU'ya hız aşırtma uygula." +#define OPTION_VAL_1X_TR NULL +#define OPTION_VAL_2X_TR NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_TR "4 Oyuncu Adaptörü" +#define NESTOPIA_SELECT_ADAPTER_INFO_0_TR "Gerekirse manuel olarak bir 4 Oyuncu Adaptörü seçin. Bazı oyunlar bağdaştırıcıyı NstDatabase.xml veritabanıyla doğru bir şekilde tanıyamayabilir, bu seçenek bunu düzeltmeye yardımcı olur." +#define OPTION_VAL_AUTO_TR "Otomatik" +#define OPTION_VAL_NTSC_TR NULL +#define OPTION_VAL_FAMICOM_TR NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_TR "FDS Otomatik Ekleme" +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_TR "Yeniden başlatmada ilk FDS diskini otomatik olarak yerleştirir." +#define NESTOPIA_OVERSCAN_V_LABEL_TR "Aşırı Taşmayı Maskele (Dikey)" +#define NESTOPIA_OVERSCAN_V_INFO_0_TR "Standart tanımlı bir televizyon ekranının kenarı çevresinde çerçeve tarafından gizlenmiş olabilecek potansiyel olarak rastgele aksaklık video çıkışını maskeleyin (dikey olarak)." +#define NESTOPIA_OVERSCAN_H_LABEL_TR "Aşırı Taşmayı Maskele (Yatay)" +#define NESTOPIA_OVERSCAN_H_INFO_0_TR "Standart tanımlı bir televizyon ekranının kenarı çevresinde çerçeve tarafından gizlenmiş olabilecek rastgele aksaklıklı video çıkışını maskeleyin (yatay olarak)." +#define NESTOPIA_ASPECT_LABEL_TR "Tercih Edilen En Boy Oranı" +#define NESTOPIA_ASPECT_INFO_0_TR "Tercih edilen en boy oranını seçin. RetroArch'ın en boy oranı, Video ayarlarında 'Çekirdek Tarafından Sağlanan' olarak ayarlanmalıdır. 'Otomatik', en-boy oranı otomatik belirlemesi için NstDatabase.xml veritabanını kullanır. Eğer mevcut bir veritabanı yoksa, 'Otomatik' için NTSC'ye varsayılan olacaktır." +#define OPTION_VAL_4_3_TR NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_TR "Game Genie Ses Bozulma" +#define NESTOPIA_GENIE_DISTORTION_INFO_0_TR "Game Genie hile cihazı yanlışlıkla oyunlarda ses bozulmalarına neden olabilir. Bunu etkinleştirerek, oyun sesine ekleyeceği bozulmayı taklit edebilirsiniz." +#define NESTOPIA_FAVORED_SYSTEM_LABEL_TR "Sistem Bölgesi" +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_TR "Sistemin hangi bölgeden olacağını seçin. 'Otomatik' bölgenin otomatik belirlenmesi için NstDatabase.xml veritabanı dosyasını kullanır. Eğer mevcut bir veritabanı yoksa, 'Otomatik' için NTSC'ye varsayılan olacaktır." +#define OPTION_VAL_DENDY_TR NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_TR "Açılıştaki RAM Durumu" +#define NESTOPIA_RAM_POWER_STATE_INFO_0_TR NULL +#define OPTION_VAL_0X00_TR NULL +#define OPTION_VAL_0XFF_TR NULL +#define OPTION_VAL_RANDOM_TR "Rastgele" +#define NESTOPIA_BUTTON_SHIFT_LABEL_TR "A/B/X/Y Saat Yönünde Kaydırma" +#define NESTOPIA_BUTTON_SHIFT_INFO_0_TR "A/B/X/Y tuşlarını saat yönünde çevirir." +#define NESTOPIA_ARKANOID_DEVICE_LABEL_TR NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_TR NULL +#define OPTION_VAL_MOUSE_TR NULL +#define OPTION_VAL_POINTER_TR NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_TR NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_TR NULL +#define OPTION_VAL_LIGHTGUN_TR NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_TR NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_TR NULL +#define NESTOPIA_TURBO_PULSE_LABEL_TR NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_TR "Turbo B ve Turbo A düğmeleri için turbo hızını ayarlayın." +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_TR NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_TR NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_TR NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_TR NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_TR NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_TR NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_TR NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_TR NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_TR NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_TR NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_TR NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_TR NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_TR NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_TR NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_TR NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_TR NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_TR NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_TR NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_TR NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_TR NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_TR NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_TR NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_TR NULL + +struct retro_core_option_v2_category option_cats_tr[] = { + { + "video", + CATEGORY_VIDEO_LABEL_TR, + CATEGORY_VIDEO_INFO_0_TR + }, + { + "audio", + CATEGORY_AUDIO_LABEL_TR, + CATEGORY_AUDIO_INFO_0_TR + }, + { + "input", + CATEGORY_INPUT_LABEL_TR, + CATEGORY_INPUT_INFO_0_TR + }, + { + "hacks", + CATEGORY_HACKS_LABEL_TR, + CATEGORY_HACKS_INFO_0_TR + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_tr[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_TR, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_TR, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_TR }, + { "svideo", OPTION_VAL_SVIDEO_TR }, + { "rgb", OPTION_VAL_RGB_TR }, + { "monochrome", OPTION_VAL_MONOCHROME_TR }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_TR, + NULL, + NESTOPIA_PALETTE_INFO_0_TR, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_TR }, + { "consumer", OPTION_VAL_CONSUMER_TR }, + { "canonical", OPTION_VAL_CANONICAL_TR }, + { "alternative", OPTION_VAL_ALTERNATIVE_TR }, + { "rgb", OPTION_VAL_RGB_O1_TR }, + { "pal", OPTION_VAL_PAL_TR }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_TR }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_TR }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_TR }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_TR }, + { "raw", OPTION_VAL_RAW_TR }, + { "custom", OPTION_VAL_CUSTOM_TR }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_TR, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_TR, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_TR, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_TR, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_TR }, + { "2x", OPTION_VAL_2X_TR }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_TR, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_TR, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_TR }, + { "ntsc", OPTION_VAL_NTSC_TR }, + { "famicom", OPTION_VAL_FAMICOM_TR }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_TR, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_TR, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_TR, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_TR, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_TR, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_TR, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_TR, + NULL, + NESTOPIA_ASPECT_INFO_0_TR, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_TR }, + { "ntsc", OPTION_VAL_NTSC_TR }, + { "pal", OPTION_VAL_PAL_TR }, + { "4:3", OPTION_VAL_4_3_TR }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_TR, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_TR, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_TR, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_TR, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_TR }, + { "ntsc", OPTION_VAL_NTSC_TR }, + { "pal", OPTION_VAL_PAL_TR }, + { "famicom", OPTION_VAL_FAMICOM_TR }, + { "dendy", OPTION_VAL_DENDY_TR }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_TR, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_TR, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_TR }, + { "0xFF", OPTION_VAL_0XFF_TR }, + { "random", OPTION_VAL_RANDOM_TR }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_TR, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_TR, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_TR, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_TR, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_TR }, + { "pointer", OPTION_VAL_POINTER_TR }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_TR, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_TR, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_TR }, + { "mouse", OPTION_VAL_MOUSE_TR }, + { "pointer", OPTION_VAL_POINTER_TR }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_TR, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_TR, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_TR, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_TR, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_TR, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_TR, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_TR, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_TR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_TR, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_TR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_TR, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_TR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_TR, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_TR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_TR, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_TR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_TR, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_TR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_TR, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_TR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_TR, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_TR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_TR, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_TR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_TR, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_TR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_TR, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_TR, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_UK NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_UK NULL +#define CATEGORY_HACKS_INFO_0_UK NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_UK NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_UK NULL +#define OPTION_VAL_COMPOSITE_UK NULL +#define OPTION_VAL_SVIDEO_UK NULL +#define OPTION_VAL_RGB_UK NULL +#define OPTION_VAL_MONOCHROME_UK NULL +#define NESTOPIA_PALETTE_LABEL_UK NULL +#define NESTOPIA_PALETTE_INFO_0_UK NULL +#define OPTION_VAL_CXA2025AS_UK NULL +#define OPTION_VAL_CONSUMER_UK NULL +#define OPTION_VAL_CANONICAL_UK NULL +#define OPTION_VAL_ALTERNATIVE_UK NULL +#define OPTION_VAL_RGB_O1_UK NULL +#define OPTION_VAL_PAL_UK NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_UK NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_UK NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_UK NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_UK NULL +#define OPTION_VAL_RAW_UK NULL +#define OPTION_VAL_CUSTOM_UK NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_UK NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_UK NULL +#define NESTOPIA_OVERCLOCK_LABEL_UK NULL +#define NESTOPIA_OVERCLOCK_INFO_0_UK NULL +#define OPTION_VAL_1X_UK NULL +#define OPTION_VAL_2X_UK NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_UK NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_UK NULL +#define OPTION_VAL_AUTO_UK NULL +#define OPTION_VAL_NTSC_UK NULL +#define OPTION_VAL_FAMICOM_UK NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_UK NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_UK NULL +#define NESTOPIA_OVERSCAN_V_LABEL_UK NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_UK NULL +#define NESTOPIA_OVERSCAN_H_LABEL_UK NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_UK NULL +#define NESTOPIA_ASPECT_LABEL_UK NULL +#define NESTOPIA_ASPECT_INFO_0_UK NULL +#define OPTION_VAL_4_3_UK NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_UK NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_UK NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_UK NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_UK NULL +#define OPTION_VAL_DENDY_UK NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_UK NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_UK NULL +#define OPTION_VAL_0X00_UK NULL +#define OPTION_VAL_0XFF_UK NULL +#define OPTION_VAL_RANDOM_UK NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_UK NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_UK NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_UK NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_UK NULL +#define OPTION_VAL_MOUSE_UK NULL +#define OPTION_VAL_POINTER_UK NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_UK NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_UK NULL +#define OPTION_VAL_LIGHTGUN_UK NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_UK NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_UK NULL +#define NESTOPIA_TURBO_PULSE_LABEL_UK NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_UK NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_UK NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_UK NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_UK NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_UK NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_UK NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_UK NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_UK NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_UK NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_UK NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_UK NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_UK NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_UK NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_UK NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_UK NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_UK NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_UK NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_UK NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_UK NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_UK NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_UK NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_UK NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_UK NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_UK NULL + +struct retro_core_option_v2_category option_cats_uk[] = { + { + "video", + CATEGORY_VIDEO_LABEL_UK, + CATEGORY_VIDEO_INFO_0_UK + }, + { + "audio", + CATEGORY_AUDIO_LABEL_UK, + CATEGORY_AUDIO_INFO_0_UK + }, + { + "input", + CATEGORY_INPUT_LABEL_UK, + CATEGORY_INPUT_INFO_0_UK + }, + { + "hacks", + CATEGORY_HACKS_LABEL_UK, + CATEGORY_HACKS_INFO_0_UK + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_uk[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_UK, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_UK, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_UK }, + { "svideo", OPTION_VAL_SVIDEO_UK }, + { "rgb", OPTION_VAL_RGB_UK }, + { "monochrome", OPTION_VAL_MONOCHROME_UK }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_UK, + NULL, + NESTOPIA_PALETTE_INFO_0_UK, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_UK }, + { "consumer", OPTION_VAL_CONSUMER_UK }, + { "canonical", OPTION_VAL_CANONICAL_UK }, + { "alternative", OPTION_VAL_ALTERNATIVE_UK }, + { "rgb", OPTION_VAL_RGB_O1_UK }, + { "pal", OPTION_VAL_PAL_UK }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_UK }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_UK }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_UK }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_UK }, + { "raw", OPTION_VAL_RAW_UK }, + { "custom", OPTION_VAL_CUSTOM_UK }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_UK, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_UK, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_UK, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_UK, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_UK }, + { "2x", OPTION_VAL_2X_UK }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_UK, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_UK, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_UK }, + { "ntsc", OPTION_VAL_NTSC_UK }, + { "famicom", OPTION_VAL_FAMICOM_UK }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_UK, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_UK, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_UK, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_UK, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_UK, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_UK, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_UK, + NULL, + NESTOPIA_ASPECT_INFO_0_UK, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_UK }, + { "ntsc", OPTION_VAL_NTSC_UK }, + { "pal", OPTION_VAL_PAL_UK }, + { "4:3", OPTION_VAL_4_3_UK }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_UK, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_UK, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_UK, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_UK, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_UK }, + { "ntsc", OPTION_VAL_NTSC_UK }, + { "pal", OPTION_VAL_PAL_UK }, + { "famicom", OPTION_VAL_FAMICOM_UK }, + { "dendy", OPTION_VAL_DENDY_UK }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_UK, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_UK, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_UK }, + { "0xFF", OPTION_VAL_0XFF_UK }, + { "random", OPTION_VAL_RANDOM_UK }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_UK, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_UK, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_UK, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_UK, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_UK }, + { "pointer", OPTION_VAL_POINTER_UK }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_UK, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_UK, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_UK }, + { "mouse", OPTION_VAL_MOUSE_UK }, + { "pointer", OPTION_VAL_POINTER_UK }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_UK, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_UK, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_UK, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_UK, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_UK, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_UK, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_UK, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_UK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_UK, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_UK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_UK, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_UK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_UK, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_UK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_UK, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_UK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_UK, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_UK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_UK, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_UK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_UK, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_UK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_UK, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_UK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_UK, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_UK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_UK, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_UK, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { 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_VIDEO_LABEL_VN NULL +#define CATEGORY_VIDEO_INFO_0_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_HACKS_LABEL_VN NULL +#define CATEGORY_HACKS_INFO_0_VN NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_LABEL_VN NULL +#define NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_VN NULL +#define OPTION_VAL_COMPOSITE_VN NULL +#define OPTION_VAL_SVIDEO_VN NULL +#define OPTION_VAL_RGB_VN NULL +#define OPTION_VAL_MONOCHROME_VN NULL +#define NESTOPIA_PALETTE_LABEL_VN NULL +#define NESTOPIA_PALETTE_INFO_0_VN NULL +#define OPTION_VAL_CXA2025AS_VN NULL +#define OPTION_VAL_CONSUMER_VN NULL +#define OPTION_VAL_CANONICAL_VN NULL +#define OPTION_VAL_ALTERNATIVE_VN NULL +#define OPTION_VAL_RGB_O1_VN NULL +#define OPTION_VAL_PAL_VN NULL +#define OPTION_VAL_COMPOSITE_DIRECT_FBX_VN NULL +#define OPTION_VAL_PVM_STYLE_D93_FBX_VN NULL +#define OPTION_VAL_NTSC_HARDWARE_FBX_VN NULL +#define OPTION_VAL_NES_CLASSIC_FBX_FS_VN NULL +#define OPTION_VAL_RAW_VN NULL +#define OPTION_VAL_CUSTOM_VN NULL +#define NESTOPIA_NOSPRITELIMIT_LABEL_VN NULL +#define NESTOPIA_NOSPRITELIMIT_INFO_0_VN NULL +#define NESTOPIA_OVERCLOCK_LABEL_VN NULL +#define NESTOPIA_OVERCLOCK_INFO_0_VN NULL +#define OPTION_VAL_1X_VN NULL +#define OPTION_VAL_2X_VN NULL +#define NESTOPIA_SELECT_ADAPTER_LABEL_VN NULL +#define NESTOPIA_SELECT_ADAPTER_INFO_0_VN NULL +#define OPTION_VAL_AUTO_VN NULL +#define OPTION_VAL_NTSC_VN NULL +#define OPTION_VAL_FAMICOM_VN NULL +#define NESTOPIA_FDS_AUTO_INSERT_LABEL_VN NULL +#define NESTOPIA_FDS_AUTO_INSERT_INFO_0_VN NULL +#define NESTOPIA_OVERSCAN_V_LABEL_VN NULL +#define NESTOPIA_OVERSCAN_V_INFO_0_VN NULL +#define NESTOPIA_OVERSCAN_H_LABEL_VN NULL +#define NESTOPIA_OVERSCAN_H_INFO_0_VN NULL +#define NESTOPIA_ASPECT_LABEL_VN NULL +#define NESTOPIA_ASPECT_INFO_0_VN NULL +#define OPTION_VAL_4_3_VN NULL +#define NESTOPIA_GENIE_DISTORTION_LABEL_VN NULL +#define NESTOPIA_GENIE_DISTORTION_INFO_0_VN NULL +#define NESTOPIA_FAVORED_SYSTEM_LABEL_VN NULL +#define NESTOPIA_FAVORED_SYSTEM_INFO_0_VN NULL +#define OPTION_VAL_DENDY_VN NULL +#define NESTOPIA_RAM_POWER_STATE_LABEL_VN NULL +#define NESTOPIA_RAM_POWER_STATE_INFO_0_VN NULL +#define OPTION_VAL_0X00_VN NULL +#define OPTION_VAL_0XFF_VN NULL +#define OPTION_VAL_RANDOM_VN NULL +#define NESTOPIA_BUTTON_SHIFT_LABEL_VN NULL +#define NESTOPIA_BUTTON_SHIFT_INFO_0_VN NULL +#define NESTOPIA_ARKANOID_DEVICE_LABEL_VN NULL +#define NESTOPIA_ARKANOID_DEVICE_INFO_0_VN NULL +#define OPTION_VAL_MOUSE_VN NULL +#define OPTION_VAL_POINTER_VN NULL +#define NESTOPIA_ZAPPER_DEVICE_LABEL_VN NULL +#define NESTOPIA_ZAPPER_DEVICE_INFO_0_VN NULL +#define OPTION_VAL_LIGHTGUN_VN NULL +#define NESTOPIA_SHOW_CROSSHAIR_LABEL_VN NULL +#define NESTOPIA_SHOW_CROSSHAIR_INFO_0_VN NULL +#define NESTOPIA_TURBO_PULSE_LABEL_VN NULL +#define NESTOPIA_TURBO_PULSE_INFO_0_VN NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_VN NULL +#define NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_VN NULL +#define NESTOPIA_AUDIO_VOL_SQ1_LABEL_VN NULL +#define NESTOPIA_AUDIO_VOL_SQ1_INFO_0_VN NULL +#define NESTOPIA_AUDIO_VOL_SQ2_LABEL_VN NULL +#define NESTOPIA_AUDIO_VOL_SQ2_INFO_0_VN NULL +#define NESTOPIA_AUDIO_VOL_TRI_LABEL_VN NULL +#define NESTOPIA_AUDIO_VOL_TRI_INFO_0_VN NULL +#define NESTOPIA_AUDIO_VOL_NOISE_LABEL_VN NULL +#define NESTOPIA_AUDIO_VOL_NOISE_INFO_0_VN NULL +#define NESTOPIA_AUDIO_VOL_DPCM_LABEL_VN NULL +#define NESTOPIA_AUDIO_VOL_DPCM_INFO_0_VN NULL +#define NESTOPIA_AUDIO_VOL_FDS_LABEL_VN NULL +#define NESTOPIA_AUDIO_VOL_FDS_INFO_0_VN NULL +#define NESTOPIA_AUDIO_VOL_MMC5_LABEL_VN NULL +#define NESTOPIA_AUDIO_VOL_MMC5_INFO_0_VN NULL +#define NESTOPIA_AUDIO_VOL_VRC6_LABEL_VN NULL +#define NESTOPIA_AUDIO_VOL_VRC6_INFO_0_VN NULL +#define NESTOPIA_AUDIO_VOL_VRC7_LABEL_VN NULL +#define NESTOPIA_AUDIO_VOL_VRC7_INFO_0_VN NULL +#define NESTOPIA_AUDIO_VOL_N163_LABEL_VN NULL +#define NESTOPIA_AUDIO_VOL_N163_INFO_0_VN NULL +#define NESTOPIA_AUDIO_VOL_S5B_LABEL_VN NULL + +struct retro_core_option_v2_category option_cats_vn[] = { + { + "video", + CATEGORY_VIDEO_LABEL_VN, + CATEGORY_VIDEO_INFO_0_VN + }, + { + "audio", + CATEGORY_AUDIO_LABEL_VN, + CATEGORY_AUDIO_INFO_0_VN + }, + { + "input", + CATEGORY_INPUT_LABEL_VN, + CATEGORY_INPUT_INFO_0_VN + }, + { + "hacks", + CATEGORY_HACKS_LABEL_VN, + CATEGORY_HACKS_INFO_0_VN + }, + { NULL, NULL, NULL }, +}; +struct retro_core_option_v2_definition option_defs_vn[] = { + { + "nestopia_blargg_ntsc_filter", + NESTOPIA_BLARGG_NTSC_FILTER_LABEL_VN, + NULL, + NESTOPIA_BLARGG_NTSC_FILTER_INFO_0_VN, + NULL, + "video", + { + { "disabled", NULL }, + { "composite", OPTION_VAL_COMPOSITE_VN }, + { "svideo", OPTION_VAL_SVIDEO_VN }, + { "rgb", OPTION_VAL_RGB_VN }, + { "monochrome", OPTION_VAL_MONOCHROME_VN }, + { NULL, NULL }, + }, + "disabled" + }, + {/* TODO explain the custom option */ + "nestopia_palette", + NESTOPIA_PALETTE_LABEL_VN, + NULL, + NESTOPIA_PALETTE_INFO_0_VN, + NULL, + "video", + { + { "cxa2025as", OPTION_VAL_CXA2025AS_VN }, + { "consumer", OPTION_VAL_CONSUMER_VN }, + { "canonical", OPTION_VAL_CANONICAL_VN }, + { "alternative", OPTION_VAL_ALTERNATIVE_VN }, + { "rgb", OPTION_VAL_RGB_O1_VN }, + { "pal", OPTION_VAL_PAL_VN }, + { "composite-direct-fbx", OPTION_VAL_COMPOSITE_DIRECT_FBX_VN }, + { "pvm-style-d93-fbx", OPTION_VAL_PVM_STYLE_D93_FBX_VN }, + { "ntsc-hardware-fbx", OPTION_VAL_NTSC_HARDWARE_FBX_VN }, + { "nes-classic-fbx-fs", OPTION_VAL_NES_CLASSIC_FBX_FS_VN }, + { "raw", OPTION_VAL_RAW_VN }, + { "custom", OPTION_VAL_CUSTOM_VN }, + { NULL, NULL }, + }, + "cxa2025as" /* TODO/FIXME - is this correct ? */ + }, + { + "nestopia_nospritelimit", + NESTOPIA_NOSPRITELIMIT_LABEL_VN, + NULL, + NESTOPIA_NOSPRITELIMIT_INFO_0_VN, + NULL, + "hacks", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_overclock", + NESTOPIA_OVERCLOCK_LABEL_VN, + NULL, + NESTOPIA_OVERCLOCK_INFO_0_VN, + NULL, + "hacks", + { + { "1x", OPTION_VAL_1X_VN }, + { "2x", OPTION_VAL_2X_VN }, + { NULL, NULL }, + }, + "1x" + }, + { + "nestopia_select_adapter", + NESTOPIA_SELECT_ADAPTER_LABEL_VN, + NULL, + NESTOPIA_SELECT_ADAPTER_INFO_0_VN, + NULL, + "input", + { + { "auto", OPTION_VAL_AUTO_VN }, + { "ntsc", OPTION_VAL_NTSC_VN }, + { "famicom", OPTION_VAL_FAMICOM_VN }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_fds_auto_insert", + NESTOPIA_FDS_AUTO_INSERT_LABEL_VN, + NULL, + NESTOPIA_FDS_AUTO_INSERT_INFO_0_VN, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_v", + NESTOPIA_OVERSCAN_V_LABEL_VN, + NULL, + NESTOPIA_OVERSCAN_V_INFO_0_VN, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "enabled" + }, + { + "nestopia_overscan_h", + NESTOPIA_OVERSCAN_H_LABEL_VN, + NULL, + NESTOPIA_OVERSCAN_H_INFO_0_VN, + NULL, + "video", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_aspect", + NESTOPIA_ASPECT_LABEL_VN, + NULL, + NESTOPIA_ASPECT_INFO_0_VN, + NULL, + "video", + { + { "auto", OPTION_VAL_AUTO_VN }, + { "ntsc", OPTION_VAL_NTSC_VN }, + { "pal", OPTION_VAL_PAL_VN }, + { "4:3", OPTION_VAL_4_3_VN }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_genie_distortion", + NESTOPIA_GENIE_DISTORTION_LABEL_VN, + NULL, + NESTOPIA_GENIE_DISTORTION_INFO_0_VN, + NULL, + "audio", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_favored_system", + NESTOPIA_FAVORED_SYSTEM_LABEL_VN, + NULL, + NESTOPIA_FAVORED_SYSTEM_INFO_0_VN, + NULL, + NULL, + { + { "auto", OPTION_VAL_AUTO_VN }, + { "ntsc", OPTION_VAL_NTSC_VN }, + { "pal", OPTION_VAL_PAL_VN }, + { "famicom", OPTION_VAL_FAMICOM_VN }, + { "dendy", OPTION_VAL_DENDY_VN }, + { NULL, NULL }, + }, + "auto" + }, + { + "nestopia_ram_power_state", + NESTOPIA_RAM_POWER_STATE_LABEL_VN, + NULL, + NESTOPIA_RAM_POWER_STATE_INFO_0_VN, + NULL, + "hacks", + { + { "0x00", OPTION_VAL_0X00_VN }, + { "0xFF", OPTION_VAL_0XFF_VN }, + { "random", OPTION_VAL_RANDOM_VN }, + { NULL, NULL }, + }, + "0x00" + }, + { + "nestopia_button_shift", + NESTOPIA_BUTTON_SHIFT_LABEL_VN, + NULL, + NESTOPIA_BUTTON_SHIFT_INFO_0_VN, /* is this right? @gadsby */ + NULL, + "input", + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL }, + }, + "disabled" + }, + { + "nestopia_arkanoid_device", + NESTOPIA_ARKANOID_DEVICE_LABEL_VN, + NULL, + NESTOPIA_ARKANOID_DEVICE_INFO_0_VN, + NULL, + "input", + { + { "mouse", OPTION_VAL_MOUSE_VN }, + { "pointer", OPTION_VAL_POINTER_VN }, + }, + "mouse" + }, + { + "nestopia_zapper_device", + NESTOPIA_ZAPPER_DEVICE_LABEL_VN, + NULL, + NESTOPIA_ZAPPER_DEVICE_INFO_0_VN, + NULL, + "input", + { + { "lightgun", OPTION_VAL_LIGHTGUN_VN }, + { "mouse", OPTION_VAL_MOUSE_VN }, + { "pointer", OPTION_VAL_POINTER_VN }, + { NULL, NULL }, + }, + "lightgun", + }, + { + "nestopia_show_crosshair", + NESTOPIA_SHOW_CROSSHAIR_LABEL_VN, + NULL, + NESTOPIA_SHOW_CROSSHAIR_INFO_0_VN, + NULL, + "input", + { + { "disabled", NULL}, + { "enabled", NULL }, + }, + "enabled" + }, + { + "nestopia_turbo_pulse", + NESTOPIA_TURBO_PULSE_LABEL_VN, + NULL, + NESTOPIA_TURBO_PULSE_INFO_0_VN, + NULL, + "input", + { + { "2", NULL }, + { "3", NULL }, + { "4", NULL }, + { "5", NULL }, + { "6", NULL }, + { "7", NULL }, + { "8", NULL }, + { "9", NULL }, + { NULL, NULL }, + }, + "2" + }, + { + "nestopia_show_advanced_av_settings", + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_LABEL_VN, + NULL, + NESTOPIA_SHOW_ADVANCED_AV_SETTINGS_INFO_0_VN, + NULL, + NULL, + { + { "disabled", NULL }, + { "enabled", NULL }, + { NULL, NULL}, + }, + "disabled" + }, + { + "nestopia_audio_vol_sq1", + NESTOPIA_AUDIO_VOL_SQ1_LABEL_VN, + NULL, + NESTOPIA_AUDIO_VOL_SQ1_INFO_0_VN, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + NESTOPIA_AUDIO_VOL_SQ2_LABEL_VN, + NULL, + NESTOPIA_AUDIO_VOL_SQ2_INFO_0_VN, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + NESTOPIA_AUDIO_VOL_TRI_LABEL_VN, + NULL, + NESTOPIA_AUDIO_VOL_TRI_INFO_0_VN, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + NESTOPIA_AUDIO_VOL_NOISE_LABEL_VN, + NULL, + NESTOPIA_AUDIO_VOL_NOISE_INFO_0_VN, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + NESTOPIA_AUDIO_VOL_DPCM_LABEL_VN, + NULL, + NESTOPIA_AUDIO_VOL_DPCM_INFO_0_VN, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + NESTOPIA_AUDIO_VOL_FDS_LABEL_VN, + NULL, + NESTOPIA_AUDIO_VOL_FDS_INFO_0_VN, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + NESTOPIA_AUDIO_VOL_MMC5_LABEL_VN, + NULL, + NESTOPIA_AUDIO_VOL_MMC5_INFO_0_VN, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + NESTOPIA_AUDIO_VOL_VRC6_LABEL_VN, + NULL, + NESTOPIA_AUDIO_VOL_VRC6_INFO_0_VN, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + NESTOPIA_AUDIO_VOL_VRC7_LABEL_VN, + NULL, + NESTOPIA_AUDIO_VOL_VRC7_INFO_0_VN, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + NESTOPIA_AUDIO_VOL_N163_LABEL_VN, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_VN, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5b", + NESTOPIA_AUDIO_VOL_S5B_LABEL_VN, + NULL, + NESTOPIA_AUDIO_VOL_N163_INFO_0_VN, + NULL, + "audio", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; +struct retro_core_options_v2 options_vn = { + option_cats_vn, + option_defs_vn +}; + #ifdef __cplusplus }