(Core Options) Fix UTF-8 compilation issues, update 'libretro_core_options.h' to v1.3 format

This commit is contained in:
jdgleaver 2019-08-14 11:42:56 +01:00 committed by hunterk
parent 2803917397
commit 89a997a02b
3 changed files with 790 additions and 707 deletions

View File

@ -1117,7 +1117,7 @@ enum retro_mod
* This may be still be done regardless of the core options * This may be still be done regardless of the core options
* interface version. * 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 * passing an array of retro_core_option_definition structs to
* RETRO_ENVIRONMENT_SET_CORE_OPTIONS, or a 2D array of * RETRO_ENVIRONMENT_SET_CORE_OPTIONS, or a 2D array of
* retro_core_option_definition structs to RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL. * retro_core_option_definition structs to RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL.
@ -1132,8 +1132,8 @@ enum retro_mod
* GET_VARIABLE. * GET_VARIABLE.
* This allows the frontend to present these variables to * This allows the frontend to present these variables to
* a user dynamically. * a user dynamically.
* This should only be called if RETRO_ENVIRONMENT_GET_ENHANCED_CORE_OPTIONS * This should only be called if RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION
* returns an API version of 1. * 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_VARIABLES.
* This should be called the first time as early as * This should be called the first time as early as
* possible (ideally in retro_set_environment). * possible (ideally in retro_set_environment).
@ -1169,8 +1169,6 @@ enum retro_mod
* i.e. it should be feasible to cycle through options * i.e. it should be feasible to cycle through options
* without a keyboard. * without a keyboard.
* *
* First entry should be treated as a default.
*
* Example entry: * Example entry:
* { * {
* "foo_option", * "foo_option",
@ -1196,8 +1194,8 @@ enum retro_mod
* GET_VARIABLE. * GET_VARIABLE.
* This allows the frontend to present these variables to * This allows the frontend to present these variables to
* a user dynamically. * a user dynamically.
* This should only be called if RETRO_ENVIRONMENT_GET_ENHANCED_CORE_OPTIONS * This should only be called if RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION
* returns an API version of 1. * 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_VARIABLES.
* This should be called the first time as early as * This should be called the first time as early as
* possible (ideally in retro_set_environment). * possible (ideally in retro_set_environment).
@ -2504,8 +2502,20 @@ struct retro_core_option_display
}; };
/* Maximum number of values permitted for a core option /* Maximum number of values permitted for a core option
* NOTE: This may be increased on a core-by-core basis * > Note: We have to set a maximum value due the limitations
* if required (doing so has no effect on the frontend) */ * 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 #define RETRO_NUM_CORE_OPTION_VALUES_MAX 128
struct retro_core_option_value struct retro_core_option_value

View File

@ -7,6 +7,28 @@
#include <libretro.h> #include <libretro.h>
#include <retro_inline.h> #include <retro_inline.h>
#ifndef HAVE_NO_LANGEXTRA
#include "libretro_core_options_intl.h"
#endif
/*
********************************
* VERSION: 1.3
********************************
*
* - 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
* - Added HAVE_NO_LANGEXTRA flag to disable translations
* on platforms/compilers without BOM support
* - 1.2: Use core options v1 interface when
* RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION is >= 1
* (previously required RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION == 1)
* - 1.1: Support generation of core options v0 retro_core_option_value
* arrays containing options with a single value
* - 1.0: First commit
*/
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@ -685,706 +707,13 @@ struct retro_core_option_definition option_defs_us[] = {
{ NULL, NULL, NULL, {{0}}, NULL }, { NULL, NULL, NULL, {{0}}, NULL },
}; };
/* RETRO_LANGUAGE_JAPANESE */
/* 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[] = {
/* These variable names and possible values constitute an ABI with ZMZ (ZSNES Libretro player).
* Changing "Show layer 1" is fine, but don't change "layer_1"/etc or the possible values ("Yes|No").
* Adding more variables and rearranging them is safe. */
{
"snes9x_region",
"Konsol Bölgesi (Core Yenilenir)",
"Sistemin hangi bölgeden olduğunu belirtir.. 'PAL' 50hz'dir, 'NTSC' ise 60hz. Yanlış bölge seçiliyse, oyunlar normalden daha hızlı veya daha yavaş çalışacaktır.",
{
{ "auto", "Otomatik" },
{ "ntsc", "NTSC" },
{ "pal", "PAL" },
{ NULL, NULL},
},
"auto"
},
{
"snes9x_aspect",
"Tercih Edilen En Boy Oranı",
"Tercih edilen içerik en boy oranını seçin. Bu, yalnızca RetroArchın en boy oranı Video ayarlarında 'Core tarafından' olarak ayarlandığında uygulanacaktır.",
{
{ "4:3", NULL },
{ "uncorrected", "Düzeltilmemiş" },
{ "auto", "Otomatik" },
{ "ntsc", "NTSC" },
{ "pal", "PAL" },
{ NULL, NULL},
},
"4:3"
},
{
"snes9x_overscan",
"ırı Taramayı Kırp",
"Ekranın üst ve alt kısmındaki ~8 piksel sınırlarını, tipik olarak standart çözünürlüklü bir televizyondakini kaldırır. 'Otomatik' ise geçerli içeriğe bağlı olarak aşırı taramayı algılamaya ve kırpmaya çalışacaktır.",
{
{ "enabled", NULL },
{ "disabled", NULL },
{ "auto", "Otomatik" },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_gfx_hires",
"Hi-Res Modunu Etkinleştir",
"Oyunların hi-res moduna (512x448) geçmesine izin verir veya tüm içeriği 256x224'te (ezilmiş piksellerle) çıkmaya zorlar.",
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_hires_blend",
"Hi-Res Karışımı",
"Oyun hi-res moduna geçtiğinde pikselleri karıştırır (512x448). Şeffaflık efektleri üretmek için hi-res modunu kullanan bazı oyunlar için gereklidir (Kirby's Dream Land, Jurassic Park ...).",
{
{ "disabled", NULL },
{ "merge", "Birlşetir" },
{ "blur", "Bulanıklaştır" },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_blargg",
"Blargg NTSC Filtresi",
"Çeşitli NTSC TV sinyallerini taklit etmek için bir video filtresi uygular.",
{
{ "disabled", NULL },
{ "monochrome", "Monochrome" },
{ "rf", "RF" },
{ "composite", "Composite" },
{ "s-video", "S-Video" },
{ "rgb", "RGB" },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_audio_interpolation",
"Ses Enterpolasyonu",
"Belirtilen ses filtresini uygular. 'Gaussian', orijinal donanımın bas ağırlıklı sesini üretir. 'Cubic' ve 'Sinc' daha az doğrudur ve daha fazla aralığı korur.",
{
{ "gaussian", "Gaussian" },
{ "cubic", "Cubic" },
{ "sinc", "Sinc" },
{ "none", "Hiçbiri" },
{ "linear", "Linear" },
{ NULL, NULL},
},
"gaussian"
},
{
"snes9x_up_down_allowed",
"Karşı Yönlere İzin Ver",
"Bunu etkinleştirmek aynı anda hem sola hem de sağa (veya yukarı ve aşağı) yönlere basma / hızlı değiştirme / tutma imkanı sağlar. Bu harekete dayalı hatalara neden olabilir.",
{
{ "disabled", NULL },
{ "enabled", NULL },
{ NULL, NULL },
},
"disabled"
},
{
"snes9x_overclock_superfx",
"SuperFX Hız Aşırtma",
"SuperFX işlemcisi frekans çarpanıdır. Kare hızını artırabilir veya zamanlama hatalarına neden olabilir. % 100'ün altındaki değerler yavaş cihazlarda oyun performansını artırabilir.",
{
{ "50%", NULL },
{ "60%", NULL },
{ "70%", NULL },
{ "80%", NULL },
{ "90%", NULL },
{ "100%", NULL },
{ "150%", NULL },
{ "200%", NULL },
{ "250%", NULL },
{ "300%", NULL },
{ "350%", NULL },
{ "400%", NULL },
{ "450%", NULL },
{ "500%", NULL },
{ NULL, NULL},
},
"100%"
},
{
"snes9x_overclock_cycles",
"Yavaşlamayı Azalt (Hack, Güvensiz)",
"SNES İşlemcisi için hız aşırtmadır. Oyunların çökmesine neden olabilir! Daha kısa yükleme süreleri için 'Hafif'i, yavaşlama gösteren oyunların çoğunda' Uyumlu 've yalnızca kesinlikle gerekliyse' Maks 'kullanın (Gradius 3, Süper R tipi ...).",
{
{ "disabled", NULL },
{ "light", "Hafif" },
{ "compatible", "Uyumlu" },
{ "max", "Maks" },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_reduce_sprite_flicker",
"Kırılmayı Azalt (Hack, Güvensiz)",
"Ekranda aynı anda çizilebilen sprite sayısını arttırır.",
{
{ "disabled", NULL },
{ "enabled", NULL },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_randomize_memory",
"Belleği Rastgele Kıl (Güvensiz)",
"Başlatıldığında sistem RAM'ını rastgele ayarlar. 'Super Off Road' gibi bazı oyunlar, oyunu daha öngörülemeyen hale getirmek için öğe yerleştirme ve AI davranışı için rastgele sayı üreticisi olarak sistem RAM'ini kullanır.",
{
{ "disabled", NULL },
{ "enabled", NULL },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_block_invalid_vram_access",
"Geçersiz VRAM Erişimini Engelle",
"Bazı Homebrew/ROM'lar, doğru işlem için bu seçeneğin devre dışı bırakılmasını gerektirir.",
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_echo_buffer_hack",
"Eko Tampon Hack (Güvenli değil, yalnızca eski addmusic için etkinleştirin)",
"Bazı Homebrew/ROM'lar, doğru işlem için bu seçeneğin devre dışı bırakılmasını gerektirir.",
{
{ "disabled", NULL },
{ "enabled", NULL },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_show_lightgun_settings",
"Light Gun Ayarlarını Göster",
"Super Scope / Justifier / M.A.C.S. için tüfek girişi yapılandırmasını etkinleştir. NOT: Bu ayarın etkili olabilmesi için Hızlı Menünün açılması gerekir.",
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_lightgun_mode",
"Light Gun Modu",
"Fare kontrollü 'Light Gun' veya 'Dokunmatik Ekran' girişini kullanın.",
{
{ "Lightgun", "Light Gun" },
{ "Touchscreen", "Dokunmatik Ekran" },
{ NULL, NULL},
},
"Lightgun"
},
{
"snes9x_superscope_reverse_buttons",
"Super Scope Ters Tetik Düğmeleri",
"Süper Scope için 'Ateş' ve 'İmleç' butonlarının pozisyonlarını değiştir.",
{
{ "disabled", NULL },
{ "enabled", NULL },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_superscope_crosshair",
"Super Scope İmkeç",
"Ekrandaki imleç işaretini değiştirin.",
{
{ "0", NULL },
{ "1", NULL },
{ "2", NULL },
{ "3", NULL },
{ "4", NULL },
{ "5", NULL },
{ "6", NULL },
{ "7", NULL },
{ "8", NULL },
{ "9", NULL },
{ "10", NULL },
{ "11", NULL },
{ "12", NULL },
{ "13", NULL },
{ "14", NULL },
{ "15", NULL },
{ "16", NULL },
{ NULL, NULL},
},
"2"
},
{
"snes9x_superscope_color",
"Super Scope Rengi",
"Ekrandaki imleç işaretinin rengini değiştirin.",
{
{ "White", NULL },
{ "White (blend)", NULL },
{ "Red", NULL },
{ "Red (blend)", NULL },
{ "Orange", NULL },
{ "Orange (blend)", NULL },
{ "Yellow", NULL },
{ "Yellow (blend)", NULL },
{ "Green", NULL },
{ "Green (blend)", NULL },
{ "Cyan", NULL },
{ "Cyan (blend)", NULL },
{ "Sky", NULL },
{ "Sky (blend)", NULL },
{ "Blue", NULL },
{ "Blue (blend)", NULL },
{ "Violet", NULL },
{ "Violet (blend)", NULL },
{ "Pink", NULL },
{ "Pink (blend)", NULL },
{ "Purple", NULL },
{ "Purple (blend)", NULL },
{ "Black", NULL },
{ "Black (blend)", NULL },
{ "25% Grey", NULL },
{ "25% Grey (blend)", NULL },
{ "50% Grey", NULL },
{ "50% Grey (blend)", NULL },
{ "75% Grey", NULL },
{ "75% Grey (blend)", NULL },
{ NULL, NULL},
},
"White"
},
{
"snes9x_justifier1_crosshair",
"Justifier 1 İmleci",
"Ekrandaki imleç işaretinin boyutunu değiştirin.",
{
{ "0", NULL },
{ "1", NULL },
{ "2", NULL },
{ "3", NULL },
{ "4", NULL },
{ "5", NULL },
{ "6", NULL },
{ "7", NULL },
{ "8", NULL },
{ "9", NULL },
{ "10", NULL },
{ "11", NULL },
{ "12", NULL },
{ "13", NULL },
{ "14", NULL },
{ "15", NULL },
{ "16", NULL },
{ NULL, NULL},
},
"4"
},
{
"snes9x_justifier1_color",
"Justifier 1 Rengi",
"Ekrandaki imleç işaretinin rengini değiştirin.",
{
{ "Blue", NULL },
{ "Blue (blend)", NULL },
{ "Violet", NULL },
{ "Violet (blend)", NULL },
{ "Pink", NULL },
{ "Pink (blend)", NULL },
{ "Purple", NULL },
{ "Purple (blend)", NULL },
{ "Black", NULL },
{ "Black (blend)", NULL },
{ "25% Grey", NULL },
{ "25% Grey (blend)", NULL },
{ "50% Grey", NULL },
{ "50% Grey (blend)", NULL },
{ "75% Grey", NULL },
{ "75% Grey (blend)", NULL },
{ "White", NULL },
{ "White (blend)", NULL },
{ "Red", NULL },
{ "Red (blend)", NULL },
{ "Orange", NULL },
{ "Orange (blend)", NULL },
{ "Yellow", NULL },
{ "Yellow (blend)", NULL },
{ "Green", NULL },
{ "Green (blend)", NULL },
{ "Cyan", NULL },
{ "Cyan (blend)", NULL },
{ "Sky", NULL },
{ "Sky (blend)", NULL },
{ NULL, NULL},
},
"Blue"
},
{
"snes9x_justifier2_crosshair",
"Justifier 2 İmleci",
"Ekrandaki imleç işaretinin boyutunu değiştirin.",
{
{ "0", NULL },
{ "1", NULL },
{ "2", NULL },
{ "3", NULL },
{ "4", NULL },
{ "5", NULL },
{ "6", NULL },
{ "7", NULL },
{ "8", NULL },
{ "9", NULL },
{ "10", NULL },
{ "11", NULL },
{ "12", NULL },
{ "13", NULL },
{ "14", NULL },
{ "15", NULL },
{ "16", NULL },
{ NULL, NULL},
},
"4"
},
{
"snes9x_justifier2_color",
"Justifier 2 REngi",
"Ekrandaki imleç işaretinin rengini değiştirin.",
{
{ "Pink", NULL },
{ "Pink (blend)", NULL },
{ "Purple", NULL },
{ "Purple (blend)", NULL },
{ "Black", NULL },
{ "Black (blend)", NULL },
{ "25% Grey", NULL },
{ "25% Grey (blend)", NULL },
{ "50% Grey", NULL },
{ "50% Grey (blend)", NULL },
{ "75% Grey", NULL },
{ "75% Grey (blend)", NULL },
{ "White", NULL },
{ "White (blend)", NULL },
{ "Red", NULL },
{ "Red (blend)", NULL },
{ "Orange", NULL },
{ "Orange (blend)", NULL },
{ "Yellow", NULL },
{ "Yellow (blend)", NULL },
{ "Green", NULL },
{ "Green (blend)", NULL },
{ "Cyan", NULL },
{ "Cyan (blend)", NULL },
{ "Sky", NULL },
{ "Sky (blend)", NULL },
{ "Blue", NULL },
{ "Blue (blend)", NULL },
{ "Violet", NULL },
{ "Violet (blend)", NULL },
{ NULL, NULL},
},
"Pink"
},
{
"snes9x_rifle_crosshair",
"M.A.C.S. Tüfek ",
"Ekrandaki imleç işaretinin rengini değiştirin..",
{
{ "0", NULL },
{ "1", NULL },
{ "2", NULL },
{ "3", NULL },
{ "4", NULL },
{ "5", NULL },
{ "6", NULL },
{ "7", NULL },
{ "8", NULL },
{ "9", NULL },
{ "10", NULL },
{ "11", NULL },
{ "12", NULL },
{ "13", NULL },
{ "14", NULL },
{ "15", NULL },
{ "16", NULL },
{ NULL, NULL},
},
"2"
},
{
"snes9x_rifle_color",
"M.A.C.S. Tüfek Rengi",
"Ekrandaki imleç işaretinin rengini değiştirin.",
{
{ "White", NULL },
{ "White (blend)", NULL },
{ "Red", NULL },
{ "Red (blend)", NULL },
{ "Orange", NULL },
{ "Orange (blend)", NULL },
{ "Yellow", NULL },
{ "Yellow (blend)", NULL },
{ "Green", NULL },
{ "Green (blend)", NULL },
{ "Cyan", NULL },
{ "Cyan (blend)", NULL },
{ "Sky", NULL },
{ "Sky (blend)", NULL },
{ "Blue", NULL },
{ "Blue (blend)", NULL },
{ "Violet", NULL },
{ "Violet (blend)", NULL },
{ "Pink", NULL },
{ "Pink (blend)", NULL },
{ "Purple", NULL },
{ "Purple (blend)", NULL },
{ "Black", NULL },
{ "Black (blend)", NULL },
{ "25% Grey", NULL },
{ "25% Grey (blend)", NULL },
{ "50% Grey", NULL },
{ "50% Grey (blend)", NULL },
{ "75% Grey", NULL },
{ "75% Grey (blend)", NULL },
{ NULL, NULL},
},
"White"
},
{
"snes9x_show_advanced_av_settings",
"Gelişmiş Ses/Video Ayarlarını Göster",
"Düşük seviye video katmanı / GFX etkisi / ses kanalı parametrelerinin yapılandırılmasını etkinleştirir. NOT: Bu ayarın etkili olabilmesi için Hızlı Menünün açılması gerekir.",
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_layer_1",
"1. Katmanı Göster",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_layer_2",
"2. Katmanı Göster",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_layer_3",
"3. Katmanı Göster",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_layer_4",
"4. Katmanı Göster",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_layer_5",
"Sprite Katmanını Göster",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_gfx_clip",
"Grafik Klibi Pencerelerini Etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_gfx_transp",
"Saydamlık Efektlerini Etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_1",
"Ses Kanalı 1'i etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_2",
"Ses Kanalı 2'yi etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_3",
"Ses Kanalı 3'ü etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_4",
"Ses Kanalı 4'ü etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_5",
"Ses Kanalı 5'i etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_6",
"Ses Kanalı 6'yı etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_7",
"Ses Kanalı 7'yi etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_8",
"Ses Kanalı 8'i etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{ NULL, NULL, NULL, {{0}}, NULL },
};
/* /*
******************************** ********************************
* Language Mapping * Language Mapping
******************************** ********************************
*/ */
#ifndef HAVE_NO_LANGEXTRA
struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = { struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = {
option_defs_us, /* RETRO_LANGUAGE_ENGLISH */ option_defs_us, /* RETRO_LANGUAGE_ENGLISH */
NULL, /* RETRO_LANGUAGE_JAPANESE */ NULL, /* RETRO_LANGUAGE_JAPANESE */
@ -1406,6 +735,7 @@ struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = {
NULL, /* RETRO_LANGUAGE_GREEK */ NULL, /* RETRO_LANGUAGE_GREEK */
option_defs_tr, /* RETRO_LANGUAGE_TURKISH */ option_defs_tr, /* RETRO_LANGUAGE_TURKISH */
}; };
#endif
/* /*
******************************** ********************************
@ -1414,7 +744,8 @@ struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = {
*/ */
/* Handles configuration/setting of core options. /* Handles configuration/setting of core options.
* Should only be called inside retro_set_environment(). * Should be called as early as possible - ideally inside
* retro_set_environment(), and no later than retro_load_game()
* > We place the function body in the header to avoid the * > We place the function body in the header to avoid the
* necessity of adding more .c files (i.e. want this to * necessity of adding more .c files (i.e. want this to
* be as painless as possible for core devs) * be as painless as possible for core devs)
@ -1427,8 +758,9 @@ static INLINE void libretro_set_core_options(retro_environment_t environ_cb)
if (!environ_cb) if (!environ_cb)
return; return;
if (environ_cb(RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION, &version) && (version == 1)) if (environ_cb(RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION, &version) && (version >= 1))
{ {
#ifndef HAVE_NO_LANGEXTRA
struct retro_core_options_intl core_options_intl; struct retro_core_options_intl core_options_intl;
unsigned language = 0; unsigned language = 0;
@ -1440,6 +772,9 @@ static INLINE void libretro_set_core_options(retro_environment_t environ_cb)
core_options_intl.local = option_defs_intl[language]; core_options_intl.local = option_defs_intl[language];
environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL, &core_options_intl); environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL, &core_options_intl);
#else
environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS, &option_defs_us);
#endif
} }
else else
{ {
@ -1510,7 +845,7 @@ static INLINE void libretro_set_core_options(retro_environment_t environ_cb)
} }
/* Build values string */ /* Build values string */
if (num_values > 1) if (num_values > 0)
{ {
size_t j; size_t j;

View File

@ -0,0 +1,738 @@
#ifndef LIBRETRO_CORE_OPTIONS_INTL_H__
#define LIBRETRO_CORE_OPTIONS_INTL_H__
#if defined(_MSC_VER) && (_MSC_VER >= 1500 && _MSC_VER < 1900)
/* https://support.microsoft.com/en-us/kb/980263 */
#pragma execution_character_set("utf-8")
#pragma warning(disable:4566)
#endif
#include <libretro.h>
/*
********************************
* VERSION: 1.3
********************************
*
* - 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
* - Added HAVE_NO_LANGEXTRA flag to disable translations
* on platforms/compilers without BOM support
* - 1.2: Use core options v1 interface when
* RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION is >= 1
* (previously required RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION == 1)
* - 1.1: Support generation of core options v0 retro_core_option_value
* arrays containing options with a single value
* - 1.0: First commit
*/
#ifdef __cplusplus
extern "C" {
#endif
/*
********************************
* Core Option Definitions
********************************
*/
/* RETRO_LANGUAGE_JAPANESE */
/* 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[] = {
/* These variable names and possible values constitute an ABI with ZMZ (ZSNES Libretro player).
* Changing "Show layer 1" is fine, but don't change "layer_1"/etc or the possible values ("Yes|No").
* Adding more variables and rearranging them is safe. */
{
"snes9x_region",
"Konsol Bölgesi (Core Yenilenir)",
"Sistemin hangi bölgeden olduğunu belirtir.. 'PAL' 50hz'dir, 'NTSC' ise 60hz. Yanlış bölge seçiliyse, oyunlar normalden daha hızlı veya daha yavaş çalışacaktır.",
{
{ "auto", "Otomatik" },
{ "ntsc", "NTSC" },
{ "pal", "PAL" },
{ NULL, NULL},
},
"auto"
},
{
"snes9x_aspect",
"Tercih Edilen En Boy Oranı",
"Tercih edilen içerik en boy oranını seçin. Bu, yalnızca RetroArchın en boy oranı Video ayarlarında 'Core tarafından' olarak ayarlandığında uygulanacaktır.",
{
{ "4:3", NULL },
{ "uncorrected", "Düzeltilmemiş" },
{ "auto", "Otomatik" },
{ "ntsc", "NTSC" },
{ "pal", "PAL" },
{ NULL, NULL},
},
"4:3"
},
{
"snes9x_overscan",
"ırı Taramayı Kırp",
"Ekranın üst ve alt kısmındaki ~8 piksel sınırlarını, tipik olarak standart çözünürlüklü bir televizyondakini kaldırır. 'Otomatik' ise geçerli içeriğe bağlı olarak aşırı taramayı algılamaya ve kırpmaya çalışacaktır.",
{
{ "enabled", NULL },
{ "disabled", NULL },
{ "auto", "Otomatik" },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_gfx_hires",
"Hi-Res Modunu Etkinleştir",
"Oyunların hi-res moduna (512x448) geçmesine izin verir veya tüm içeriği 256x224'te (ezilmiş piksellerle) çıkmaya zorlar.",
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_hires_blend",
"Hi-Res Karışımı",
"Oyun hi-res moduna geçtiğinde pikselleri karıştırır (512x448). Şeffaflık efektleri üretmek için hi-res modunu kullanan bazı oyunlar için gereklidir (Kirby's Dream Land, Jurassic Park ...).",
{
{ "disabled", NULL },
{ "merge", "Birlşetir" },
{ "blur", "Bulanıklaştır" },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_blargg",
"Blargg NTSC Filtresi",
"Çeşitli NTSC TV sinyallerini taklit etmek için bir video filtresi uygular.",
{
{ "disabled", NULL },
{ "monochrome", "Monochrome" },
{ "rf", "RF" },
{ "composite", "Composite" },
{ "s-video", "S-Video" },
{ "rgb", "RGB" },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_audio_interpolation",
"Ses Enterpolasyonu",
"Belirtilen ses filtresini uygular. 'Gaussian', orijinal donanımın bas ağırlıklı sesini üretir. 'Cubic' ve 'Sinc' daha az doğrudur ve daha fazla aralığı korur.",
{
{ "gaussian", "Gaussian" },
{ "cubic", "Cubic" },
{ "sinc", "Sinc" },
{ "none", "Hiçbiri" },
{ "linear", "Linear" },
{ NULL, NULL},
},
"gaussian"
},
{
"snes9x_up_down_allowed",
"Karşı Yönlere İzin Ver",
"Bunu etkinleştirmek aynı anda hem sola hem de sağa (veya yukarı ve aşağı) yönlere basma / hızlı değiştirme / tutma imkanı sağlar. Bu harekete dayalı hatalara neden olabilir.",
{
{ "disabled", NULL },
{ "enabled", NULL },
{ NULL, NULL },
},
"disabled"
},
{
"snes9x_overclock_superfx",
"SuperFX Hız Aşırtma",
"SuperFX işlemcisi frekans çarpanıdır. Kare hızını artırabilir veya zamanlama hatalarına neden olabilir. % 100'ün altındaki değerler yavaş cihazlarda oyun performansını artırabilir.",
{
{ "50%", NULL },
{ "60%", NULL },
{ "70%", NULL },
{ "80%", NULL },
{ "90%", NULL },
{ "100%", NULL },
{ "150%", NULL },
{ "200%", NULL },
{ "250%", NULL },
{ "300%", NULL },
{ "350%", NULL },
{ "400%", NULL },
{ "450%", NULL },
{ "500%", NULL },
{ NULL, NULL},
},
"100%"
},
{
"snes9x_overclock_cycles",
"Yavaşlamayı Azalt (Hack, Güvensiz)",
"SNES İşlemcisi için hız aşırtmadır. Oyunların çökmesine neden olabilir! Daha kısa yükleme süreleri için 'Hafif'i, yavaşlama gösteren oyunların çoğunda' Uyumlu 've yalnızca kesinlikle gerekliyse' Maks 'kullanın (Gradius 3, Süper R tipi ...).",
{
{ "disabled", NULL },
{ "light", "Hafif" },
{ "compatible", "Uyumlu" },
{ "max", "Maks" },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_reduce_sprite_flicker",
"Kırılmayı Azalt (Hack, Güvensiz)",
"Ekranda aynı anda çizilebilen sprite sayısını arttırır.",
{
{ "disabled", NULL },
{ "enabled", NULL },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_randomize_memory",
"Belleği Rastgele Kıl (Güvensiz)",
"Başlatıldığında sistem RAM'ını rastgele ayarlar. 'Super Off Road' gibi bazı oyunlar, oyunu daha öngörülemeyen hale getirmek için öğe yerleştirme ve AI davranışı için rastgele sayı üreticisi olarak sistem RAM'ini kullanır.",
{
{ "disabled", NULL },
{ "enabled", NULL },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_block_invalid_vram_access",
"Geçersiz VRAM Erişimini Engelle",
"Bazı Homebrew/ROM'lar, doğru işlem için bu seçeneğin devre dışı bırakılmasını gerektirir.",
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_echo_buffer_hack",
"Eko Tampon Hack (Güvenli değil, yalnızca eski addmusic için etkinleştirin)",
"Bazı Homebrew/ROM'lar, doğru işlem için bu seçeneğin devre dışı bırakılmasını gerektirir.",
{
{ "disabled", NULL },
{ "enabled", NULL },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_show_lightgun_settings",
"Light Gun Ayarlarını Göster",
"Super Scope / Justifier / M.A.C.S. için tüfek girişi yapılandırmasını etkinleştir. NOT: Bu ayarın etkili olabilmesi için Hızlı Menünün açılması gerekir.",
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_lightgun_mode",
"Light Gun Modu",
"Fare kontrollü 'Light Gun' veya 'Dokunmatik Ekran' girişini kullanın.",
{
{ "Lightgun", "Light Gun" },
{ "Touchscreen", "Dokunmatik Ekran" },
{ NULL, NULL},
},
"Lightgun"
},
{
"snes9x_superscope_reverse_buttons",
"Super Scope Ters Tetik Düğmeleri",
"Süper Scope için 'Ateş' ve 'İmleç' butonlarının pozisyonlarını değiştir.",
{
{ "disabled", NULL },
{ "enabled", NULL },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_superscope_crosshair",
"Super Scope İmkeç",
"Ekrandaki imleç işaretini değiştirin.",
{
{ "0", NULL },
{ "1", NULL },
{ "2", NULL },
{ "3", NULL },
{ "4", NULL },
{ "5", NULL },
{ "6", NULL },
{ "7", NULL },
{ "8", NULL },
{ "9", NULL },
{ "10", NULL },
{ "11", NULL },
{ "12", NULL },
{ "13", NULL },
{ "14", NULL },
{ "15", NULL },
{ "16", NULL },
{ NULL, NULL},
},
"2"
},
{
"snes9x_superscope_color",
"Super Scope Rengi",
"Ekrandaki imleç işaretinin rengini değiştirin.",
{
{ "White", NULL },
{ "White (blend)", NULL },
{ "Red", NULL },
{ "Red (blend)", NULL },
{ "Orange", NULL },
{ "Orange (blend)", NULL },
{ "Yellow", NULL },
{ "Yellow (blend)", NULL },
{ "Green", NULL },
{ "Green (blend)", NULL },
{ "Cyan", NULL },
{ "Cyan (blend)", NULL },
{ "Sky", NULL },
{ "Sky (blend)", NULL },
{ "Blue", NULL },
{ "Blue (blend)", NULL },
{ "Violet", NULL },
{ "Violet (blend)", NULL },
{ "Pink", NULL },
{ "Pink (blend)", NULL },
{ "Purple", NULL },
{ "Purple (blend)", NULL },
{ "Black", NULL },
{ "Black (blend)", NULL },
{ "25% Grey", NULL },
{ "25% Grey (blend)", NULL },
{ "50% Grey", NULL },
{ "50% Grey (blend)", NULL },
{ "75% Grey", NULL },
{ "75% Grey (blend)", NULL },
{ NULL, NULL},
},
"White"
},
{
"snes9x_justifier1_crosshair",
"Justifier 1 İmleci",
"Ekrandaki imleç işaretinin boyutunu değiştirin.",
{
{ "0", NULL },
{ "1", NULL },
{ "2", NULL },
{ "3", NULL },
{ "4", NULL },
{ "5", NULL },
{ "6", NULL },
{ "7", NULL },
{ "8", NULL },
{ "9", NULL },
{ "10", NULL },
{ "11", NULL },
{ "12", NULL },
{ "13", NULL },
{ "14", NULL },
{ "15", NULL },
{ "16", NULL },
{ NULL, NULL},
},
"4"
},
{
"snes9x_justifier1_color",
"Justifier 1 Rengi",
"Ekrandaki imleç işaretinin rengini değiştirin.",
{
{ "Blue", NULL },
{ "Blue (blend)", NULL },
{ "Violet", NULL },
{ "Violet (blend)", NULL },
{ "Pink", NULL },
{ "Pink (blend)", NULL },
{ "Purple", NULL },
{ "Purple (blend)", NULL },
{ "Black", NULL },
{ "Black (blend)", NULL },
{ "25% Grey", NULL },
{ "25% Grey (blend)", NULL },
{ "50% Grey", NULL },
{ "50% Grey (blend)", NULL },
{ "75% Grey", NULL },
{ "75% Grey (blend)", NULL },
{ "White", NULL },
{ "White (blend)", NULL },
{ "Red", NULL },
{ "Red (blend)", NULL },
{ "Orange", NULL },
{ "Orange (blend)", NULL },
{ "Yellow", NULL },
{ "Yellow (blend)", NULL },
{ "Green", NULL },
{ "Green (blend)", NULL },
{ "Cyan", NULL },
{ "Cyan (blend)", NULL },
{ "Sky", NULL },
{ "Sky (blend)", NULL },
{ NULL, NULL},
},
"Blue"
},
{
"snes9x_justifier2_crosshair",
"Justifier 2 İmleci",
"Ekrandaki imleç işaretinin boyutunu değiştirin.",
{
{ "0", NULL },
{ "1", NULL },
{ "2", NULL },
{ "3", NULL },
{ "4", NULL },
{ "5", NULL },
{ "6", NULL },
{ "7", NULL },
{ "8", NULL },
{ "9", NULL },
{ "10", NULL },
{ "11", NULL },
{ "12", NULL },
{ "13", NULL },
{ "14", NULL },
{ "15", NULL },
{ "16", NULL },
{ NULL, NULL},
},
"4"
},
{
"snes9x_justifier2_color",
"Justifier 2 REngi",
"Ekrandaki imleç işaretinin rengini değiştirin.",
{
{ "Pink", NULL },
{ "Pink (blend)", NULL },
{ "Purple", NULL },
{ "Purple (blend)", NULL },
{ "Black", NULL },
{ "Black (blend)", NULL },
{ "25% Grey", NULL },
{ "25% Grey (blend)", NULL },
{ "50% Grey", NULL },
{ "50% Grey (blend)", NULL },
{ "75% Grey", NULL },
{ "75% Grey (blend)", NULL },
{ "White", NULL },
{ "White (blend)", NULL },
{ "Red", NULL },
{ "Red (blend)", NULL },
{ "Orange", NULL },
{ "Orange (blend)", NULL },
{ "Yellow", NULL },
{ "Yellow (blend)", NULL },
{ "Green", NULL },
{ "Green (blend)", NULL },
{ "Cyan", NULL },
{ "Cyan (blend)", NULL },
{ "Sky", NULL },
{ "Sky (blend)", NULL },
{ "Blue", NULL },
{ "Blue (blend)", NULL },
{ "Violet", NULL },
{ "Violet (blend)", NULL },
{ NULL, NULL},
},
"Pink"
},
{
"snes9x_rifle_crosshair",
"M.A.C.S. Tüfek ",
"Ekrandaki imleç işaretinin rengini değiştirin..",
{
{ "0", NULL },
{ "1", NULL },
{ "2", NULL },
{ "3", NULL },
{ "4", NULL },
{ "5", NULL },
{ "6", NULL },
{ "7", NULL },
{ "8", NULL },
{ "9", NULL },
{ "10", NULL },
{ "11", NULL },
{ "12", NULL },
{ "13", NULL },
{ "14", NULL },
{ "15", NULL },
{ "16", NULL },
{ NULL, NULL},
},
"2"
},
{
"snes9x_rifle_color",
"M.A.C.S. Tüfek Rengi",
"Ekrandaki imleç işaretinin rengini değiştirin.",
{
{ "White", NULL },
{ "White (blend)", NULL },
{ "Red", NULL },
{ "Red (blend)", NULL },
{ "Orange", NULL },
{ "Orange (blend)", NULL },
{ "Yellow", NULL },
{ "Yellow (blend)", NULL },
{ "Green", NULL },
{ "Green (blend)", NULL },
{ "Cyan", NULL },
{ "Cyan (blend)", NULL },
{ "Sky", NULL },
{ "Sky (blend)", NULL },
{ "Blue", NULL },
{ "Blue (blend)", NULL },
{ "Violet", NULL },
{ "Violet (blend)", NULL },
{ "Pink", NULL },
{ "Pink (blend)", NULL },
{ "Purple", NULL },
{ "Purple (blend)", NULL },
{ "Black", NULL },
{ "Black (blend)", NULL },
{ "25% Grey", NULL },
{ "25% Grey (blend)", NULL },
{ "50% Grey", NULL },
{ "50% Grey (blend)", NULL },
{ "75% Grey", NULL },
{ "75% Grey (blend)", NULL },
{ NULL, NULL},
},
"White"
},
{
"snes9x_show_advanced_av_settings",
"Gelişmiş Ses/Video Ayarlarını Göster",
"Düşük seviye video katmanı / GFX etkisi / ses kanalı parametrelerinin yapılandırılmasını etkinleştirir. NOT: Bu ayarın etkili olabilmesi için Hızlı Menünün açılması gerekir.",
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"disabled"
},
{
"snes9x_layer_1",
"1. Katmanı Göster",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_layer_2",
"2. Katmanı Göster",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_layer_3",
"3. Katmanı Göster",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_layer_4",
"4. Katmanı Göster",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_layer_5",
"Sprite Katmanını Göster",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_gfx_clip",
"Grafik Klibi Pencerelerini Etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_gfx_transp",
"Saydamlık Efektlerini Etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_1",
"Ses Kanalı 1'i etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_2",
"Ses Kanalı 2'yi etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_3",
"Ses Kanalı 3'ü etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_4",
"Ses Kanalı 4'ü etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_5",
"Ses Kanalı 5'i etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_6",
"Ses Kanalı 6'yı etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_7",
"Ses Kanalı 7'yi etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{
"snes9x_sndchan_8",
"Ses Kanalı 8'i etkinleştir",
NULL,
{
{ "enabled", NULL },
{ "disabled", NULL },
{ NULL, NULL},
},
"enabled"
},
{ NULL, NULL, NULL, {{0}}, NULL },
};
#ifdef __cplusplus
}
#endif
#endif