Backport GPU Unai plugin from PCSX4ALL
[pcsx_rearmed.git] / frontend / libretro_core_options.h
1 #ifndef LIBRETRO_CORE_OPTIONS_H__
2 #define LIBRETRO_CORE_OPTIONS_H__
3
4 #include <stdlib.h>
5 #include <string.h>
6
7 #include <libretro.h>
8 #include <retro_inline.h>
9
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13
14 /*
15  ********************************
16  * Core Option Definitions
17  ********************************
18 */
19
20 /* RETRO_LANGUAGE_ENGLISH */
21
22 /* Default language:
23  * - All other languages must include the same keys and values
24  * - Will be used as a fallback in the event that frontend language
25  *   is not available
26  * - Will be used as a fallback for any missing entries in
27  *   frontend language definition
28  */
29
30 #ifdef HAVE_PRE_ARMV7
31 #define PSX_CLOCK_DEFAULT "50"
32 #define PSX_CLOCK_LABEL "Overclock or underclock the PSX clock. Default is 50"
33 #else
34 #define PSX_CLOCK_DEFAULT "57"
35 #define PSX_CLOCK_LABEL "Overclock or underclock the PSX clock. Default is 57"
36 #endif
37
38 struct retro_core_option_definition option_defs_us[] = {
39    {
40       "pcsx_rearmed_frameskip",
41       "Frameskip",
42       "Choose how much frames should be skipped to improve performance at the expense of visual smoothness.",
43       {
44          { "0", NULL },
45          { "1", NULL },
46          { "2", NULL },
47          { "3", NULL },
48          { NULL, NULL},
49       },
50       "0",
51    },
52    {
53       "pcsx_rearmed_bios",
54       "Use BIOS",
55       "Allows you to use real bios file (if available) or emulated bios (HLE). Its recommended to use official bios file for better compatibility.",
56       {
57          { "auto", "auto" },
58          { "HLE", "hle" },
59          { NULL, NULL},
60       },
61       "auto",
62    },
63    {
64       "pcsx_rearmed_region",
65       "Region",
66       "Choose what region the system is from. 60 Hz for NTSC, 50 Hz for PAL.",
67       {
68          { "auto", "auto" },
69          { "NTSC", "ntsc" },
70          { "PAL", "pal" },
71          { NULL, NULL},
72       },
73       "auto",
74    },
75    {
76       "pcsx_rearmed_memcard2",
77       "Enable Second Memory Card (Shared)",
78       "Enabled the memory card slot 2. This memory card is shared amongst all games.",
79       {
80          { "disable",  NULL },
81          { "enabled",  NULL },
82          { NULL, NULL},
83       },
84       "disable",
85    },
86    {
87       "pcsx_rearmed_pad1type",
88       "Pad 1 Type",
89       "Pad type for player 1",
90       {
91          { "standard", NULL },
92          { "analog", NULL },
93          { "dualshock", NULL },
94          { "negcon", NULL },
95          { "none", NULL },
96          { NULL, NULL},
97       },
98       "standard",
99    },
100    {
101       "pcsx_rearmed_pad2type",
102       "Pad 2 Type",
103       "Pad type for player 2",
104       {
105          { "standard", NULL },
106          { "analog", NULL },
107          { "dualshock", NULL },
108          { "negcon", NULL },
109          { "none", NULL },
110          { NULL, NULL},
111       },
112       "standard",
113    },
114    {
115       "pcsx_rearmed_pad3type",
116       "Pad 3 Type",
117       "Pad type for player 3",
118       {
119          { "standard", NULL },
120          { "analog", NULL },
121          { "dualshock", NULL },
122          { "negcon", NULL },
123          { "none", NULL },
124          { NULL, NULL},
125       },
126       "none",
127    },
128    {
129       "pcsx_rearmed_pad4type",
130       "Pad 4 Type",
131       "Pad type for player 4",
132       {
133          { "standard", NULL },
134          { "analog", NULL },
135          { "dualshock", NULL },
136          { "negcon", NULL },
137          { "none", NULL },
138          { NULL, NULL},
139       },
140       "none",
141    },
142    {
143       "pcsx_rearmed_pad5type",
144       "Pad 5 Type",
145       "Pad type for player 5",
146       {
147          { "standard", NULL },
148          { "analog",  NULL },
149          { "dualshock", NULL },
150          { "negcon", NULL },
151          { "none", NULL },
152          { NULL, NULL},
153       },
154       "none",
155    },{
156       "pcsx_rearmed_pad6type",
157       "Pad 6 Type",
158       "Pad type for player 6",
159       {
160          { "standard", NULL },
161          { "analog",  NULL },
162          { "dualshock", NULL },
163          { "negcon", NULL },
164          { "none", NULL },
165          { NULL, NULL},
166       },
167       "none",
168    },{
169       "pcsx_rearmed_pad7type",
170       "Pad 7 Type",
171       "Pad type for player 7",
172       {
173          { "standard", NULL },
174          { "analog",  NULL },
175          { "dualshock", NULL },
176          { "negcon", NULL },
177          { "none", NULL },
178          { NULL, NULL},
179       },
180       "none",
181    },{
182       "pcsx_rearmed_pad8type",
183       "Pad 8 Type",
184       "Pad type for player 8",
185       {
186          { "standard", NULL },
187          { "analog",  NULL },
188          { "dualshock", NULL },
189          { "negcon", NULL },
190          { "none", NULL },
191          { NULL, NULL},
192       },
193       "none",
194    },
195    {
196       "pcsx_rearmed_multitap1",
197       "Multitap 1",
198       "Enables/Disables multitap on port 1, allowing upto 5 players in games that permit it.",
199       {
200          { "auto", NULL },
201          { "disabled", NULL },
202          { "enabled",  NULL },
203          { NULL, NULL},
204       },
205       "auto",
206    },
207    {
208       "pcsx_rearmed_multitap2",
209       "Multitap 2",
210       "Enables/Disables multitap on port 2, allowing up to 8 players in games that permit it. Multitap 1 has to be enabled for this to work.",
211       {
212          { "auto", NULL },
213          { "disabled",  NULL },
214          { "enabled",   NULL },
215          { NULL, NULL},
216       },
217       "auto",
218    },
219    {
220       "pcsx_rearmed_negcon_deadzone",
221       "NegCon Twist Deadzone (Percent)",
222       "Sets the deadzone of the RetroPad left analog stick when simulating the 'twist' action of emulated neGcon Controllers. Used to eliminate drift/unwanted input.",
223       {
224          { "0",  NULL },
225          { "5",  NULL },
226          { "10", NULL },
227          { "15", NULL },
228          { "20", NULL },
229          { "25", NULL },
230          { "30", NULL },
231          { NULL, NULL},
232       },
233       "0",
234    },
235    {
236       "pcsx_rearmed_negcon_response",
237       "NegCon Twist Response",
238       "Specifies the analog response when using a RetroPad left analog stick to simulate the 'twist' action of emulated neGcon Controllers.",
239       {
240          { "linear", NULL },
241          { "quadratic", NULL },
242          { "cubic", NULL },
243          { NULL, NULL},
244       },
245       "linear",
246    },
247    {
248       "pcsx_rearmed_vibration",
249       "Enable Vibration",
250       "Enables vibration feedback for controllers that supports vibration features.",
251       {
252          { "disabled", NULL },
253          { "enabled",  NULL },
254          { NULL, NULL},
255       },
256       "enabled",
257    },
258    {
259       "pcsx_rearmed_dithering",
260       "Enable Dithering",
261       "If Off, disables the dithering pattern the PSX applies to combat color banding.",
262       {
263          { "disabled", NULL },
264          { "enabled",  NULL },
265          { NULL, NULL},
266       },
267       "enabled",
268    },
269
270 #ifndef DRC_DISABLE
271    {
272       "pcsx_rearmed_drc",
273       "Dynamic Recompiler",
274       "Enables core to use dynamic recompiler or interpreter (slower) CPU instructions.",
275       {
276          { "disabled", NULL },
277          { "enabled",  NULL },
278          { NULL, NULL},
279       },
280       "enabled",
281    },
282    {
283       "pcsx_rearmed_psxclock",
284       "PSX CPU Clock",
285       PSX_CLOCK_LABEL,
286       {
287          { "30", NULL },
288          { "31", NULL },
289          { "32", NULL },
290          { "33", NULL },
291          { "34", NULL },
292          { "35", NULL },
293          { "36", NULL },
294          { "37", NULL },
295          { "38", NULL },
296          { "39", NULL },
297          { "40", NULL },
298          { "41", NULL },
299          { "42", NULL },
300          { "43", NULL },
301          { "44", NULL },
302          { "45", NULL },
303          { "46", NULL },
304          { "47", NULL },
305          { "48", NULL },
306          { "49", NULL },
307          { "50", NULL },
308          { "51", NULL },
309          { "52", NULL },
310          { "53", NULL },
311          { "54", NULL },
312          { "55", NULL },
313          { "56", NULL },
314          { "57", NULL },
315          { "58", NULL },
316          { "59", NULL },
317          { "60", NULL },
318          { "61", NULL },
319          { "62", NULL },
320          { "63", NULL },
321          { "64", NULL },
322          { "65", NULL },
323          { "66", NULL },
324          { "67", NULL },
325          { "68", NULL },
326          { "69", NULL },
327          { "70", NULL },
328          { "71", NULL },
329          { "72", NULL },
330          { "73", NULL },
331          { "74", NULL },
332          { "75", NULL },
333          { "76", NULL },
334          { "77", NULL },
335          { "78", NULL },
336          { "79", NULL },
337          { "80", NULL },
338          { "81", NULL },
339          { "82", NULL },
340          { "83", NULL },
341          { "84", NULL },
342          { "85", NULL },
343          { "86", NULL },
344          { "87", NULL },
345          { "88", NULL },
346          { "89", NULL },
347          { "90", NULL },
348          { "91", NULL },
349          { "92", NULL },
350          { "93", NULL },
351          { "94", NULL },
352          { "95", NULL },
353          { "96", NULL },
354          { "97", NULL },
355          { "98", NULL },
356          { "99", NULL },
357          { "100", NULL },
358          { NULL, NULL},
359       },
360       PSX_CLOCK_DEFAULT,
361    },
362 #endif /* DRC_DISABLE */
363
364 #ifdef __ARM_NEON__
365    {
366       "pcsx_rearmed_neon_interlace_enable",
367       "Enable Interlacing Mode",
368       "Enables fake scanlines effect.",
369       {
370          { "disabled", NULL },
371          { "enabled",  NULL },
372          { NULL, NULL},
373       },
374       "disabled",
375    },
376    {
377       "pcsx_rearmed_neon_enhancement_enable",
378       "Enhanced Resolution (Slow)",
379       "Renders in double resolution at the cost of lower performance.",
380       {
381          { "disabled", NULL },
382          { "enabled",  NULL },
383          { NULL, NULL},
384       },
385       "disabled",
386    },
387    {
388       "pcsx_rearmed_neon_enhancement_no_main",
389       "Enhanced Resolution (Speed Hack)",
390       "Speed hack for Enhanced resolution option (glitches some games).",
391       {
392          { "disabled", NULL },
393          { "enabled",  NULL },
394          { NULL, NULL},
395       },
396       "disabled",
397    },
398 #endif /* __ARM_NEON__ */
399
400    {
401       "pcsx_rearmed_duping_enable",
402       "Frame Duping",
403       "A speedup, redraws/reuses the last frame if there was no new data.",
404       {
405          { "disabled", NULL },
406          { "enabled",  NULL },
407          { NULL, NULL},
408       },
409       "enabled",
410    },
411    {
412       "pcsx_rearmed_display_internal_fps",
413       "Display Internal FPS",
414       "Shows an on-screen frames per second counter when enabled.",
415       {
416          { "disabled", NULL },
417          { "enabled",  NULL },
418          { NULL, NULL},
419       },
420       "disabled",
421    },
422
423    /* GPU PEOPS OPTIONS */
424 #ifdef GPU_PEOPS
425    {
426       "pcsx_rearmed_show_gpu_peops_settings",
427       "Advanced GPU P.E.Op.S. Settings",
428       "Shows or hides advanced GPU plugin settings. NOTE: Quick Menu must be toggled for this setting to take effect.",
429       {
430          { "disabled", NULL },
431          { "enabled",  NULL },
432          { NULL, NULL},
433       },
434       "disabled",
435    },
436    {
437       "pcsx_rearmed_gpu_peops_fix_0",
438       "(GPU) Odd/Even Bit Hack",
439       "Needed for Chrono Cross.",
440       {
441          { "disabled", NULL },
442          { "enabled",  NULL },
443          { NULL, NULL},
444       },
445       "disabled",
446    },
447    {
448       "pcsx_rearmed_gpu_peops_fix_1",
449       "(GPU) Expand Screen Width",
450       "Capcom fighting games",
451       {
452          { "disabled", NULL },
453          { "enabled",  NULL },
454          { NULL, NULL},
455       },
456       "disabled",
457    },
458    {
459       "pcsx_rearmed_gpu_peops_fix_2",
460       "(GPU) Ignore Brightness Color",
461       "Black screens in Lunar Silver Star Story games",
462       {
463          { "disabled", NULL },
464          { "enabled",  NULL },
465          { NULL, NULL},
466       },
467       "disabled",
468    },
469    {
470       "pcsx_rearmed_gpu_peops_fix_3",
471       "(GPU) Disable Coordinate Check",
472       "Compatibility mode",
473       {
474          { "disabled", NULL },
475          { "enabled",  NULL },
476          { NULL, NULL},
477       },
478       "disabled",
479    },
480    {
481       "pcsx_rearmed_gpu_peops_fix_6",
482       "(GPU) Lazy Screen Update",
483       "Pandemonium 2",
484       {
485          { "disabled", NULL },
486          { "enabled",  NULL },
487          { NULL, NULL},
488       },
489       "disabled",
490    },
491    {
492       "pcsx_rearmed_gpu_peops_fix_7",
493       "(GPU) Old Frame Skipping",
494       "Skip every second frame",
495       {
496          { "disabled", NULL },
497          { "enabled",  NULL },
498          { NULL, NULL},
499       },
500       "enabled",
501    },
502    {
503       "pcsx_rearmed_gpu_peops_fix_8",
504       "(GPU) Repeated Flat Tex Triangles",
505       "Needed by Star Wars: Dark Forces",
506       {
507          { "disabled", NULL },
508          { "enabled",  NULL },
509          { NULL, NULL},
510       },
511       "disabled",
512    },
513    {
514       "pcsx_rearmed_gpu_peops_fix_9",
515       "(GPU) Draw Quads with Triangles",
516       "Better g-colors, worse textures",
517       {
518          { "disabled", NULL },
519          { "enabled",  NULL },
520          { NULL, NULL},
521       },
522       "disabled",
523    },
524    {
525       "pcsx_rearmed_gpu_peops_fix_10",
526       "(GPU) Fake 'Gpu Busy' States",
527       "Toggle busy flags after drawing",
528       {
529          { "disabled", NULL },
530          { "enabled",  NULL },
531          { NULL, NULL},
532       },
533       "disabled",
534    },
535 #endif
536
537     /* GPU UNAI Advanced Options */
538 #ifdef GPU_UNAI
539    {
540       "pcsx_rearmed_show_gpu_unai_settings",
541       "Advance GPU UNAI/PCSX4All Settings",
542       "Shows or hides advanced gpu settings. A core restart might be needed for settings to take effect. NOTE: Quick Menu must be toggled for this setting to take effect.",
543       {
544          { "disabled", NULL },
545          { "enabled",  NULL },
546          { NULL, NULL},
547       },
548       "disabled",
549    },
550    {
551       "pcsx_rearmed_gpu_unai_blending",
552       "(GPU) Enable Blending",
553       NULL,
554       {
555          { "disabled", NULL },
556          { "enabled",  NULL },
557          { NULL, NULL},
558       },
559       "enabled",
560    },
561    {
562       "pcsx_rearmed_gpu_unai_lighting",
563       "(GPU) Enable Lighting",
564       NULL,
565       {
566          { "disabled", NULL },
567          { "enabled",  NULL },
568          { NULL, NULL},
569       },
570       "enabled",
571    },
572    {
573       "pcsx_rearmed_gpu_unai_fast_lighting",
574       "(GPU) Enable Fast Lighting",
575       NULL,
576       {
577          { "disabled", NULL },
578          { "enabled",  NULL },
579          { NULL, NULL},
580       },
581       "enabled",
582    },
583    {
584       "pcsx_rearmed_gpu_unai_ilace_force",
585       "(GPU) Enable Forced Interlace",
586       NULL,
587       {
588          { "disabled", NULL },
589          { "enabled",  NULL },
590          { NULL, NULL},
591       },
592       "disabled",
593    },
594    {
595       "pcsx_rearmed_gpu_unai_pixel_skip",
596       "(GPU) Enable Pixel Skip",
597       NULL,
598       {
599          { "disabled", NULL },
600          { "enabled",  NULL },
601          { NULL, NULL},
602       },
603       "disabled",
604    },
605 #endif /* GPU UNAI Advanced Settings */
606
607    {
608       "pcsx_rearmed_show_bios_bootlogo",
609       "Show Bios Bootlogo",
610       "When enabled, shows the PlayStation logo when starting or resetting. (Breaks some games).",
611       {
612          { "disabled", NULL },
613          { "enabled",  NULL },
614          { NULL, NULL},
615       },
616       "disabled",
617    },
618    {
619       "pcsx_rearmed_spu_reverb",
620       "Sound Reverb",
621       "Enables or disables audio reverb effect.",
622       {
623          { "disabled", NULL },
624          { "enabled",  NULL },
625          { NULL, NULL},
626       },
627       "enabled",
628    },
629    {
630       "pcsx_rearmed_spu_interpolation",
631       "Sound Interpolation",
632       NULL,
633       {
634          { "simple", NULL },
635          { "gaussian", NULL },
636          { "cubic", NULL },
637          { "off", NULL },
638          { NULL, NULL},
639       },
640       "simple",
641    },
642    {
643       "pcsx_rearmed_idiablofix",
644       "Diablo Music Fix",
645       NULL,
646       {
647          { "disabled", NULL },
648          { "enabled",  NULL },
649          { NULL, NULL},
650       },
651       "disabled",
652    },
653    {
654       "pcsx_rearmed_pe2_fix",
655       "Parasite Eve 2/Vandal Hearts 1/2 Fix",
656       NULL,
657       {
658          { "disabled", NULL },
659          { "enabled",  NULL },
660          { NULL, NULL},
661       },
662       "disabled",
663    },
664    {
665       "pcsx_rearmed_inuyasha_fix",
666       "InuYasha Sengoku Battle Fix",
667       NULL,
668       {
669          { "disabled", NULL },
670          { "enabled",  NULL },
671          { NULL, NULL},
672       },
673       "disabled",
674    },
675
676    /* ADVANCED OPTIONS */
677    {
678       "pcsx_rearmed_noxadecoding",
679       "XA Decoding",
680       NULL,
681       {
682          { "disabled", NULL },
683          { "enabled",  NULL },
684          { NULL, NULL},
685       },
686       "enabled",
687    },
688    {
689       "pcsx_rearmed_nocdaudio",
690       "CD Audio",
691       NULL,
692       {
693          { "disabled", NULL },
694          { "enabled",  NULL },
695          { NULL, NULL},
696       },
697       "enabled",
698    },
699
700 #ifndef DRC_DISABLE
701    {
702       "pcsx_rearmed_nosmccheck",
703       "(Speed Hack) Disable SMC Checks",
704       "Will cause crashes when loading, break memcards.",
705       {
706          { "disabled", NULL },
707          { "enabled",  NULL },
708          { NULL, NULL},
709       },
710       "disabled",
711    },
712    {
713       "pcsx_rearmed_gteregsunneeded",
714       "(Speed Hack) Assume GTE Regs Unneeded",
715       "May cause graphical glitches.",
716       {
717          { "disabled", NULL },
718          { "enabled",  NULL },
719          { NULL, NULL},
720       },
721       "disabled",
722    },
723    {
724       "pcsx_rearmed_nogteflags",
725       "(Speed Hack) Disable GTE Flags",
726       "Will cause graphical glitches.",
727       {
728          { "disabled", NULL },
729          { "enabled",  NULL },
730          { NULL, NULL},
731       },
732       "disabled",
733    },
734 #endif /* DRC_DISABLE */
735
736    { NULL, NULL, NULL, { {0} }, NULL },
737 };
738
739 /* RETRO_LANGUAGE_JAPANESE */
740
741 /* RETRO_LANGUAGE_FRENCH */
742
743 /* RETRO_LANGUAGE_SPANISH */
744
745 /* RETRO_LANGUAGE_GERMAN */
746
747 /* RETRO_LANGUAGE_ITALIAN */
748
749 /* RETRO_LANGUAGE_DUTCH */
750
751 /* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */
752
753 /* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */
754
755 /* RETRO_LANGUAGE_RUSSIAN */
756
757 /* RETRO_LANGUAGE_KOREAN */
758
759 /* RETRO_LANGUAGE_CHINESE_TRADITIONAL */
760
761 /* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */
762
763 /* RETRO_LANGUAGE_ESPERANTO */
764
765 /* RETRO_LANGUAGE_POLISH */
766
767 /* RETRO_LANGUAGE_VIETNAMESE */
768
769 /* RETRO_LANGUAGE_ARABIC */
770
771 /* RETRO_LANGUAGE_GREEK */
772
773 /* RETRO_LANGUAGE_TURKISH */
774
775 struct retro_core_option_definition option_defs_tr[] = {
776    {
777       "pcsx_rearmed_frameskip",
778       "Kare Atlama",
779       "Görsel pürüzsüzlük pahasına performansı artırmak için ne kadar karenin atlanması gerektiÄŸini seçin.",
780       {
781          { NULL, NULL },
782       },
783       NULL
784    },
785    {
786       "pcsx_rearmed_bios",
787       "BIOS Kullan",
788       "Gerçek bios dosyasını (varsa) veya Ã¶ykünmüş bios'u (HLE) kullanmanızı saÄŸlar. Daha iyi uyumluluk için resmi bios dosyasını kullanmanız Ã¶nerilir.",
789       {
790          { "auto", "otomatik" },
791          { "HLE", "hle" },
792          { NULL, NULL},
793       },
794       "auto",
795    },
796    {
797       "pcsx_rearmed_region",
798       "Bölge",
799       "Sistemin hangi bölgeden olduÄŸunu seçin. NTSC için 60 Hz, PAL için 50 Hz.",
800       {
801          { "auto", "otomatik" },
802          { "NTSC", "ntsc" },
803          { "PAL", "pal" },
804          { NULL, NULL},
805       },
806       "auto",
807    },
808    {
809       "pcsx_rearmed_memcard2",
810       "Ä°kinci Bellek Kartını EtkinleÅŸtir (Paylaşılan)",
811       "2. Hafıza kartı yuvasını etkinleÅŸtirin. Bu hafıza kartı tüm oyunlar arasında paylaşılır.",
812       {
813          { NULL, NULL },
814       },
815       NULL
816    },
817    {
818       "pcsx_rearmed_pad1type",
819       "Kumanda 1 Tipi",
820       "1. Oyuncu için kontrolör tipi",
821       {
822          { "standard", NULL },
823          { "analog", NULL },
824          { "dualshock", NULL },
825          { "negcon", NULL },
826          { "none", "hiçbiri" },
827          { NULL, NULL},
828       },
829       "standard",
830    },
831    {
832       "pcsx_rearmed_pad2type",
833       "Kumanda 2 Tipi",
834       "2. Oyuncu için kontrolör tipi",
835       {
836          { "standard", NULL },
837          { "analog", NULL },
838          { "dualshock", NULL },
839          { "negcon", NULL },
840          { "none", "hiçbiri" },
841          { NULL, NULL},
842       },
843       "standard",
844    },
845    {
846       "pcsx_rearmed_pad3type",
847       "Kumanda 3 Tipi",
848       "3. Oyuncu için kontrolör tipi",
849       {
850          { "standard", NULL },
851          { "analog", NULL },
852          { "dualshock", NULL },
853          { "negcon", NULL },
854          { "none", "hiçbiri" },
855          { NULL, NULL},
856       },
857       "none",
858    },
859    {
860       "pcsx_rearmed_pad4type",
861       "Kumanda 4 Tipi",
862       "4. Oyuncu için kontrolör tipi",
863       {
864          { "standard", NULL },
865          { "analog", NULL },
866          { "dualshock", NULL },
867          { "negcon", NULL },
868          { "none", "hiçbiri" },
869          { NULL, NULL},
870       },
871       "none",
872    },
873    {
874       "pcsx_rearmed_pad5type",
875       "Kumanda 5 Tipi",
876       "5. Oyuncu için kontrolör tipi",
877       {
878          { "standard", NULL },
879          { "analog",  NULL },
880          { "dualshock", NULL },
881          { "negcon", NULL },
882          { "none", "hiçbiri" },
883          { NULL, NULL},
884       },
885       "none",
886    },{
887       "pcsx_rearmed_pad6type",
888       "Kumanda 6 Tipi",
889       "6. Oyuncu için kontrolör tipi",
890       {
891          { "standard", NULL },
892          { "analog",  NULL },
893          { "dualshock", NULL },
894          { "negcon", NULL },
895          { "none", "hiçbiri" },
896          { NULL, NULL},
897       },
898       "none",
899    },{
900       "pcsx_rearmed_pad7type",
901       "Kumanda 7 Tipi",
902       "7. Oyuncu için kontrolör tipi",
903       {
904          { "standard", NULL },
905          { "analog",  NULL },
906          { "dualshock", NULL },
907          { "negcon", NULL },
908          { "none", "hiçbiri" },
909          { NULL, NULL},
910       },
911       "none",
912    },{
913       "pcsx_rearmed_pad8type",
914       "Kumanda 8 Tipi",
915       "8. Oyuncu için kontrolör tipi",
916       {
917          { "standard", NULL },
918          { "analog",  NULL },
919          { "dualshock", NULL },
920          { "negcon", NULL },
921          { "none", "hiçbiri" },
922          { NULL, NULL},
923       },
924       "none",
925    },
926    {
927       "pcsx_rearmed_multitap1",
928       "Multitap 1",
929       "BaÄŸlantı noktası 1'deki multitap'ı etkinleÅŸtirir / devre dışı bırakır ve izin veren oyunlarda 5 oyuncuya kadar izin verir.",
930       {
931          { "auto", "otomatik" },
932          { "disabled", NULL },
933          { "enabled",  NULL },
934          { NULL, NULL},
935       },
936       "auto",
937    },
938    {
939       "pcsx_rearmed_multitap2",
940       "Multitap 2",
941       "BaÄŸlantı noktası 2'deki multitap'ı etkinleÅŸtirir/devre dışı bırakır ve izin veren oyunlarda 8 oyuncuya kadar izin verir. Bunun Ã§alışması için Multitap 1'in etkinleÅŸtirilmesi gerekir.",
942       {
943          { "auto", "otomatik" },
944          { "disabled",  NULL },
945          { "enabled",   NULL },
946          { NULL, NULL},
947       },
948       "auto",
949    },
950    {
951       "pcsx_rearmed_negcon_deadzone",
952       "NegCon Twist Deadzone (Yüzdelik)",
953       "Öykünülmüş neGcon kontrolörünün 'büküm' eylemini simüle ederken RetroPad sol analog Ã§ubuÄŸunun Ã¶lü bölgesini ayarlar. Sürüklenme/istenmeyen giriÅŸi ortadan kaldırmak için kullanılır.",
954       {
955          { NULL, NULL },
956       },
957       NULL
958    },
959    {
960       "pcsx_rearmed_negcon_response",
961       "NegCon Twist Response",
962       "Öykünülmüş neGcon kontrolörünün 'bükümünü' simule etmek için bir RetroPad sol analog Ã§ubuÄŸu kullanırken analog cevabını belirtir.",
963       {
964          { NULL, NULL },
965       },
966       NULL
967    },
968    {
969       "pcsx_rearmed_vibration",
970       "TitreÅŸimi EtkinleÅŸtir",
971       "TitreÅŸim Ã¶zelliklerini destekleyen kontrolörler için titreÅŸim geri bildirimini etkinleÅŸtirir.",
972       {
973          { NULL, NULL },
974       },
975       NULL
976    },
977    {
978       "pcsx_rearmed_dithering",
979       "Dithering EtkinleÅŸtir",
980       "Kapalı ise, PSX'in renk bantlarıyla mücadele etmek için uyguladığı renk taklidi düzenini devre dışı bırakır.",
981       {
982          { NULL, NULL },
983       },
984       NULL
985    },
986
987 #ifndef DRC_DISABLE
988    {
989       "pcsx_rearmed_drc",
990       "Dinamik Yeniden Derleyici",
991       "ÇekirdeÄŸin dinamik yeniden derleyici veya tercüman(daha yavaÅŸ) CPU talimatlarını kullanmasını saÄŸlar.",
992       {
993          { NULL, NULL },
994       },
995       NULL
996    },
997    {
998       "pcsx_rearmed_psxclock",
999       "PSX CPU Saat Hızı",
1000       PSX_CLOCK_LABEL,
1001       {
1002          { NULL, NULL },
1003       },
1004       NULL
1005    },
1006 #endif /* DRC_DISABLE */
1007
1008 #ifdef __ARM_NEON__
1009    {
1010       "pcsx_rearmed_neon_interlace_enable",
1011       "Interlacing Mode'u etkinleÅŸtir",
1012       "Sahte tarama Ã§izgileri efektini etkinleÅŸtirir.",
1013       {
1014          { NULL, NULL },
1015       },
1016       NULL
1017    },
1018    {
1019       "pcsx_rearmed_neon_enhancement_enable",
1020       "GeliÅŸtirilmiÅŸ Ã‡Ã¶zünürlük (YavaÅŸ)",
1021       "Düşük performans pahasına Ã§ift Ã§Ã¶zünürlükte iÅŸler.",
1022       {
1023          { NULL, NULL },
1024       },
1025       NULL
1026    },
1027    {
1028       "pcsx_rearmed_neon_enhancement_no_main",
1029       "GeliÅŸtirilmiÅŸ Ã‡Ã¶zünürlük (Speed Hack)",
1030       "GeliÅŸtirilmiÅŸ Ã§Ã¶zünürlük seçeneÄŸi için hız aşırtma(bazı oyunlarda sorun Ã§Ä±kartabilir).",
1031       {
1032          { NULL, NULL },
1033       },
1034       NULL
1035    },
1036 #endif /* __ARM_NEON__ */
1037
1038    {
1039       "pcsx_rearmed_duping_enable",
1040       "Frame Duping",
1041       "Yeni bir veri yoksa, bir hızlandırma, son kareyi yeniden Ã§izer/yeniden kullanır.",
1042       {
1043          { NULL, NULL },
1044       },
1045       NULL
1046    },
1047    {
1048       "pcsx_rearmed_display_internal_fps",
1049       "Dahili FPS'yi görüntüle",
1050       "EtkinleÅŸtirildiÄŸinde ekranda saniye başına kareyi gösterir.",
1051       {
1052          { NULL, NULL },
1053       },
1054       NULL
1055    },
1056
1057    /* GPU PEOPS OPTIONS */
1058 #ifdef DRC_DISABLE
1059    {
1060       "pcsx_rearmed_show_gpu_peops_settings",
1061       "GeliÅŸmiÅŸ GPU Ayarlarını Göster",
1062       "ÇeÅŸitli GPU düzeltmelerini etkinleÅŸtirin veya devre dışı bırakın. Ayarların etkili olması için core'un yeniden baÅŸlatılması gerekebilir. NOT: Bu ayarın etkili olabilmesi için Hızlı Menü’nün deÄŸiÅŸtirilmesi gerekir.",
1063       {
1064          { NULL, NULL },
1065       },
1066       NULL
1067    },
1068    {
1069       "pcsx_rearmed_gpu_peops_fix_0",
1070       "(GPU) Odd/Even Bit Hack",
1071       "Chrono Cross için gerekli.",
1072       {
1073          { NULL, NULL },
1074       },
1075       NULL
1076    },
1077    {
1078       "pcsx_rearmed_gpu_peops_fix_1",
1079       "(GPU) Ekran GeniÅŸliÄŸini GeniÅŸlet",
1080       "Capcom dövüş oyunları",
1081       {
1082          { NULL, NULL },
1083       },
1084       NULL
1085    },
1086    {
1087       "pcsx_rearmed_gpu_peops_fix_2",
1088       "(GPU) Parlaklık Rengini Yoksay",
1089       "Lunar Silver Star Story oyunlarında siyah ekran",
1090       {
1091          { NULL, NULL },
1092       },
1093       NULL
1094    },
1095    {
1096       "pcsx_rearmed_gpu_peops_fix_3",
1097       "(GPU) Koordinat Kontrolünü Devre Dışı Bırak",
1098       "Uyumluluk modu",
1099       {
1100          { NULL, NULL },
1101       },
1102       NULL
1103    },
1104    {
1105       "pcsx_rearmed_gpu_peops_fix_6",
1106       "(GPU) Tembel Ekran Güncellemesi",
1107       "Pandemonium 2",
1108       {
1109          { NULL, NULL },
1110       },
1111       NULL
1112    },
1113    {
1114       "pcsx_rearmed_gpu_peops_fix_7",
1115       "(GPU) Eski Ã‡erçeve Atlama",
1116       "Her ikinci kareyi atla",
1117       {
1118          { NULL, NULL },
1119       },
1120       NULL
1121    },
1122    {
1123       "pcsx_rearmed_gpu_peops_fix_8",
1124       "(GPU) Tekrarlanan Düz Doku ÃœÃ§genleri",
1125       "Star Wars: Dark Forces için gerekli",
1126       {
1127          { NULL, NULL },
1128       },
1129       NULL
1130    },
1131    {
1132       "pcsx_rearmed_gpu_peops_fix_9",
1133       "(GPU) ÃœÃ§genler ile Dörtlü Ã‡iz",
1134       "Daha iyi g renkler, daha kötü dokular",
1135       {
1136          { NULL, NULL },
1137       },
1138       NULL
1139    },
1140    {
1141       "pcsx_rearmed_gpu_peops_fix_10",
1142       "(GPU) Sahte 'Gpu MeÅŸgul' Konumları",
1143       "Çizimden sonra meÅŸgul bayraklarını deÄŸiÅŸtir",
1144       {
1145          { NULL, NULL },
1146       },
1147       NULL
1148    },
1149 #endif
1150
1151    {
1152       "pcsx_rearmed_show_bios_bootlogo",
1153       "Bios Bootlogo'yu Göster",
1154       "EtkinleÅŸtirildiÄŸinde, baÅŸlatırken veya sıfırlarken PlayStation logosunu gösterir. (Bazı oyunları bozabilir).",
1155       {
1156          { NULL, NULL },
1157       },
1158       NULL
1159    },
1160    {
1161       "pcsx_rearmed_spu_reverb",
1162       "Ses Yankısı",
1163       "Ses yankı efektini etkinleÅŸtirir veya devre dışı bırakır.",
1164       {
1165          { NULL, NULL },
1166       },
1167       NULL
1168    },
1169    {
1170       "pcsx_rearmed_spu_interpolation",
1171       "Ses Enterpolasyonu",
1172       NULL,
1173       {
1174          { NULL, NULL },
1175       },
1176       NULL
1177    },
1178    {
1179       "pcsx_rearmed_idiablofix",
1180       "Diablo Müzik Düzeltmesi",
1181       NULL,
1182       {
1183          { NULL, NULL },
1184       },
1185       NULL
1186    },
1187    {
1188       "pcsx_rearmed_pe2_fix",
1189       "Parasite Eve 2/Vandal Hearts 1/2 Düzeltmleri",
1190       NULL,
1191       {
1192          { NULL, NULL },
1193       },
1194       NULL
1195    },
1196    {
1197       "pcsx_rearmed_inuyasha_fix",
1198       "InuYasha Sengoku Battle Düzeltmesi",
1199       NULL,
1200       {
1201          { NULL, NULL },
1202       },
1203       NULL
1204    },
1205
1206    /* ADVANCED OPTIONS */
1207    {
1208       "pcsx_rearmed_noxadecoding",
1209       "XA Kod Ã‡Ã¶zme",
1210       NULL,
1211       {
1212          { NULL, NULL },
1213       },
1214       NULL
1215    },
1216    {
1217       "pcsx_rearmed_nocdaudio",
1218       "CD Ses",
1219       NULL,
1220       {
1221          { NULL, NULL },
1222       },
1223       NULL
1224    },
1225
1226 #ifndef DRC_DISABLE
1227    {
1228       "pcsx_rearmed_nosmccheck",
1229       "(Speed Hack) SMC Kontrollerini Devre Dışı Bırak",
1230       "Yükleme sırasında Ã§Ã¶kmelere neden olabilir, hafıza kartını bozabilir.",
1231       {
1232          { NULL, NULL },
1233       },
1234       NULL
1235    },
1236    {
1237       "pcsx_rearmed_gteregsunneeded",
1238       "(Speed Hack) GTE'nin Gereksiz OlduÄŸunu Varsayın",
1239       "Grafiksel bozukluklara neden olabilir.",
1240       {
1241          { NULL, NULL },
1242       },
1243       NULL
1244    },
1245    {
1246       "pcsx_rearmed_nogteflags",
1247       "(Speed Hack) GTE Bayraklarını Devredışı Bırakın",
1248       "Grafiksel bozukluklara neden olur.",
1249       {
1250          { NULL, NULL },
1251       },
1252       NULL
1253    },
1254 #endif /* DRC_DISABLE */
1255
1256    { NULL, NULL, NULL, { {0} }, NULL },
1257 };
1258
1259
1260 /*
1261  ********************************
1262  * Language Mapping
1263  ********************************
1264 */
1265
1266 struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = {
1267    option_defs_us, /* RETRO_LANGUAGE_ENGLISH */
1268    NULL,           /* RETRO_LANGUAGE_JAPANESE */
1269    NULL,           /* RETRO_LANGUAGE_FRENCH */
1270    NULL,           /* RETRO_LANGUAGE_SPANISH */
1271    NULL,           /* RETRO_LANGUAGE_GERMAN */
1272    NULL,           /* RETRO_LANGUAGE_ITALIAN */
1273    NULL,           /* RETRO_LANGUAGE_DUTCH */
1274    NULL,           /* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */
1275    NULL,           /* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */
1276    NULL,           /* RETRO_LANGUAGE_RUSSIAN */
1277    NULL,           /* RETRO_LANGUAGE_KOREAN */
1278    NULL,           /* RETRO_LANGUAGE_CHINESE_TRADITIONAL */
1279    NULL,           /* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */
1280    NULL,           /* RETRO_LANGUAGE_ESPERANTO */
1281    NULL,           /* RETRO_LANGUAGE_POLISH */
1282    NULL,           /* RETRO_LANGUAGE_VIETNAMESE */
1283    NULL,           /* RETRO_LANGUAGE_ARABIC */
1284    NULL,           /* RETRO_LANGUAGE_GREEK */
1285    option_defs_tr,  /* RETRO_LANGUAGE_TURKISH */
1286 };
1287
1288 /*
1289  ********************************
1290  * Functions
1291  ********************************
1292 */
1293
1294 /* Handles configuration/setting of core options.
1295  * Should only be called inside retro_set_environment().
1296  * > We place the function body in the header to avoid the
1297  *   necessity of adding more .c files (i.e. want this to
1298  *   be as painless as possible for core devs)
1299  */
1300
1301 static INLINE void libretro_set_core_options(retro_environment_t environ_cb)
1302 {
1303    unsigned version = 0;
1304
1305    if (!environ_cb)
1306       return;
1307
1308    if (environ_cb(RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION, &version) && (version == 1))
1309    {
1310       struct retro_core_options_intl core_options_intl;
1311       unsigned language = 0;
1312
1313       core_options_intl.us    = option_defs_us;
1314       core_options_intl.local = NULL;
1315
1316       if (environ_cb(RETRO_ENVIRONMENT_GET_LANGUAGE, &language) &&
1317           (language < RETRO_LANGUAGE_LAST) && (language != RETRO_LANGUAGE_ENGLISH))
1318          core_options_intl.local = option_defs_intl[language];
1319
1320       environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL, &core_options_intl);
1321    }
1322    else
1323    {
1324       size_t i;
1325       size_t option_index              = 0;
1326       size_t num_options               = 0;
1327       struct retro_variable *variables = NULL;
1328       char **values_buf                = NULL;
1329
1330       /* Determine number of options
1331        * > Note: We are going to skip a number of irrelevant
1332        *   core options when building the retro_variable array,
1333        *   but we'll allocate space for all of them. The difference
1334        *   in resource usage is negligible, and this allows us to
1335        *   keep the code 'cleaner' */
1336       while (true)
1337       {
1338          if (option_defs_us[num_options].key)
1339             num_options++;
1340          else
1341             break;
1342       }
1343
1344       /* Allocate arrays */
1345       variables  = (struct retro_variable *)calloc(num_options + 1, sizeof(struct retro_variable));
1346       values_buf = (char **)calloc(num_options, sizeof(char *));
1347
1348       if (!variables || !values_buf)
1349          goto error;
1350
1351       /* Copy parameters from option_defs_us array */
1352       for (i = 0; i < num_options; i++)
1353       {
1354          const char *key                        = option_defs_us[i].key;
1355          const char *desc                       = option_defs_us[i].desc;
1356          const char *default_value              = option_defs_us[i].default_value;
1357          struct retro_core_option_value *values = option_defs_us[i].values;
1358          size_t buf_len                         = 3;
1359          size_t default_index                   = 0;
1360
1361          values_buf[i] = NULL;
1362
1363          /* Skip options that are irrelevant when using the
1364           * old style core options interface */
1365          if ((strcmp(key, "pcsx_rearmed_show_gpu_peops_settings") == 0))
1366             continue;
1367
1368          if (desc)
1369          {
1370             size_t num_values = 0;
1371
1372             /* Determine number of values */
1373             while (true)
1374             {
1375                if (values[num_values].value)
1376                {
1377                   /* Check if this is the default value */
1378                   if (default_value)
1379                      if (strcmp(values[num_values].value, default_value) == 0)
1380                         default_index = num_values;
1381
1382                   buf_len += strlen(values[num_values].value);
1383                   num_values++;
1384                }
1385                else
1386                   break;
1387             }
1388
1389             /* Build values string */
1390             if (num_values > 1)
1391             {
1392                size_t j;
1393
1394                buf_len += num_values - 1;
1395                buf_len += strlen(desc);
1396
1397                values_buf[i] = (char *)calloc(buf_len, sizeof(char));
1398                if (!values_buf[i])
1399                   goto error;
1400
1401                strcpy(values_buf[i], desc);
1402                strcat(values_buf[i], "; ");
1403
1404                /* Default value goes first */
1405                strcat(values_buf[i], values[default_index].value);
1406
1407                /* Add remaining values */
1408                for (j = 0; j < num_values; j++)
1409                {
1410                   if (j != default_index)
1411                   {
1412                      strcat(values_buf[i], "|");
1413                      strcat(values_buf[i], values[j].value);
1414                   }
1415                }
1416             }
1417          }
1418
1419          variables[option_index].key   = key;
1420          variables[option_index].value = values_buf[i];
1421          option_index++;
1422       }
1423
1424       /* Set variables */
1425       environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, variables);
1426
1427 error:
1428
1429       /* Clean up */
1430       if (values_buf)
1431       {
1432          for (i = 0; i < num_options; i++)
1433          {
1434             if (values_buf[i])
1435             {
1436                free(values_buf[i]);
1437                values_buf[i] = NULL;
1438             }
1439          }
1440
1441          free(values_buf);
1442          values_buf = NULL;
1443       }
1444
1445       if (variables)
1446       {
1447          free(variables);
1448          variables = NULL;
1449       }
1450    }
1451 }
1452
1453 #ifdef __cplusplus
1454 }
1455 #endif
1456
1457 #endif