Merge pull request #633 from libretro/revert-631-autoframeskip
[pcsx_rearmed.git] / frontend / libretro_core_options.h
CommitLineData
919cac88 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
fbe06628 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
919cac88 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
919cac88 52struct retro_core_option_definition option_defs_us[] = {
5201e92f 53 {
54 "pcsx_rearmed_frameskip",
099bba58
A
55 "Frameskip",
56 "Choose how much frames should be skipped to improve performance at the expense of visual smoothness.",
919cac88 57 {
099bba58
A
58 { "0", NULL },
59 { "1", NULL },
60 { "2", NULL },
61 { "3", NULL },
fbe06628 62 { NULL, NULL },
919cac88 63 },
099bba58 64 "0",
919cac88 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" },
fbe06628 72 { "HLE", "hle" },
73 { NULL, NULL },
919cac88 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" },
fbe06628 84 { "PAL", "pal" },
85 { NULL, NULL },
919cac88 86 },
87 "auto",
88 },
89 {
90 "pcsx_rearmed_memcard2",
c8108d88 91 "Enable Second Memory Card (Shared)",
ef2683f1 92 "Enabled the memory card slot 2. This memory card is shared amongst all games.",
919cac88 93 {
fbe06628 94 { "disabled", NULL },
919cac88 95 { "enabled", NULL },
fbe06628 96 { NULL, NULL },
919cac88 97 },
e6f1e7f7 98 "disabled",
ce239f4a 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",
919cac88 110 },
399a33fe 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 },
919cac88 159 {
f6575013 160 "pcsx_rearmed_multitap",
161 "Multitap Mode (Restart)",
6cb1dcb1 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.",
919cac88 163 {
6cb1dcb1 164 { "disabled", NULL },
165 { "port 1", NULL },
166 { "port 2", NULL },
167 { "ports 1 and 2", NULL },
fbe06628 168 { NULL, NULL },
919cac88 169 },
125cf239 170 "disabled",
919cac88 171 },
172 {
173 "pcsx_rearmed_negcon_deadzone",
c8108d88 174 "NegCon Twist Deadzone (Percent)",
919cac88 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 },
fbe06628 184 { NULL, NULL },
919cac88 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 {
fbe06628 193 { "linear", NULL },
919cac88 194 { "quadratic", NULL },
fbe06628 195 { "cubic", NULL },
196 { NULL, NULL },
919cac88 197 },
198 "linear",
199 },
ace1989f
SK
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 },
919cac88 211 {
212 "pcsx_rearmed_vibration",
213 "Enable Vibration",
c8108d88 214 "Enables vibration feedback for controllers that supports vibration features.",
919cac88 215 {
216 { "disabled", NULL },
217 { "enabled", NULL },
fbe06628 218 { NULL, NULL },
919cac88 219 },
220 "enabled",
221 },
000655e4
S
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 },
919cac88 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 },
fbe06628 473 { NULL, NULL },
919cac88 474 },
706d7934 475#if defined HAVE_LIBNX || defined _3DS
12367ad0 476 "disabled",
477#else
919cac88 478 "enabled",
12367ad0 479#endif
919cac88 480 },
481
630b122b 482#ifndef DRC_DISABLE
919cac88 483 {
484 "pcsx_rearmed_drc",
c8108d88 485 "Dynamic Recompiler",
ef2683f1 486 "Enables core to use dynamic recompiler or interpreter (slower) CPU instructions.",
919cac88 487 {
488 { "disabled", NULL },
489 { "enabled", NULL },
fbe06628 490 { NULL, NULL },
919cac88 491 },
492 "enabled",
493 },
630b122b 494#endif
ec253988 495
630b122b 496#if !defined(DRC_DISABLE) && !defined(LIGHTREC)
919cac88 497 {
498 "pcsx_rearmed_psxclock",
c8108d88 499 "PSX CPU Clock",
44e8d7af 500#if defined(HAVE_PRE_ARMV7) && !defined(_3DS)
fbe06628 501 "Overclock or underclock the PSX clock. Default is 50",
502#else
503 "Overclock or underclock the PSX clock. Default is 57",
504#endif
919cac88 505 {
fbe06628 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 },
919cac88 576 { "100", NULL },
fbe06628 577 { NULL, NULL },
919cac88 578 },
44e8d7af 579#if defined(HAVE_PRE_ARMV7) && !defined(_3DS)
fbe06628 580 "50",
581#else
582 "57",
583#endif
919cac88 584 },
630b122b 585#endif /* !DRC_DISABLE && !LIGHTREC */
919cac88 586
8ac2b9d2 587#ifdef GPU_NEON
919cac88 588 {
589 "pcsx_rearmed_neon_interlace_enable",
c8108d88 590 "Enable Interlacing Mode",
919cac88 591 "Enables fake scanlines effect.",
592 {
593 { "disabled", NULL },
594 { "enabled", NULL },
fbe06628 595 { NULL, NULL },
919cac88 596 },
597 "disabled",
598 },
599 {
600 "pcsx_rearmed_neon_enhancement_enable",
c8108d88 601 "Enhanced Resolution (Slow)",
ef2683f1 602 "Renders in double resolution at the cost of lower performance.",
919cac88 603 {
604 { "disabled", NULL },
605 { "enabled", NULL },
fbe06628 606 { NULL, NULL },
919cac88 607 },
608 "disabled",
609 },
610 {
611 "pcsx_rearmed_neon_enhancement_no_main",
c8108d88 612 "Enhanced Resolution (Speed Hack)",
919cac88 613 "Speed hack for Enhanced resolution option (glitches some games).",
614 {
615 { "disabled", NULL },
616 { "enabled", NULL },
fbe06628 617 { NULL, NULL },
919cac88 618 },
619 "disabled",
620 },
8ac2b9d2 621#endif /* GPU_NEON */
919cac88 622
623 {
624 "pcsx_rearmed_duping_enable",
c8108d88 625 "Frame Duping",
919cac88 626 "A speedup, redraws/reuses the last frame if there was no new data.",
627 {
628 { "disabled", NULL },
629 { "enabled", NULL },
fbe06628 630 { NULL, NULL },
919cac88 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 },
fbe06628 641 { NULL, NULL },
919cac88 642 },
643 "disabled",
644 },
c8108d88 645
646 /* GPU PEOPS OPTIONS */
2d17de26 647#ifdef GPU_PEOPS
c8108d88 648 {
649 "pcsx_rearmed_show_gpu_peops_settings",
2d17de26 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.",
c8108d88 652 {
653 { "disabled", NULL },
654 { "enabled", NULL },
fbe06628 655 { NULL, NULL },
c8108d88 656 },
657 "disabled",
658 },
659 {
6713b629 660 "pcsx_rearmed_gpu_peops_odd_even_bit",
c8108d88 661 "(GPU) Odd/Even Bit Hack",
662 "Needed for Chrono Cross.",
663 {
664 { "disabled", NULL },
665 { "enabled", NULL },
fbe06628 666 { NULL, NULL },
c8108d88 667 },
668 "disabled",
669 },
670 {
6713b629 671 "pcsx_rearmed_gpu_peops_expand_screen_width",
c8108d88 672 "(GPU) Expand Screen Width",
673 "Capcom fighting games",
674 {
675 { "disabled", NULL },
676 { "enabled", NULL },
fbe06628 677 { NULL, NULL },
c8108d88 678 },
679 "disabled",
680 },
681 {
6713b629 682 "pcsx_rearmed_gpu_peops_ignore_brightness",
c8108d88 683 "(GPU) Ignore Brightness Color",
ef2683f1 684 "Black screens in Lunar Silver Star Story games",
c8108d88 685 {
686 { "disabled", NULL },
687 { "enabled", NULL },
fbe06628 688 { NULL, NULL },
c8108d88 689 },
690 "disabled",
691 },
692 {
6713b629 693 "pcsx_rearmed_gpu_peops_disable_coord_check",
c8108d88 694 "(GPU) Disable Coordinate Check",
695 "Compatibility mode",
696 {
697 { "disabled", NULL },
698 { "enabled", NULL },
fbe06628 699 { NULL, NULL },
c8108d88 700 },
701 "disabled",
702 },
703 {
6713b629 704 "pcsx_rearmed_gpu_peops_lazy_screen_update",
c8108d88 705 "(GPU) Lazy Screen Update",
706 "Pandemonium 2",
707 {
708 { "disabled", NULL },
709 { "enabled", NULL },
fbe06628 710 { NULL, NULL },
c8108d88 711 },
712 "disabled",
713 },
714 {
6713b629 715 "pcsx_rearmed_gpu_peops_old_frame_skip",
c8108d88 716 "(GPU) Old Frame Skipping",
717 "Skip every second frame",
718 {
719 { "disabled", NULL },
720 { "enabled", NULL },
fbe06628 721 { NULL, NULL },
c8108d88 722 },
723 "enabled",
724 },
725 {
6713b629 726 "pcsx_rearmed_gpu_peops_repeated_triangles",
c8108d88 727 "(GPU) Repeated Flat Tex Triangles",
ef2683f1 728 "Needed by Star Wars: Dark Forces",
c8108d88 729 {
730 { "disabled", NULL },
731 { "enabled", NULL },
fbe06628 732 { NULL, NULL },
c8108d88 733 },
734 "disabled",
735 },
736 {
6713b629 737 "pcsx_rearmed_gpu_peops_quads_with_triangles",
c8108d88 738 "(GPU) Draw Quads with Triangles",
739 "Better g-colors, worse textures",
740 {
741 { "disabled", NULL },
742 { "enabled", NULL },
fbe06628 743 { NULL, NULL },
c8108d88 744 },
745 "disabled",
746 },
747 {
6713b629 748 "pcsx_rearmed_gpu_peops_fake_busy_state",
c8108d88 749 "(GPU) Fake 'Gpu Busy' States",
750 "Toggle busy flags after drawing",
751 {
752 { "disabled", NULL },
753 { "enabled", NULL },
fbe06628 754 { NULL, NULL },
c8108d88 755 },
756 "disabled",
757 },
758#endif
759
030d1121 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 },
6725614d 804 "disabled",
030d1121 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 },
43047988
JW
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 },
ad32ae17 837#ifdef _MIYOO
838 "enabled",
839#else
43047988 840 "disabled",
ad32ae17 841#endif
43047988 842 },
a903b131 843#endif /* GPU UNAI Advanced Settings */
c765eb86
JW
844#ifdef THREAD_RENDERING
845 {
846 "pcsx_rearmed_gpu_thread_rendering",
847 "Threaded Rendering",
848 "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.",
849 {
850 { "disabled", NULL },
851 { "sync", NULL },
852 { "async", NULL },
853 { NULL, NULL},
854 },
855 "disabled",
856 },
857#endif
030d1121 858
919cac88 859 {
860 "pcsx_rearmed_show_bios_bootlogo",
861 "Show Bios Bootlogo",
ef2683f1 862 "When enabled, shows the PlayStation logo when starting or resetting. (Breaks some games).",
919cac88 863 {
864 { "disabled", NULL },
865 { "enabled", NULL },
fbe06628 866 { NULL, NULL },
919cac88 867 },
868 "disabled",
869 },
870 {
871 "pcsx_rearmed_spu_reverb",
872 "Sound Reverb",
873 "Enables or disables audio reverb effect.",
874 {
875 { "disabled", NULL },
876 { "enabled", NULL },
fbe06628 877 { NULL, NULL },
919cac88 878 },
9779c46d 879#ifdef HAVE_PRE_ARMV7
880 "disabled",
881#else
919cac88 882 "enabled",
9779c46d 883#endif
919cac88 884 },
885 {
886 "pcsx_rearmed_spu_interpolation",
c8108d88 887 "Sound Interpolation",
919cac88 888 NULL,
889 {
fbe06628 890 { "simple", "Simple" },
891 { "gaussian", "Gaussian" },
892 { "cubic", "Cubic" },
893 { "off", "disabled" },
894 { NULL, NULL },
919cac88 895 },
9779c46d 896#ifdef HAVE_PRE_ARMV7
897 "off",
898#else
919cac88 899 "simple",
9779c46d 900#endif
919cac88 901 },
919cac88 902 {
903 "pcsx_rearmed_pe2_fix",
904 "Parasite Eve 2/Vandal Hearts 1/2 Fix",
905 NULL,
906 {
907 { "disabled", NULL },
908 { "enabled", NULL },
fbe06628 909 { NULL, NULL },
919cac88 910 },
911 "disabled",
912 },
7a811716 913 {
914 "pcsx_rearmed_icache_emulation",
915 "Instruction Cache emulation",
d70a22d1 916 "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.",
7a811716 917 {
918 { "disabled", NULL },
919 { "enabled", NULL },
920 { NULL, NULL },
921 },
922 "disabled",
923 },
919cac88 924 {
925 "pcsx_rearmed_inuyasha_fix",
926 "InuYasha Sengoku Battle Fix",
927 NULL,
928 {
929 { "disabled", NULL },
930 { "enabled", NULL },
fbe06628 931 { NULL, NULL },
919cac88 932 },
933 "disabled",
934 },
679b71e2
JW
935#ifndef _WIN32
936 {
937 "pcsx_rearmed_async_cd",
938 "CD Access Method (Restart)",
1d2757f4 939 "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).",
679b71e2 940 {
1d2757f4 941 { "sync", "Synchronous" },
942 { "async", "Asynchronous" },
943 { "precache", "Precache" },
679b71e2
JW
944 { NULL, NULL},
945 },
946 "sync",
947 },
948#endif
919cac88 949 /* ADVANCED OPTIONS */
950 {
951 "pcsx_rearmed_noxadecoding",
952 "XA Decoding",
953 NULL,
954 {
955 { "disabled", NULL },
956 { "enabled", NULL },
fbe06628 957 { NULL, NULL },
919cac88 958 },
959 "enabled",
960 },
961 {
962 "pcsx_rearmed_nocdaudio",
963 "CD Audio",
964 NULL,
965 {
966 { "disabled", NULL },
967 { "enabled", NULL },
fbe06628 968 { NULL, NULL },
919cac88 969 },
970 "enabled",
971 },
34af0fff 972 {
973 "pcsx_rearmed_spuirq",
974 "SPU IRQ Always Enabled",
975 "Compatibility tweak, should be left to off in most cases.",
976 {
977 { "disabled", NULL },
978 { "enabled", NULL },
979 { NULL, NULL },
980 },
981 "disabled",
982 },
919cac88 983
630b122b 984#if !defined(DRC_DISABLE) && !defined(LIGHTREC)
919cac88 985 {
986 "pcsx_rearmed_nosmccheck",
987 "(Speed Hack) Disable SMC Checks",
988 "Will cause crashes when loading, break memcards.",
989 {
990 { "disabled", NULL },
991 { "enabled", NULL },
fbe06628 992 { NULL, NULL },
919cac88 993 },
994 "disabled",
995 },
996 {
997 "pcsx_rearmed_gteregsunneeded",
998 "(Speed Hack) Assume GTE Regs Unneeded",
999 "May cause graphical glitches.",
1000 {
1001 { "disabled", NULL },
1002 { "enabled", NULL },
fbe06628 1003 { NULL, NULL },
919cac88 1004 },
1005 "disabled",
1006 },
1007 {
1008 "pcsx_rearmed_nogteflags",
1009 "(Speed Hack) Disable GTE Flags",
1010 "Will cause graphical glitches.",
1011 {
1012 { "disabled", NULL },
1013 { "enabled", NULL },
38114665
ÖK
1014 { NULL, NULL },
1015 },
fbe06628 1016 "disabled",
38114665 1017 },
630b122b 1018 {
1019 "pcsx_rearmed_nostalls",
1020 "Disable CPU/GTE stalls",
1021 "Will cause some games to run too fast.",
1022 {
1023 { "disabled", NULL },
1024 { "enabled", NULL },
1025 { NULL, NULL },
1026 },
1027 "disabled",
1028 },
1029 {
1030 "pcsx_rearmed_nocompathacks",
1031 "Disable compat hacks",
1032 "Disables game-specific compatibility hacks.",
1033 {
1034 { "disabled", NULL },
1035 { "enabled", NULL },
1036 { NULL, NULL },
1037 },
1038 "disabled",
1039 },
1040#endif /* !DRC_DISABLE && !LIGHTREC */
38114665 1041
fbe06628 1042 { NULL, NULL, NULL, {{0}}, NULL },
38114665
ÖK
1043};
1044
919cac88 1045/*
1046 ********************************
1047 * Language Mapping
1048 ********************************
1049*/
1050
fbe06628 1051#ifndef HAVE_NO_LANGEXTRA
919cac88 1052struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = {
1053 option_defs_us, /* RETRO_LANGUAGE_ENGLISH */
1054 NULL, /* RETRO_LANGUAGE_JAPANESE */
1055 NULL, /* RETRO_LANGUAGE_FRENCH */
1056 NULL, /* RETRO_LANGUAGE_SPANISH */
1057 NULL, /* RETRO_LANGUAGE_GERMAN */
1058 NULL, /* RETRO_LANGUAGE_ITALIAN */
1059 NULL, /* RETRO_LANGUAGE_DUTCH */
1060 NULL, /* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */
1061 NULL, /* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */
1062 NULL, /* RETRO_LANGUAGE_RUSSIAN */
1063 NULL, /* RETRO_LANGUAGE_KOREAN */
1064 NULL, /* RETRO_LANGUAGE_CHINESE_TRADITIONAL */
1065 NULL, /* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */
1066 NULL, /* RETRO_LANGUAGE_ESPERANTO */
1067 NULL, /* RETRO_LANGUAGE_POLISH */
1068 NULL, /* RETRO_LANGUAGE_VIETNAMESE */
1069 NULL, /* RETRO_LANGUAGE_ARABIC */
1070 NULL, /* RETRO_LANGUAGE_GREEK */
fbe06628 1071 option_defs_tr, /* RETRO_LANGUAGE_TURKISH */
919cac88 1072};
fbe06628 1073#endif
919cac88 1074
1075/*
1076 ********************************
1077 * Functions
1078 ********************************
1079*/
1080
1081/* Handles configuration/setting of core options.
fbe06628 1082 * Should be called as early as possible - ideally inside
1083 * retro_set_environment(), and no later than retro_load_game()
919cac88 1084 * > We place the function body in the header to avoid the
1085 * necessity of adding more .c files (i.e. want this to
1086 * be as painless as possible for core devs)
1087 */
1088
1089static INLINE void libretro_set_core_options(retro_environment_t environ_cb)
1090{
1091 unsigned version = 0;
1092
1093 if (!environ_cb)
1094 return;
1095
fbe06628 1096 if (environ_cb(RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION, &version) && (version >= 1))
919cac88 1097 {
fbe06628 1098#ifndef HAVE_NO_LANGEXTRA
919cac88 1099 struct retro_core_options_intl core_options_intl;
1100 unsigned language = 0;
1101
1102 core_options_intl.us = option_defs_us;
1103 core_options_intl.local = NULL;
1104
1105 if (environ_cb(RETRO_ENVIRONMENT_GET_LANGUAGE, &language) &&
1106 (language < RETRO_LANGUAGE_LAST) && (language != RETRO_LANGUAGE_ENGLISH))
1107 core_options_intl.local = option_defs_intl[language];
1108
1109 environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL, &core_options_intl);
fbe06628 1110#else
1111 environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS, &option_defs_us);
1112#endif
919cac88 1113 }
1114 else
1115 {
1116 size_t i;
1117 size_t option_index = 0;
1118 size_t num_options = 0;
1119 struct retro_variable *variables = NULL;
1120 char **values_buf = NULL;
1121
1122 /* Determine number of options
1123 * > Note: We are going to skip a number of irrelevant
1124 * core options when building the retro_variable array,
1125 * but we'll allocate space for all of them. The difference
1126 * in resource usage is negligible, and this allows us to
1127 * keep the code 'cleaner' */
1128 while (true)
1129 {
1130 if (option_defs_us[num_options].key)
1131 num_options++;
1132 else
1133 break;
1134 }
1135
1136 /* Allocate arrays */
1137 variables = (struct retro_variable *)calloc(num_options + 1, sizeof(struct retro_variable));
1138 values_buf = (char **)calloc(num_options, sizeof(char *));
1139
1140 if (!variables || !values_buf)
1141 goto error;
1142
1143 /* Copy parameters from option_defs_us array */
1144 for (i = 0; i < num_options; i++)
1145 {
1146 const char *key = option_defs_us[i].key;
1147 const char *desc = option_defs_us[i].desc;
1148 const char *default_value = option_defs_us[i].default_value;
1149 struct retro_core_option_value *values = option_defs_us[i].values;
1150 size_t buf_len = 3;
1151 size_t default_index = 0;
1152
1153 values_buf[i] = NULL;
1154
1155 /* Skip options that are irrelevant when using the
1156 * old style core options interface */
c8108d88 1157 if ((strcmp(key, "pcsx_rearmed_show_gpu_peops_settings") == 0))
919cac88 1158 continue;
1159
1160 if (desc)
1161 {
1162 size_t num_values = 0;
1163
1164 /* Determine number of values */
1165 while (true)
1166 {
1167 if (values[num_values].value)
1168 {
1169 /* Check if this is the default value */
1170 if (default_value)
1171 if (strcmp(values[num_values].value, default_value) == 0)
1172 default_index = num_values;
1173
1174 buf_len += strlen(values[num_values].value);
1175 num_values++;
1176 }
1177 else
1178 break;
1179 }
1180
1181 /* Build values string */
fbe06628 1182 if (num_values > 0)
919cac88 1183 {
1184 size_t j;
1185
1186 buf_len += num_values - 1;
1187 buf_len += strlen(desc);
1188
1189 values_buf[i] = (char *)calloc(buf_len, sizeof(char));
1190 if (!values_buf[i])
1191 goto error;
1192
1193 strcpy(values_buf[i], desc);
1194 strcat(values_buf[i], "; ");
1195
1196 /* Default value goes first */
1197 strcat(values_buf[i], values[default_index].value);
1198
1199 /* Add remaining values */
1200 for (j = 0; j < num_values; j++)
1201 {
1202 if (j != default_index)
1203 {
1204 strcat(values_buf[i], "|");
1205 strcat(values_buf[i], values[j].value);
1206 }
1207 }
1208 }
1209 }
1210
1211 variables[option_index].key = key;
1212 variables[option_index].value = values_buf[i];
1213 option_index++;
1214 }
1215
1216 /* Set variables */
1217 environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, variables);
1218
1219error:
1220
1221 /* Clean up */
1222 if (values_buf)
1223 {
1224 for (i = 0; i < num_options; i++)
1225 {
1226 if (values_buf[i])
1227 {
1228 free(values_buf[i]);
1229 values_buf[i] = NULL;
1230 }
1231 }
1232
1233 free(values_buf);
1234 values_buf = NULL;
1235 }
1236
1237 if (variables)
1238 {
1239 free(variables);
1240 variables = NULL;
1241 }
1242 }
1243}
1244
1245#ifdef __cplusplus
1246}
1247#endif
1248
1249#endif