Revert "libretro: Add support for ps1_rom.bin (PS3 BIOS)"
[pcsx_rearmed.git] / frontend / libretro_core_options.h
... / ...
CommitLineData
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#ifndef HAVE_NO_LANGEXTRA
11#include "libretro_core_options_intl.h"
12#endif
13
14/*
15 ********************************
16 * VERSION: 1.3
17 ********************************
18 *
19 * - 1.3: Move translations to libretro_core_options_intl.h
20 * - libretro_core_options_intl.h includes BOM and utf-8
21 * fix for MSVC 2010-2013
22 * - Added HAVE_NO_LANGEXTRA flag to disable translations
23 * on platforms/compilers without BOM support
24 * - 1.2: Use core options v1 interface when
25 * RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION is >= 1
26 * (previously required RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION == 1)
27 * - 1.1: Support generation of core options v0 retro_core_option_value
28 * arrays containing options with a single value
29 * - 1.0: First commit
30*/
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
36/*
37 ********************************
38 * Core Option Definitions
39 ********************************
40*/
41
42/* RETRO_LANGUAGE_ENGLISH */
43
44/* Default language:
45 * - All other languages must include the same keys and values
46 * - Will be used as a fallback in the event that frontend language
47 * is not available
48 * - Will be used as a fallback for any missing entries in
49 * frontend language definition
50 */
51
52struct retro_core_option_definition option_defs_us[] = {
53 {
54 "pcsx_rearmed_frameskip",
55 "Frameskip",
56 "Choose how much frames should be skipped to improve performance at the expense of visual smoothness.",
57 {
58 { "0", NULL },
59 { "1", NULL },
60 { "2", NULL },
61 { "3", NULL },
62 { NULL, NULL },
63 },
64 "0",
65 },
66 {
67 "pcsx_rearmed_bios",
68 "Use BIOS",
69 "Allows you to use real bios file (if available) or emulated bios (HLE). Its recommended to use official bios file for better compatibility.",
70 {
71 { "auto", "auto" },
72 { "HLE", "hle" },
73 { NULL, NULL },
74 },
75 "auto",
76 },
77 {
78 "pcsx_rearmed_region",
79 "Region",
80 "Choose what region the system is from. 60 Hz for NTSC, 50 Hz for PAL.",
81 {
82 { "auto", "auto" },
83 { "NTSC", "ntsc" },
84 { "PAL", "pal" },
85 { NULL, NULL },
86 },
87 "auto",
88 },
89 {
90 "pcsx_rearmed_memcard2",
91 "Enable Second Memory Card (Shared)",
92 "Enabled the memory card slot 2. This memory card is shared amongst all games.",
93 {
94 { "disabled", NULL },
95 { "enabled", NULL },
96 { NULL, NULL },
97 },
98 "disabled",
99 },
100 {
101 "pcsx_rearmed_show_other_input_settings",
102 "Show other input settings",
103 "Shows or hides other inputs settings like multitaps, player 3-8 ports, analog fine-tunings, etc.",
104 {
105 { "disabled", NULL },
106 { "enabled", NULL },
107 { NULL, NULL },
108 },
109 "disabled",
110 },
111 {
112 "pcsx_rearmed_input_sensitivity",
113 "Emulated Mouse Sensitivity",
114 "Adjust responsiveness when using mouse controller (Default 1.0).",
115 {
116 { "0.05", NULL },
117 { "0.10", NULL },
118 { "0.15", NULL },
119 { "0.20", NULL },
120 { "0.25", NULL },
121 { "0.30", NULL },
122 { "0.35", NULL },
123 { "0.40", NULL },
124 { "0.45", NULL },
125 { "0.50", NULL },
126 { "0.55", NULL },
127 { "0.60", NULL },
128 { "0.65", NULL },
129 { "0.70", NULL },
130 { "0.75", NULL },
131 { "0.80", NULL },
132 { "0.85", NULL },
133 { "0.90", NULL },
134 { "0.95", NULL },
135 { "1.00", NULL },
136 { "1.05", NULL },
137 { "1.10", NULL },
138 { "1.15", NULL },
139 { "1.20", NULL },
140 { "1.25", NULL },
141 { "1.30", NULL },
142 { "1.35", NULL },
143 { "1.40", NULL },
144 { "1.45", NULL },
145 { "1.50", NULL },
146 { "1.55", NULL },
147 { "1.60", NULL },
148 { "1.65", NULL },
149 { "1.70", NULL },
150 { "1.75", NULL },
151 { "1.80", NULL },
152 { "1.85", NULL },
153 { "1.90", NULL },
154 { "1.95", NULL },
155 { "2.00", NULL },
156 },
157 "1.00",
158 },
159 {
160 "pcsx_rearmed_multitap",
161 "Multitap Mode (Restart)",
162 "Sets the playstation multitap peripheral to either controller port 1 or controller port 2 to support of upto 5 players simultaneously, or on both for upto 8 players simultaneously. Option depends on games that has support for multitap feature. Leave option on disabled if not such compatible games to avoid any input-related problems.",
163 {
164 { "disabled", NULL },
165 { "port 1", NULL },
166 { "port 2", NULL },
167 { "ports 1 and 2", NULL },
168 { NULL, NULL },
169 },
170 "disabled",
171 },
172 {
173 "pcsx_rearmed_negcon_deadzone",
174 "NegCon Twist Deadzone (Percent)",
175 "Sets the deadzone of the RetroPad left analog stick when simulating the 'twist' action of emulated neGcon Controllers. Used to eliminate drift/unwanted input.",
176 {
177 { "0", NULL },
178 { "5", NULL },
179 { "10", NULL },
180 { "15", NULL },
181 { "20", NULL },
182 { "25", NULL },
183 { "30", NULL },
184 { NULL, NULL },
185 },
186 "0",
187 },
188 {
189 "pcsx_rearmed_negcon_response",
190 "NegCon Twist Response",
191 "Specifies the analog response when using a RetroPad left analog stick to simulate the 'twist' action of emulated neGcon Controllers.",
192 {
193 { "linear", NULL },
194 { "quadratic", NULL },
195 { "cubic", NULL },
196 { NULL, NULL },
197 },
198 "linear",
199 },
200 {
201 "pcsx_rearmed_analog_axis_modifier",
202 "Analog axis bounds.",
203 "Range bounds for analog axis. Square bounds help controllers with highly circular ranges that are unable to fully saturate the x and y axis at 45degree deflections.",
204 {
205 { "circle", NULL },
206 { "square", NULL },
207 { NULL, NULL },
208 },
209 "circle",
210 },
211 {
212 "pcsx_rearmed_vibration",
213 "Enable Vibration",
214 "Enables vibration feedback for controllers that supports vibration features.",
215 {
216 { "disabled", NULL },
217 { "enabled", NULL },
218 { NULL, NULL },
219 },
220 "enabled",
221 },
222 {
223 "pcsx_rearmed_gunconadjustx",
224 "Guncon Adjust X",
225 "When using Guncon mode, you can override aim in emulator if shots misaligned, this applies an increment on the x axis.",
226 {
227 { "0", NULL },
228 { "-25", NULL },
229 { "-24", NULL },
230 { "-23", NULL },
231 { "-22", NULL },
232 { "-21", NULL },
233 { "-20", NULL },
234 { "-19", NULL },
235 { "-18", NULL },
236 { "-17", NULL },
237 { "-16", NULL },
238 { "-15", NULL },
239 { "-14", NULL },
240 { "-13", NULL },
241 { "-12", NULL },
242 { "-11", NULL },
243 { "-10", NULL },
244 { "-09", NULL },
245 { "-08", NULL },
246 { "-07", NULL },
247 { "-06", NULL },
248 { "-05", NULL },
249 { "-04", NULL },
250 { "-03", NULL },
251 { "-02", NULL },
252 { "-01", NULL },
253 { "00", NULL },
254 { "01", NULL },
255 { "02", NULL },
256 { "03", NULL },
257 { "04", NULL },
258 { "05", NULL },
259 { "06", NULL },
260 { "07", NULL },
261 { "08", NULL },
262 { "09", NULL },
263 { "10", NULL },
264 { "11", NULL },
265 { "12", NULL },
266 { "13", NULL },
267 { "14", NULL },
268 { "15", NULL },
269 { "16", NULL },
270 { "17", NULL },
271 { "18", NULL },
272 { "19", NULL },
273 { "20", NULL },
274 { "21", NULL },
275 { "22", NULL },
276 { "23", NULL },
277 { "24", NULL },
278 { "25", NULL },
279 { NULL, NULL },
280 },
281 "0",
282 },
283 {
284 "pcsx_rearmed_gunconadjusty",
285 "Guncon Adjust Y",
286 "When using Guncon mode, you can override aim in emulator if shots misaligned, this applies an increment on the y axis.",
287 {
288 { "0", NULL },
289 { "-25", NULL },
290 { "-24", NULL },
291 { "-23", NULL },
292 { "-22", NULL },
293 { "-21", NULL },
294 { "-20", NULL },
295 { "-19", NULL },
296 { "-18", NULL },
297 { "-17", NULL },
298 { "-16", NULL },
299 { "-15", NULL },
300 { "-14", NULL },
301 { "-13", NULL },
302 { "-12", NULL },
303 { "-11", NULL },
304 { "-10", NULL },
305 { "-09", NULL },
306 { "-08", NULL },
307 { "-07", NULL },
308 { "-06", NULL },
309 { "-05", NULL },
310 { "-04", NULL },
311 { "-03", NULL },
312 { "-02", NULL },
313 { "-01", NULL },
314 { "00", NULL },
315 { "01", NULL },
316 { "02", NULL },
317 { "03", NULL },
318 { "04", NULL },
319 { "05", NULL },
320 { "06", NULL },
321 { "07", NULL },
322 { "08", NULL },
323 { "09", NULL },
324 { "10", NULL },
325 { "11", NULL },
326 { "12", NULL },
327 { "13", NULL },
328 { "14", NULL },
329 { "15", NULL },
330 { "16", NULL },
331 { "17", NULL },
332 { "18", NULL },
333 { "19", NULL },
334 { "20", NULL },
335 { "21", NULL },
336 { "22", NULL },
337 { "23", NULL },
338 { "24", NULL },
339 { "25", NULL },
340 { NULL, NULL },
341 },
342 "0",
343 },
344 {
345 "pcsx_rearmed_gunconadjustratiox",
346 "Guncon Adjust Ratio X",
347 "When using Guncon mode, you can override aim in emulator if shots misaligned, this applies a ratio on the x axis.",
348 {
349 { "1", NULL },
350 { "0.75", NULL },
351 { "0.76", NULL },
352 { "0.77", NULL },
353 { "0.78", NULL },
354 { "0.79", NULL },
355 { "0.80", NULL },
356 { "0.81", NULL },
357 { "0.82", NULL },
358 { "0.83", NULL },
359 { "0.84", NULL },
360 { "0.85", NULL },
361 { "0.86", NULL },
362 { "0.87", NULL },
363 { "0.88", NULL },
364 { "0.89", NULL },
365 { "0.90", NULL },
366 { "0.91", NULL },
367 { "0.92", NULL },
368 { "0.93", NULL },
369 { "0.94", NULL },
370 { "0.95", NULL },
371 { "0.96", NULL },
372 { "0.97", NULL },
373 { "0.98", NULL },
374 { "0.99", NULL },
375 { "1.00", NULL },
376 { "1.01", NULL },
377 { "1.02", NULL },
378 { "1.03", NULL },
379 { "1.04", NULL },
380 { "1.05", NULL },
381 { "1.06", NULL },
382 { "1.07", NULL },
383 { "1.08", NULL },
384 { "1.09", NULL },
385 { "1.10", NULL },
386 { "1.11", NULL },
387 { "1.12", NULL },
388 { "1.13", NULL },
389 { "1.14", NULL },
390 { "1.15", NULL },
391 { "1.16", NULL },
392 { "1.17", NULL },
393 { "1.18", NULL },
394 { "1.19", NULL },
395 { "1.20", NULL },
396 { "1.21", NULL },
397 { "1.22", NULL },
398 { "1.23", NULL },
399 { "1.24", NULL },
400 { "1.25", NULL },
401 { NULL, NULL },
402 },
403 "1",
404 },
405 {
406 "pcsx_rearmed_gunconadjustratioy",
407 "Guncon Adjust Ratio Y",
408 "When using Guncon mode, you can override aim in emulator if shots misaligned, this applies a ratio on the y axis.",
409 {
410 { "1", NULL },
411 { "0.75", NULL },
412 { "0.76", NULL },
413 { "0.77", NULL },
414 { "0.78", NULL },
415 { "0.79", NULL },
416 { "0.80", NULL },
417 { "0.81", NULL },
418 { "0.82", NULL },
419 { "0.83", NULL },
420 { "0.84", NULL },
421 { "0.85", NULL },
422 { "0.86", NULL },
423 { "0.87", NULL },
424 { "0.88", NULL },
425 { "0.89", NULL },
426 { "0.90", NULL },
427 { "0.91", NULL },
428 { "0.92", NULL },
429 { "0.93", NULL },
430 { "0.94", NULL },
431 { "0.95", NULL },
432 { "0.96", NULL },
433 { "0.97", NULL },
434 { "0.98", NULL },
435 { "0.99", NULL },
436 { "1.00", NULL },
437 { "1.01", NULL },
438 { "1.02", NULL },
439 { "1.03", NULL },
440 { "1.04", NULL },
441 { "1.05", NULL },
442 { "1.06", NULL },
443 { "1.07", NULL },
444 { "1.08", NULL },
445 { "1.09", NULL },
446 { "1.10", NULL },
447 { "1.11", NULL },
448 { "1.12", NULL },
449 { "1.13", NULL },
450 { "1.14", NULL },
451 { "1.15", NULL },
452 { "1.16", NULL },
453 { "1.17", NULL },
454 { "1.18", NULL },
455 { "1.19", NULL },
456 { "1.20", NULL },
457 { "1.21", NULL },
458 { "1.22", NULL },
459 { "1.23", NULL },
460 { "1.24", NULL },
461 { "1.25", NULL },
462 { NULL, NULL },
463 },
464 "1",
465 },
466 {
467 "pcsx_rearmed_dithering",
468 "Enable Dithering",
469 "If Off, disables the dithering pattern the PSX applies to combat color banding.",
470 {
471 { "disabled", NULL },
472 { "enabled", NULL },
473 { NULL, NULL },
474 },
475#if defined HAVE_LIBNX || defined _3DS
476 "disabled",
477#else
478 "enabled",
479#endif
480 },
481
482#if defined(LIGHTREC) || defined(NEW_DYNAREC)
483 {
484 "pcsx_rearmed_drc",
485 "Dynamic Recompiler",
486 "Enables core to use dynamic recompiler or interpreter (slower) CPU instructions.",
487 {
488 { "disabled", NULL },
489 { "enabled", NULL },
490 { NULL, NULL },
491 },
492 "enabled",
493 },
494#endif /* LIGHTREC || NEW_DYNAREC */
495
496#ifdef NEW_DYNAREC
497 {
498 "pcsx_rearmed_psxclock",
499 "PSX CPU Clock",
500#if defined(HAVE_PRE_ARMV7) && !defined(_3DS)
501 "Overclock or underclock the PSX clock. Default is 50",
502#else
503 "Overclock or underclock the PSX clock. Default is 57",
504#endif
505 {
506 { "30", NULL },
507 { "31", NULL },
508 { "32", NULL },
509 { "33", NULL },
510 { "34", NULL },
511 { "35", NULL },
512 { "36", NULL },
513 { "37", NULL },
514 { "38", NULL },
515 { "39", NULL },
516 { "40", NULL },
517 { "41", NULL },
518 { "42", NULL },
519 { "43", NULL },
520 { "44", NULL },
521 { "45", NULL },
522 { "46", NULL },
523 { "47", NULL },
524 { "48", NULL },
525 { "49", NULL },
526 { "50", NULL },
527 { "51", NULL },
528 { "52", NULL },
529 { "53", NULL },
530 { "54", NULL },
531 { "55", NULL },
532 { "56", NULL },
533 { "57", NULL },
534 { "58", NULL },
535 { "59", NULL },
536 { "60", NULL },
537 { "61", NULL },
538 { "62", NULL },
539 { "63", NULL },
540 { "64", NULL },
541 { "65", NULL },
542 { "66", NULL },
543 { "67", NULL },
544 { "68", NULL },
545 { "69", NULL },
546 { "70", NULL },
547 { "71", NULL },
548 { "72", NULL },
549 { "73", NULL },
550 { "74", NULL },
551 { "75", NULL },
552 { "76", NULL },
553 { "77", NULL },
554 { "78", NULL },
555 { "79", NULL },
556 { "80", NULL },
557 { "81", NULL },
558 { "82", NULL },
559 { "83", NULL },
560 { "84", NULL },
561 { "85", NULL },
562 { "86", NULL },
563 { "87", NULL },
564 { "88", NULL },
565 { "89", NULL },
566 { "90", NULL },
567 { "91", NULL },
568 { "92", NULL },
569 { "93", NULL },
570 { "94", NULL },
571 { "95", NULL },
572 { "96", NULL },
573 { "97", NULL },
574 { "98", NULL },
575 { "99", NULL },
576 { "100", NULL },
577 { NULL, NULL },
578 },
579#if defined(HAVE_PRE_ARMV7) && !defined(_3DS)
580 "50",
581#else
582 "57",
583#endif
584 },
585#endif /* NEW_DYNAREC */
586
587#ifdef GPU_NEON
588 {
589 "pcsx_rearmed_neon_interlace_enable",
590 "Enable Interlacing Mode",
591 "Enables fake scanlines effect.",
592 {
593 { "disabled", NULL },
594 { "enabled", NULL },
595 { NULL, NULL },
596 },
597 "disabled",
598 },
599 {
600 "pcsx_rearmed_neon_enhancement_enable",
601 "Enhanced Resolution (Slow)",
602 "Renders in double resolution at the cost of lower performance.",
603 {
604 { "disabled", NULL },
605 { "enabled", NULL },
606 { NULL, NULL },
607 },
608 "disabled",
609 },
610 {
611 "pcsx_rearmed_neon_enhancement_no_main",
612 "Enhanced Resolution (Speed Hack)",
613 "Speed hack for Enhanced resolution option (glitches some games).",
614 {
615 { "disabled", NULL },
616 { "enabled", NULL },
617 { NULL, NULL },
618 },
619 "disabled",
620 },
621#endif /* GPU_NEON */
622
623 {
624 "pcsx_rearmed_duping_enable",
625 "Frame Duping",
626 "A speedup, redraws/reuses the last frame if there was no new data.",
627 {
628 { "disabled", NULL },
629 { "enabled", NULL },
630 { NULL, NULL },
631 },
632 "enabled",
633 },
634 {
635 "pcsx_rearmed_display_internal_fps",
636 "Display Internal FPS",
637 "Shows an on-screen frames per second counter when enabled.",
638 {
639 { "disabled", NULL },
640 { "enabled", NULL },
641 { NULL, NULL },
642 },
643 "disabled",
644 },
645
646 /* GPU PEOPS OPTIONS */
647#ifdef GPU_PEOPS
648 {
649 "pcsx_rearmed_show_gpu_peops_settings",
650 "Advanced GPU P.E.Op.S. Settings",
651 "Shows or hides advanced GPU plugin settings. NOTE: Quick Menu must be toggled for this setting to take effect.",
652 {
653 { "disabled", NULL },
654 { "enabled", NULL },
655 { NULL, NULL },
656 },
657 "disabled",
658 },
659 {
660 "pcsx_rearmed_gpu_peops_odd_even_bit",
661 "(GPU) Odd/Even Bit Hack",
662 "Needed for Chrono Cross.",
663 {
664 { "disabled", NULL },
665 { "enabled", NULL },
666 { NULL, NULL },
667 },
668 "disabled",
669 },
670 {
671 "pcsx_rearmed_gpu_peops_expand_screen_width",
672 "(GPU) Expand Screen Width",
673 "Capcom fighting games",
674 {
675 { "disabled", NULL },
676 { "enabled", NULL },
677 { NULL, NULL },
678 },
679 "disabled",
680 },
681 {
682 "pcsx_rearmed_gpu_peops_ignore_brightness",
683 "(GPU) Ignore Brightness Color",
684 "Black screens in Lunar Silver Star Story games",
685 {
686 { "disabled", NULL },
687 { "enabled", NULL },
688 { NULL, NULL },
689 },
690 "disabled",
691 },
692 {
693 "pcsx_rearmed_gpu_peops_disable_coord_check",
694 "(GPU) Disable Coordinate Check",
695 "Compatibility mode",
696 {
697 { "disabled", NULL },
698 { "enabled", NULL },
699 { NULL, NULL },
700 },
701 "disabled",
702 },
703 {
704 "pcsx_rearmed_gpu_peops_lazy_screen_update",
705 "(GPU) Lazy Screen Update",
706 "Pandemonium 2",
707 {
708 { "disabled", NULL },
709 { "enabled", NULL },
710 { NULL, NULL },
711 },
712 "disabled",
713 },
714 {
715 "pcsx_rearmed_gpu_peops_old_frame_skip",
716 "(GPU) Old Frame Skipping",
717 "Skip every second frame",
718 {
719 { "disabled", NULL },
720 { "enabled", NULL },
721 { NULL, NULL },
722 },
723 "enabled",
724 },
725 {
726 "pcsx_rearmed_gpu_peops_repeated_triangles",
727 "(GPU) Repeated Flat Tex Triangles",
728 "Needed by Star Wars: Dark Forces",
729 {
730 { "disabled", NULL },
731 { "enabled", NULL },
732 { NULL, NULL },
733 },
734 "disabled",
735 },
736 {
737 "pcsx_rearmed_gpu_peops_quads_with_triangles",
738 "(GPU) Draw Quads with Triangles",
739 "Better g-colors, worse textures",
740 {
741 { "disabled", NULL },
742 { "enabled", NULL },
743 { NULL, NULL },
744 },
745 "disabled",
746 },
747 {
748 "pcsx_rearmed_gpu_peops_fake_busy_state",
749 "(GPU) Fake 'Gpu Busy' States",
750 "Toggle busy flags after drawing",
751 {
752 { "disabled", NULL },
753 { "enabled", NULL },
754 { NULL, NULL },
755 },
756 "disabled",
757 },
758#endif
759
760 /* GPU UNAI Advanced Options */
761#ifdef GPU_UNAI
762 {
763 "pcsx_rearmed_show_gpu_unai_settings",
764 "Advance GPU UNAI/PCSX4All Settings",
765 "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.",
766 {
767 { "disabled", NULL },
768 { "enabled", NULL },
769 { NULL, NULL},
770 },
771 "disabled",
772 },
773 {
774 "pcsx_rearmed_gpu_unai_blending",
775 "(GPU) Enable Blending",
776 NULL,
777 {
778 { "disabled", NULL },
779 { "enabled", NULL },
780 { NULL, NULL},
781 },
782 "enabled",
783 },
784 {
785 "pcsx_rearmed_gpu_unai_lighting",
786 "(GPU) Enable Lighting",
787 NULL,
788 {
789 { "disabled", NULL },
790 { "enabled", NULL },
791 { NULL, NULL},
792 },
793 "enabled",
794 },
795 {
796 "pcsx_rearmed_gpu_unai_fast_lighting",
797 "(GPU) Enable Fast Lighting",
798 NULL,
799 {
800 { "disabled", NULL },
801 { "enabled", NULL },
802 { NULL, NULL},
803 },
804 "disabled",
805 },
806 {
807 "pcsx_rearmed_gpu_unai_ilace_force",
808 "(GPU) Enable Forced Interlace",
809 NULL,
810 {
811 { "disabled", NULL },
812 { "enabled", NULL },
813 { NULL, NULL},
814 },
815 "disabled",
816 },
817 {
818 "pcsx_rearmed_gpu_unai_pixel_skip",
819 "(GPU) Enable Pixel Skip",
820 NULL,
821 {
822 { "disabled", NULL },
823 { "enabled", NULL },
824 { NULL, NULL},
825 },
826 "disabled",
827 },
828 {
829 "pcsx_rearmed_gpu_unai_scale_hires",
830 "(GPU) Enable Hi-Res Downscaling",
831 "When enabled, will scale hi-res modes to 320x240, skipping unrendered pixels.",
832 {
833 { "disabled", NULL },
834 { "enabled", NULL },
835 { NULL, NULL},
836 },
837 "disabled",
838 },
839#endif /* GPU UNAI Advanced Settings */
840#ifdef THREAD_RENDERING
841 {
842 "pcsx_rearmed_gpu_thread_rendering",
843 "Threaded Rendering",
844 "When enabled, runs GPU commands in a thread. Sync waits for drawing to finish before vsync. Async will not wait unless there's another frame behind it.",
845 {
846 { "disabled", NULL },
847 { "sync", NULL },
848 { "async", NULL },
849 { NULL, NULL},
850 },
851 "disabled",
852 },
853#endif
854
855 {
856 "pcsx_rearmed_show_bios_bootlogo",
857 "Show Bios Bootlogo",
858 "When enabled, shows the PlayStation logo when starting or resetting. (Breaks some games).",
859 {
860 { "disabled", NULL },
861 { "enabled", NULL },
862 { NULL, NULL },
863 },
864 "disabled",
865 },
866 {
867 "pcsx_rearmed_spu_reverb",
868 "Sound Reverb",
869 "Enables or disables audio reverb effect.",
870 {
871 { "disabled", NULL },
872 { "enabled", NULL },
873 { NULL, NULL },
874 },
875 "enabled",
876 },
877 {
878 "pcsx_rearmed_spu_interpolation",
879 "Sound Interpolation",
880 NULL,
881 {
882 { "simple", "Simple" },
883 { "gaussian", "Gaussian" },
884 { "cubic", "Cubic" },
885 { "off", "disabled" },
886 { NULL, NULL },
887 },
888 "simple",
889 },
890 {
891 "pcsx_rearmed_pe2_fix",
892 "Parasite Eve 2/Vandal Hearts 1/2 Fix",
893 NULL,
894 {
895 { "disabled", NULL },
896 { "enabled", NULL },
897 { NULL, NULL },
898 },
899 "disabled",
900 },
901 {
902 "pcsx_rearmed_icache_emulation",
903 "Instruction Cache emulation",
904 "Enables or disables instruction cache emulation. Slower, but more accurate. Fails to run Spyro 2 PAL. This allows you to run F1 2001, Formula One Arcade, F1 99 and other games that may need instruction cache emulation. Interpreter only and partial on lightrec, does nothing on the ARMv7 backend.",
905 {
906 { "disabled", NULL },
907 { "enabled", NULL },
908 { NULL, NULL },
909 },
910 "disabled",
911 },
912 {
913 "pcsx_rearmed_inuyasha_fix",
914 "InuYasha Sengoku Battle Fix",
915 NULL,
916 {
917 { "disabled", NULL },
918 { "enabled", NULL },
919 { NULL, NULL },
920 },
921 "disabled",
922 },
923#ifndef _WIN32
924 {
925 "pcsx_rearmed_async_cd",
926 "CD Access Method (Restart)",
927 "Select method used to read data from content disk images. 'Synchronous' mimics original hardware. 'Asynchronous' can reduce stuttering on devices with slow storage. 'Precache' loads disk image into memory for faster access (CHD only).",
928 {
929 { "sync", "Synchronous" },
930 { "async", "Asynchronous" },
931 { "precache", "Precache" },
932 { NULL, NULL},
933 },
934 "sync",
935 },
936#endif
937 /* ADVANCED OPTIONS */
938 {
939 "pcsx_rearmed_noxadecoding",
940 "XA Decoding",
941 NULL,
942 {
943 { "disabled", NULL },
944 { "enabled", NULL },
945 { NULL, NULL },
946 },
947 "enabled",
948 },
949 {
950 "pcsx_rearmed_nocdaudio",
951 "CD Audio",
952 NULL,
953 {
954 { "disabled", NULL },
955 { "enabled", NULL },
956 { NULL, NULL },
957 },
958 "enabled",
959 },
960 {
961 "pcsx_rearmed_spuirq",
962 "SPU IRQ Always Enabled",
963 "Compatibility tweak, should be left to off in most cases.",
964 {
965 { "disabled", NULL },
966 { "enabled", NULL },
967 { NULL, NULL },
968 },
969 "disabled",
970 },
971
972#ifdef NEW_DYNAREC
973 {
974 "pcsx_rearmed_nosmccheck",
975 "(Speed Hack) Disable SMC Checks",
976 "Will cause crashes when loading, break memcards.",
977 {
978 { "disabled", NULL },
979 { "enabled", NULL },
980 { NULL, NULL },
981 },
982 "disabled",
983 },
984 {
985 "pcsx_rearmed_gteregsunneeded",
986 "(Speed Hack) Assume GTE Regs Unneeded",
987 "May cause graphical glitches.",
988 {
989 { "disabled", NULL },
990 { "enabled", NULL },
991 { NULL, NULL },
992 },
993 "disabled",
994 },
995 {
996 "pcsx_rearmed_nogteflags",
997 "(Speed Hack) Disable GTE Flags",
998 "Will cause graphical glitches.",
999 {
1000 { "disabled", NULL },
1001 { "enabled", NULL },
1002 { NULL, NULL },
1003 },
1004 "disabled",
1005 },
1006#endif /* NEW_DYNAREC */
1007
1008 { NULL, NULL, NULL, {{0}}, NULL },
1009};
1010
1011/*
1012 ********************************
1013 * Language Mapping
1014 ********************************
1015*/
1016
1017#ifndef HAVE_NO_LANGEXTRA
1018struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = {
1019 option_defs_us, /* RETRO_LANGUAGE_ENGLISH */
1020 NULL, /* RETRO_LANGUAGE_JAPANESE */
1021 NULL, /* RETRO_LANGUAGE_FRENCH */
1022 NULL, /* RETRO_LANGUAGE_SPANISH */
1023 NULL, /* RETRO_LANGUAGE_GERMAN */
1024 NULL, /* RETRO_LANGUAGE_ITALIAN */
1025 NULL, /* RETRO_LANGUAGE_DUTCH */
1026 NULL, /* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */
1027 NULL, /* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */
1028 NULL, /* RETRO_LANGUAGE_RUSSIAN */
1029 NULL, /* RETRO_LANGUAGE_KOREAN */
1030 NULL, /* RETRO_LANGUAGE_CHINESE_TRADITIONAL */
1031 NULL, /* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */
1032 NULL, /* RETRO_LANGUAGE_ESPERANTO */
1033 NULL, /* RETRO_LANGUAGE_POLISH */
1034 NULL, /* RETRO_LANGUAGE_VIETNAMESE */
1035 NULL, /* RETRO_LANGUAGE_ARABIC */
1036 NULL, /* RETRO_LANGUAGE_GREEK */
1037 option_defs_tr, /* RETRO_LANGUAGE_TURKISH */
1038};
1039#endif
1040
1041/*
1042 ********************************
1043 * Functions
1044 ********************************
1045*/
1046
1047/* Handles configuration/setting of core options.
1048 * Should be called as early as possible - ideally inside
1049 * retro_set_environment(), and no later than retro_load_game()
1050 * > We place the function body in the header to avoid the
1051 * necessity of adding more .c files (i.e. want this to
1052 * be as painless as possible for core devs)
1053 */
1054
1055static INLINE void libretro_set_core_options(retro_environment_t environ_cb)
1056{
1057 unsigned version = 0;
1058
1059 if (!environ_cb)
1060 return;
1061
1062 if (environ_cb(RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION, &version) && (version >= 1))
1063 {
1064#ifndef HAVE_NO_LANGEXTRA
1065 struct retro_core_options_intl core_options_intl;
1066 unsigned language = 0;
1067
1068 core_options_intl.us = option_defs_us;
1069 core_options_intl.local = NULL;
1070
1071 if (environ_cb(RETRO_ENVIRONMENT_GET_LANGUAGE, &language) &&
1072 (language < RETRO_LANGUAGE_LAST) && (language != RETRO_LANGUAGE_ENGLISH))
1073 core_options_intl.local = option_defs_intl[language];
1074
1075 environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL, &core_options_intl);
1076#else
1077 environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS, &option_defs_us);
1078#endif
1079 }
1080 else
1081 {
1082 size_t i;
1083 size_t option_index = 0;
1084 size_t num_options = 0;
1085 struct retro_variable *variables = NULL;
1086 char **values_buf = NULL;
1087
1088 /* Determine number of options
1089 * > Note: We are going to skip a number of irrelevant
1090 * core options when building the retro_variable array,
1091 * but we'll allocate space for all of them. The difference
1092 * in resource usage is negligible, and this allows us to
1093 * keep the code 'cleaner' */
1094 while (true)
1095 {
1096 if (option_defs_us[num_options].key)
1097 num_options++;
1098 else
1099 break;
1100 }
1101
1102 /* Allocate arrays */
1103 variables = (struct retro_variable *)calloc(num_options + 1, sizeof(struct retro_variable));
1104 values_buf = (char **)calloc(num_options, sizeof(char *));
1105
1106 if (!variables || !values_buf)
1107 goto error;
1108
1109 /* Copy parameters from option_defs_us array */
1110 for (i = 0; i < num_options; i++)
1111 {
1112 const char *key = option_defs_us[i].key;
1113 const char *desc = option_defs_us[i].desc;
1114 const char *default_value = option_defs_us[i].default_value;
1115 struct retro_core_option_value *values = option_defs_us[i].values;
1116 size_t buf_len = 3;
1117 size_t default_index = 0;
1118
1119 values_buf[i] = NULL;
1120
1121 /* Skip options that are irrelevant when using the
1122 * old style core options interface */
1123 if ((strcmp(key, "pcsx_rearmed_show_gpu_peops_settings") == 0))
1124 continue;
1125
1126 if (desc)
1127 {
1128 size_t num_values = 0;
1129
1130 /* Determine number of values */
1131 while (true)
1132 {
1133 if (values[num_values].value)
1134 {
1135 /* Check if this is the default value */
1136 if (default_value)
1137 if (strcmp(values[num_values].value, default_value) == 0)
1138 default_index = num_values;
1139
1140 buf_len += strlen(values[num_values].value);
1141 num_values++;
1142 }
1143 else
1144 break;
1145 }
1146
1147 /* Build values string */
1148 if (num_values > 0)
1149 {
1150 size_t j;
1151
1152 buf_len += num_values - 1;
1153 buf_len += strlen(desc);
1154
1155 values_buf[i] = (char *)calloc(buf_len, sizeof(char));
1156 if (!values_buf[i])
1157 goto error;
1158
1159 strcpy(values_buf[i], desc);
1160 strcat(values_buf[i], "; ");
1161
1162 /* Default value goes first */
1163 strcat(values_buf[i], values[default_index].value);
1164
1165 /* Add remaining values */
1166 for (j = 0; j < num_values; j++)
1167 {
1168 if (j != default_index)
1169 {
1170 strcat(values_buf[i], "|");
1171 strcat(values_buf[i], values[j].value);
1172 }
1173 }
1174 }
1175 }
1176
1177 variables[option_index].key = key;
1178 variables[option_index].value = values_buf[i];
1179 option_index++;
1180 }
1181
1182 /* Set variables */
1183 environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, variables);
1184
1185error:
1186
1187 /* Clean up */
1188 if (values_buf)
1189 {
1190 for (i = 0; i < num_options; i++)
1191 {
1192 if (values_buf[i])
1193 {
1194 free(values_buf[i]);
1195 values_buf[i] = NULL;
1196 }
1197 }
1198
1199 free(values_buf);
1200 values_buf = NULL;
1201 }
1202
1203 if (variables)
1204 {
1205 free(variables);
1206 variables = NULL;
1207 }
1208 }
1209}
1210
1211#ifdef __cplusplus
1212}
1213#endif
1214
1215#endif