1 /* RetroArch - A frontend for libretro.
2 * Copyright (C) 2011-2017 - Daniel De Matteis
3 * Copyright (C) 2016-2019 - Brad Parker
4 *
5 * RetroArch is free software: you can redistribute it and/or modify it under the terms
6 * of the GNU General Public License as published by the Free Software Found-
7 * ation, either version 3 of the License, or (at your option) any later version.
8 *
9 * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
10 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 * PURPOSE. See the GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License along with RetroArch.
14 * If not, see <http://www.gnu.org/licenses/>.
15 */
16
17 #include <stdio.h>
18 #include <stdint.h>
19 #include <stddef.h>
20
21 #include <compat/strl.h>
22 #include <string/stdstring.h>
23
24 #include "../msg_hash.h"
25 #include "../verbosity.h"
26
27 #ifdef RARCH_INTERNAL
28 #include "../configuration.h"
29
msg_hash_get_help_us_enum(enum msg_hash_enums msg,char * s,size_t len)30 int msg_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len)
31 {
32 settings_t *settings = config_get_ptr();
33
34 if (msg == MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM)
35 {
36 snprintf(s, len,
37 "TODO/FIXME - Fill in message here."
38 );
39 return 0;
40 }
41 if (msg <= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_END &&
42 msg >= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN)
43 {
44 unsigned idx = msg - MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN;
45
46 switch (idx)
47 {
48 case RARCH_FAST_FORWARD_KEY:
49 snprintf(s, len,
50 "Toggles between fast-forwarding and \n"
51 "normal speed."
52 );
53 break;
54 case RARCH_FAST_FORWARD_HOLD_KEY:
55 snprintf(s, len,
56 "Hold for fast-forward. \n"
57 " \n"
58 "Releasing button disables fast-forward."
59 );
60 break;
61 case RARCH_SLOWMOTION_KEY:
62 snprintf(s, len,
63 "Toggles slowmotion.");
64 break;
65 case RARCH_SLOWMOTION_HOLD_KEY:
66 snprintf(s, len,
67 "Hold for slowmotion.");
68 break;
69 case RARCH_PAUSE_TOGGLE:
70 snprintf(s, len,
71 "Toggle between paused and non-paused state.");
72 break;
73 case RARCH_FRAMEADVANCE:
74 snprintf(s, len,
75 "Frame advance when content is paused.");
76 break;
77 case RARCH_SHADER_NEXT:
78 snprintf(s, len,
79 "Applies next shader in directory.");
80 break;
81 case RARCH_SHADER_PREV:
82 snprintf(s, len,
83 "Applies previous shader in directory.");
84 break;
85 case RARCH_CHEAT_INDEX_PLUS:
86 case RARCH_CHEAT_INDEX_MINUS:
87 case RARCH_CHEAT_TOGGLE:
88 snprintf(s, len,
89 "Cheats.");
90 break;
91 case RARCH_RESET:
92 snprintf(s, len,
93 "Reset the content.");
94 break;
95 case RARCH_SCREENSHOT:
96 snprintf(s, len,
97 "Take screenshot.");
98 break;
99 case RARCH_MUTE:
100 snprintf(s, len,
101 "Mute/unmute audio.");
102 break;
103 case RARCH_OSK:
104 snprintf(s, len,
105 "Toggles onscreen keyboard.");
106 break;
107 case RARCH_FPS_TOGGLE:
108 snprintf(s, len,
109 "Toggles frames per second counter.");
110 break;
111 case RARCH_SEND_DEBUG_INFO:
112 snprintf(s, len,
113 "Sends diagnostic info about your device and RetroArch configuration to our servers for analysis.");
114 break;
115 case RARCH_NETPLAY_HOST_TOGGLE:
116 snprintf(s, len,
117 "Toggles netplay hosting on/off.");
118 break;
119 case RARCH_NETPLAY_GAME_WATCH:
120 snprintf(s, len,
121 "Netplay toggle play/spectate mode.");
122 break;
123 case RARCH_ENABLE_HOTKEY:
124 snprintf(s, len,
125 "Enable other hotkeys. \n"
126 " \n"
127 "If this hotkey is bound to either\n"
128 "a keyboard, joybutton or joyaxis, \n"
129 "all other hotkeys will be enabled only \n"
130 "if this one is held at the same time. \n"
131 " \n"
132 "Alternatively, all hotkeys for keyboard \n"
133 "could be disabled by the user.");
134 break;
135 case RARCH_VOLUME_UP:
136 snprintf(s, len,
137 "Increases audio volume.");
138 break;
139 case RARCH_VOLUME_DOWN:
140 snprintf(s, len,
141 "Decreases audio volume.");
142 break;
143 case RARCH_OVERLAY_NEXT:
144 snprintf(s, len,
145 "Switches to next overlay. Wraps around.");
146 break;
147 case RARCH_DISK_EJECT_TOGGLE:
148 snprintf(s, len,
149 "Toggles eject for disks. \n"
150 " \n"
151 "Used for multiple-disk content.");
152 break;
153 case RARCH_DISK_NEXT:
154 case RARCH_DISK_PREV:
155 snprintf(s, len,
156 "Cycles through disk images. Use after ejecting. \n"
157 " \n"
158 "Complete by toggling eject again.");
159 break;
160 case RARCH_GRAB_MOUSE_TOGGLE:
161 snprintf(s, len,
162 "Toggles mouse grab. \n"
163 " \n"
164 "When mouse is grabbed, RetroArch hides the \n"
165 "mouse, and keeps the mouse pointer inside \n"
166 "the window to allow relative mouse input to \n"
167 "work better.");
168 break;
169 case RARCH_GAME_FOCUS_TOGGLE:
170 snprintf(s, len,
171 "Toggles game focus.\n"
172 " \n"
173 "When a game has focus, RetroArch will both disable \n"
174 "hotkeys and keep/wrap the mouse pointer inside the window.");
175 break;
176 case RARCH_MENU_TOGGLE:
177 snprintf(s, len, "Toggles menu.");
178 break;
179 case RARCH_LOAD_STATE_KEY:
180 snprintf(s, len,
181 "Loads state.");
182 break;
183 case RARCH_FULLSCREEN_TOGGLE_KEY:
184 snprintf(s, len,
185 "Toggles fullscreen.");
186 break;
187 case RARCH_CLOSE_CONTENT_KEY:
188 snprintf(s, len,
189 "Closes content.");
190 break;
191 case RARCH_QUIT_KEY:
192 snprintf(s, len,
193 "Key to exit RetroArch cleanly. \n"
194 " \n"
195 "Killing it in any hard way (SIGKILL, etc.) will \n"
196 "terminate RetroArch without saving RAM, etc."
197 #ifdef __unix__
198 "\nOn Unix-likes, SIGINT/SIGTERM allows a clean \n"
199 "deinitialization."
200 #endif
201 "");
202 break;
203 case RARCH_STATE_SLOT_PLUS:
204 case RARCH_STATE_SLOT_MINUS:
205 snprintf(s, len,
206 "State slots. \n"
207 " \n"
208 "With slot set to 0, save state name is \n"
209 "*.state (or whatever defined on commandline). \n"
210 " \n"
211 "When slot is not 0, path will be <path><d>, \n"
212 "where <d> is slot number.");
213 break;
214 case RARCH_SAVE_STATE_KEY:
215 snprintf(s, len,
216 "Saves state.");
217 break;
218 case RARCH_REWIND:
219 snprintf(s, len,
220 "Hold button down to rewind. \n"
221 " \n"
222 "Rewinding must be enabled.");
223 break;
224 case RARCH_BSV_RECORD_TOGGLE:
225 snprintf(s, len,
226 "Toggle between recording and not.");
227 break;
228 case RARCH_RUNAHEAD_TOGGLE:
229 snprintf(s, len,
230 "Toggles Run-Ahead mode on/off.");
231 break;
232 default:
233 if (string_is_empty(s))
234 strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);
235 break;
236 }
237
238 return 0;
239 }
240
241 switch (msg)
242 {
243 case MENU_ENUM_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS:
244 snprintf(s, len, "Login details for your \n"
245 "Retro Achievements account. \n"
246 " \n"
247 "Visit retroachievements.org and sign up \n"
248 "for a free account. \n"
249 " \n"
250 "After you are done registering, you need \n"
251 "to input the username and password into \n"
252 "RetroArch.");
253 break;
254 case MENU_ENUM_LABEL_CHEEVOS_USERNAME:
255 snprintf(s, len, "Username for your Retro Achievements account.");
256 break;
257 case MENU_ENUM_LABEL_CHEEVOS_PASSWORD:
258 snprintf(s, len, "Password for your Retro Achievements account.");
259 break;
260 case MENU_ENUM_LABEL_USER_LANGUAGE:
261 snprintf(s, len, "Localizes the menu and all onscreen messages \n"
262 "according to the language you have selected \n"
263 "here. \n"
264 " \n"
265 "Requires a restart for the changes \n"
266 "to take effect. \n"
267 " \n"
268 "Note: not all languages might be currently \n"
269 "implemented. \n"
270 " \n"
271 "In case a language is not implemented, \n"
272 "we fallback to English.");
273 break;
274 case MENU_ENUM_LABEL_VIDEO_FONT_PATH:
275 snprintf(s, len, "Change the font that is used \n"
276 "for the Onscreen Display text.");
277 break;
278 case MENU_ENUM_LABEL_GAME_SPECIFIC_OPTIONS:
279 snprintf(s, len, "Automatically load content-specific core options.");
280 break;
281 case MENU_ENUM_LABEL_AUTO_OVERRIDES_ENABLE:
282 snprintf(s, len, "Automatically load override configurations.");
283 break;
284 case MENU_ENUM_LABEL_AUTO_REMAPS_ENABLE:
285 snprintf(s, len, "Automatically load input remapping files.");
286 break;
287 case MENU_ENUM_LABEL_SORT_SAVESTATES_ENABLE:
288 snprintf(s, len, "Sort save states in folders \n"
289 "named after the libretro core used.");
290 break;
291 case MENU_ENUM_LABEL_SORT_SAVEFILES_ENABLE:
292 snprintf(s, len, "Sort save files in folders \n"
293 "named after the libretro core used.");
294 break;
295 case MENU_ENUM_LABEL_SORT_SAVESTATES_BY_CONTENT_ENABLE:
296 snprintf(s, len, "Sort save states in folders named \n"
297 "after the folder in which the content lives.");
298 break;
299 case MENU_ENUM_LABEL_SORT_SAVEFILES_BY_CONTENT_ENABLE:
300 snprintf(s, len, "Sort save files in folders named \n"
301 "after the folder in which the content lives.");
302 break;
303 case MENU_ENUM_LABEL_SORT_SCREENSHOTS_BY_CONTENT_ENABLE:
304 snprintf(s, len, "Sort screenshots in folders named \n"
305 "after the folder in which the content lives.");
306 break;
307 case MENU_ENUM_LABEL_RESUME_CONTENT:
308 snprintf(s, len, "Exits from the menu and returns back \n"
309 "to the content.");
310 break;
311 case MENU_ENUM_LABEL_RESTART_CONTENT:
312 snprintf(s, len, "Restarts the content from the beginning.");
313 break;
314 case MENU_ENUM_LABEL_CLOSE_CONTENT:
315 snprintf(s, len, "Closes the content and unloads it from \n"
316 "memory.");
317 break;
318 case MENU_ENUM_LABEL_UNDO_LOAD_STATE:
319 snprintf(s, len, "If a state was loaded, content will \n"
320 "go back to the state prior to loading.");
321 break;
322 case MENU_ENUM_LABEL_UNDO_SAVE_STATE:
323 snprintf(s, len, "If a state was overwritten, it will \n"
324 "roll back to the previous save state.");
325 break;
326 case MENU_ENUM_LABEL_TAKE_SCREENSHOT:
327 snprintf(s, len, "Create a screenshot. \n"
328 " \n"
329 "The screenshot will be stored inside the \n"
330 "Screenshot Directory.");
331 break;
332 case MENU_ENUM_LABEL_ADD_TO_FAVORITES:
333 snprintf(s, len, "Add the entry to your Favorites.");
334 break;
335 case MENU_ENUM_LABEL_RUN:
336 snprintf(s, len, "Start the content.");
337 break;
338 case MENU_ENUM_LABEL_INFORMATION:
339 snprintf(s, len, "Show additional metadata information \n"
340 "about the content.");
341 break;
342 case MENU_ENUM_LABEL_FILE_BROWSER_CONFIG:
343 snprintf(s, len, "Configuration file.");
344 break;
345 case MENU_ENUM_LABEL_FILE_BROWSER_COMPRESSED_ARCHIVE:
346 snprintf(s, len, "Compressed archive file.");
347 break;
348 case MENU_ENUM_LABEL_FILE_BROWSER_RECORD_CONFIG:
349 snprintf(s, len, "Recording configuration file.");
350 break;
351 case MENU_ENUM_LABEL_FILE_BROWSER_CURSOR:
352 snprintf(s, len, "Database cursor file.");
353 break;
354 case MENU_ENUM_LABEL_FILE_CONFIG:
355 snprintf(s, len, "Configuration file.");
356 break;
357 case MENU_ENUM_LABEL_SCAN_THIS_DIRECTORY:
358 snprintf(s, len,
359 "Select this to scan the current directory \n"
360 "for content.");
361 break;
362 case MENU_ENUM_LABEL_USE_THIS_DIRECTORY:
363 snprintf(s, len,
364 "Select this to set this as the directory.");
365 break;
366 case MENU_ENUM_LABEL_CONTENT_DATABASE_DIRECTORY:
367 snprintf(s, len,
368 "Content Database Directory. \n"
369 " \n"
370 "Path to content database \n"
371 "directory.");
372 break;
373 case MENU_ENUM_LABEL_THUMBNAILS_DIRECTORY:
374 snprintf(s, len,
375 "Thumbnails Directory. \n"
376 " \n"
377 "To store thumbnail files.");
378 break;
379 case MENU_ENUM_LABEL_LIBRETRO_INFO_PATH:
380 snprintf(s, len,
381 "Core Info Directory. \n"
382 " \n"
383 "A directory for where to search \n"
384 "for libretro core information.");
385 break;
386 case MENU_ENUM_LABEL_PLAYLIST_DIRECTORY:
387 snprintf(s, len,
388 "Playlist Directory. \n"
389 " \n"
390 "Save all playlist files to this \n"
391 "directory.");
392 break;
393 case MENU_ENUM_LABEL_CONTENT_FAVORITES_DIRECTORY:
394 snprintf(s, len,
395 "Favorites Playlist Directory. \n"
396 " \n"
397 "Save the favorites playlist to this \n"
398 "directory.");
399 break;
400 case MENU_ENUM_LABEL_CONTENT_HISTORY_DIRECTORY:
401 snprintf(s, len,
402 "History Playlist Directory. \n"
403 " \n"
404 "Save the history playlist to this \n"
405 "directory.");
406 break;
407 case MENU_ENUM_LABEL_CONTENT_IMAGE_HISTORY_DIRECTORY:
408 snprintf(s, len,
409 "Images Playlist Directory. \n"
410 " \n"
411 "Save the images playlist to this \n"
412 "directory.");
413 break;
414 case MENU_ENUM_LABEL_CONTENT_MUSIC_HISTORY_DIRECTORY:
415 snprintf(s, len,
416 "Music Playlist Directory. \n"
417 " \n"
418 "Save the music playlist to this \n"
419 "directory.");
420 break;
421 case MENU_ENUM_LABEL_CONTENT_VIDEO_HISTORY_DIRECTORY:
422 snprintf(s, len,
423 "Videos Playlist Directory. \n"
424 " \n"
425 "Save the videos playlist to this \n"
426 "directory.");
427 break;
428 case MENU_ENUM_LABEL_DUMMY_ON_CORE_SHUTDOWN:
429 snprintf(s, len,
430 "Some cores might have \n"
431 "a shutdown feature. \n"
432 " \n"
433 "If this option is left disabled, \n"
434 "selecting the shutdown procedure \n"
435 "would trigger RetroArch being shut \n"
436 "down. \n"
437 " \n"
438 "Enabling this option will load a \n"
439 "dummy core instead so that we remain \n"
440 "inside the menu and RetroArch won't \n"
441 "shutdown.");
442 break;
443 case MENU_ENUM_LABEL_CHECK_FOR_MISSING_FIRMWARE:
444 snprintf(s, len,
445 "Some cores might need \n"
446 "firmware or bios files. \n"
447 " \n"
448 "If this option is disabled, \n"
449 "it will try to load even if such \n"
450 "firmware is missing.");
451 break;
452 case MENU_ENUM_LABEL_PARENT_DIRECTORY:
453 snprintf(s, len,
454 "Go back to the parent directory.");
455 break;
456 case MENU_ENUM_LABEL_FILE_BROWSER_OPEN_UWP_PERMISSIONS:
457 snprintf(s, len,
458 "Open Windows permission settings to enable \n"
459 "the broadFileSystemAccess capability.");
460 break;
461 case MENU_ENUM_LABEL_FILE_BROWSER_OPEN_PICKER:
462 snprintf(s, len,
463 "Open the system file picker to access \n"
464 "additional directories.");
465 break;
466 case MENU_ENUM_LABEL_FILE_BROWSER_SHADER_PRESET:
467 snprintf(s, len,
468 "Shader preset file.");
469 break;
470 case MENU_ENUM_LABEL_FILE_BROWSER_SHADER:
471 snprintf(s, len,
472 "Shader file.");
473 break;
474 case MENU_ENUM_LABEL_FILE_BROWSER_REMAP:
475 snprintf(s, len,
476 "Remap controls file.");
477 break;
478 case MENU_ENUM_LABEL_FILE_BROWSER_CHEAT:
479 snprintf(s, len,
480 "Cheat file.");
481 break;
482 case MENU_ENUM_LABEL_FILE_BROWSER_OVERLAY:
483 snprintf(s, len,
484 "Overlay file.");
485 break;
486 case MENU_ENUM_LABEL_FILE_BROWSER_RDB:
487 snprintf(s, len,
488 "Database file.");
489 break;
490 case MENU_ENUM_LABEL_FILE_BROWSER_FONT:
491 snprintf(s, len,
492 "TrueType font file.");
493 break;
494 case MENU_ENUM_LABEL_FILE_BROWSER_PLAIN_FILE:
495 snprintf(s, len,
496 "Plain file.");
497 break;
498 case MENU_ENUM_LABEL_FILE_BROWSER_MOVIE_OPEN:
499 snprintf(s, len,
500 "Video. \n"
501 " \n"
502 "Select it to open this file with the \n"
503 "video player.");
504 break;
505 case MENU_ENUM_LABEL_FILE_BROWSER_MUSIC_OPEN:
506 snprintf(s, len,
507 "Music. \n"
508 " \n"
509 "Select it to open this file with the \n"
510 "music player.");
511 break;
512 case MENU_ENUM_LABEL_FILE_BROWSER_IMAGE:
513 snprintf(s, len,
514 "Image file.");
515 break;
516 case MENU_ENUM_LABEL_FILE_BROWSER_IMAGE_OPEN_WITH_VIEWER:
517 snprintf(s, len,
518 "Image. \n"
519 " \n"
520 "Select it to open this file with the \n"
521 "image viewer.");
522 break;
523 case MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION:
524 snprintf(s, len,
525 "Libretro core. \n"
526 " \n"
527 "Selecting this will associate this core \n"
528 "to the game.");
529 break;
530 case MENU_ENUM_LABEL_FILE_BROWSER_CORE:
531 snprintf(s, len,
532 "Libretro core. \n"
533 " \n"
534 "Select this file to have RetroArch load this core.");
535 break;
536 case MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY:
537 snprintf(s, len,
538 "Directory. \n"
539 " \n"
540 "Select it to open this directory.");
541 break;
542 case MENU_ENUM_LABEL_CACHE_DIRECTORY:
543 snprintf(s, len,
544 "Cache Directory. \n"
545 " \n"
546 "Content decompressed by RetroArch will be \n"
547 "temporarily extracted to this directory.");
548 break;
549 case MENU_ENUM_LABEL_HISTORY_LIST_ENABLE:
550 snprintf(s, len,
551 "If enabled, every content loaded \n"
552 "in RetroArch will be automatically \n"
553 "added to the recent history list.");
554 break;
555 case MENU_ENUM_LABEL_RGUI_BROWSER_DIRECTORY:
556 snprintf(s, len,
557 "File Browser Directory. \n"
558 " \n"
559 "Sets start directory for menu file browser.");
560 break;
561 case MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR:
562 snprintf(s, len,
563 "Influence how input polling is done inside \n"
564 "RetroArch. \n"
565 " \n"
566 "Early - Input polling is performed before \n"
567 "the frame is processed. \n"
568 "Normal - Input polling is performed when \n"
569 "polling is requested. \n"
570 "Late - Input polling is performed on \n"
571 "first input state request per frame.\n"
572 " \n"
573 "Setting it to 'Early' or 'Late' can result \n"
574 "in less latency, \n"
575 "depending on your configuration.\n\n"
576 "Will be ignored when using netplay.");
577 break;
578 case MENU_ENUM_LABEL_INPUT_DESCRIPTOR_HIDE_UNBOUND:
579 snprintf(s, len,
580 "Hide input descriptors that were not set \n"
581 "by the core.");
582 break;
583 case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE:
584 snprintf(s, len,
585 "Video refresh rate of your monitor. \n"
586 "Used to calculate a suitable audio input rate.");
587 break;
588 case MENU_ENUM_LABEL_VIDEO_FORCE_SRGB_DISABLE:
589 snprintf(s, len,
590 "Forcibly disable sRGB FBO support. Some Intel \n"
591 "OpenGL drivers on Windows have video problems \n"
592 "with sRGB FBO support enabled.");
593 break;
594 case MENU_ENUM_LABEL_AUDIO_ENABLE:
595 snprintf(s, len,
596 "Enable audio output.");
597 break;
598 case MENU_ENUM_LABEL_AUDIO_SYNC:
599 snprintf(s, len,
600 "Synchronize audio (recommended).");
601 break;
602 case MENU_ENUM_LABEL_AUDIO_LATENCY:
603 snprintf(s, len,
604 "Desired audio latency in milliseconds. \n"
605 "Might not be honored if the audio driver \n"
606 "can't provide given latency.");
607 break;
608 case MENU_ENUM_LABEL_VIDEO_ALLOW_ROTATE:
609 snprintf(s, len,
610 "Allow cores to set rotation. If false, \n"
611 "rotation requests are honored, but ignored.\n\n"
612 "Used for setups where one manually rotates \n"
613 "the monitor.");
614 break;
615 case MENU_ENUM_LABEL_INPUT_DESCRIPTOR_LABEL_SHOW:
616 snprintf(s, len,
617 "Show the input descriptors set by the core \n"
618 "instead of the default ones.");
619 break;
620 case MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE:
621 snprintf(s, len,
622 "Number of entries that will be kept in \n"
623 "content history playlist.");
624 break;
625 case MENU_ENUM_LABEL_VIDEO_WINDOWED_FULLSCREEN:
626 snprintf(s, len,
627 "To use windowed mode or not when going \n"
628 "fullscreen.");
629 break;
630 case MENU_ENUM_LABEL_VIDEO_FONT_SIZE:
631 snprintf(s, len,
632 "Font size for on-screen messages.");
633 break;
634 case MENU_ENUM_LABEL_SAVESTATE_AUTO_INDEX:
635 snprintf(s, len,
636 "Automatically increment slot index on each save, \n"
637 "generating multiple savestate files. \n"
638 "When the content is loaded, state slot will be \n"
639 "set to the highest existing value (last savestate).");
640 break;
641 case MENU_ENUM_LABEL_FPS_SHOW:
642 snprintf(s, len,
643 "Enables displaying the current frames \n"
644 "per second.");
645 break;
646 case MENU_ENUM_LABEL_MEMORY_SHOW:
647 snprintf(s, len,
648 "Includes displaying the current memory \n"
649 "usage/total with FPS/Frames.");
650 break;
651 case MENU_ENUM_LABEL_VIDEO_FONT_ENABLE:
652 snprintf(s, len,
653 "Show and/or hide onscreen messages.");
654 break;
655 case MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_X:
656 case MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_Y:
657 snprintf(s, len,
658 "Offset for where messages will be placed \n"
659 "onscreen. Values are in range [0.0, 1.0].");
660 break;
661 case MENU_ENUM_LABEL_INPUT_OVERLAY_ENABLE:
662 snprintf(s, len,
663 "Enable or disable the current overlay.");
664 break;
665 case MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU:
666 snprintf(s, len,
667 "Hide the current overlay from appearing \n"
668 "inside the menu.");
669 break;
670 case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS:
671 snprintf(s, len,
672 "Show keyboard/controller button presses on \n"
673 "the onscreen overlay.");
674 break;
675 case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT:
676 snprintf(s, len,
677 "Select the port to listen for controller input \n"
678 "to display on the onscreen overlay.");
679 break;
680 case MENU_ENUM_LABEL_OVERLAY_PRESET:
681 snprintf(s, len,
682 "Path to input overlay.");
683 break;
684 case MENU_ENUM_LABEL_OVERLAY_OPACITY:
685 snprintf(s, len,
686 "Overlay opacity.");
687 break;
688 case MENU_ENUM_LABEL_VIDEO_LAYOUT_ENABLE:
689 snprintf(s, len,
690 "Enable or disable the current video layout.");
691 break;
692 case MENU_ENUM_LABEL_VIDEO_LAYOUT_PATH:
693 snprintf(s, len,
694 "Path to video layout.");
695 break;
696 case MENU_ENUM_LABEL_VIDEO_LAYOUT_SELECTED_VIEW:
697 snprintf(s, len,
698 "Layouts can contain multiple views. \n"
699 "Select a view.");
700 break;
701 case MENU_ENUM_LABEL_INPUT_BIND_TIMEOUT:
702 snprintf(s, len,
703 "Input bind timer timeout (in seconds). \n"
704 "Amount of seconds to wait until proceeding \n"
705 "to the next bind.");
706 break;
707 case MENU_ENUM_LABEL_INPUT_BIND_HOLD:
708 snprintf(s, len,
709 "Input bind hold time (in seconds). \n"
710 "Amount of seconds to hold an input to bind it.");
711 break;
712 case MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE:
713 snprintf(s, len,
714 "Audio output samplerate.");
715 break;
716 case MENU_ENUM_LABEL_VIDEO_SHARED_CONTEXT:
717 snprintf(s, len,
718 "Set to true if hardware-rendered cores \n"
719 "should get their private context. \n"
720 "Avoids having to assume hardware state changes \n"
721 "inbetween frames.");
722 break;
723 case MENU_ENUM_LABEL_CORE_LIST:
724 snprintf(s, len,
725 "Load Core. \n"
726 " \n"
727 "Browse for a libretro core \n"
728 "implementation. Where the browser \n"
729 "starts depends on your Core Directory \n"
730 "path. If blank, it will start in root. \n"
731 " \n"
732 "If Core Directory is a directory, the menu \n"
733 "will use that as top folder. If Core \n"
734 "Directory is a full path, it will start \n"
735 "in the folder where the file is.");
736 break;
737 case MENU_ENUM_LABEL_VALUE_MENU_ENUM_CONTROLS_PROLOG:
738 snprintf(s, len,
739 "You can use the following controls below \n"
740 "on either your gamepad or keyboard in order\n"
741 "to control the menu: \n"
742 " \n");
743 break;
744 case MENU_ENUM_LABEL_WELCOME_TO_RETROARCH:
745 snprintf(s, len,
746 "Welcome to RetroArch\n");
747 break;
748 case MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC:
749 {
750 /* Work around C89 limitations */
751 char u[501];
752 const char *t =
753 "RetroArch relies on an unique form of\n"
754 "audio/video synchronization where it needs to be\n"
755 "calibrated against the refresh rate of your\n"
756 "display for best performance results.\n"
757 " \n"
758 "If you experience any audio crackling or video\n"
759 "tearing, usually it means that you need to\n"
760 "calibrate the settings. Some choices below:\n"
761 " \n";
762 snprintf(u, sizeof(u), /* can't inline this due to the printf arguments */
763 "a) Go to '%s' -> '%s', and enable\n"
764 "'Threaded Video'. Refresh rate will not matter\n"
765 "in this mode, framerate will be higher,\n"
766 "but video might be less smooth.\n"
767 "b) Go to '%s' -> '%s', and look at\n"
768 "'%s'. Let it run for\n"
769 "2048 frames, then press 'OK'.",
770 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS),
771 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS),
772 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS),
773 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS),
774 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO));
775 strlcpy(s, t, len);
776 strlcat(s, u, len);
777 }
778 break;
779 case MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC:
780 snprintf(s, len,
781 "To scan for content, go to '%s' and\n"
782 "select either '%s' or %s'.\n"
783 "\n"
784 "Files will be compared to database entries.\n"
785 "If there is a match, it will add an entry\n"
786 "to a playlist.\n"
787 "\n"
788 "You can then easily access this content by\n"
789 "going to '%s' ->\n"
790 "'%s'\n"
791 "instead of having to go through the\n"
792 "file browser every time.\n"
793 "\n"
794 "NOTE: Content for some cores might still not be\n"
795 "scannable.",
796 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST),
797 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_DIRECTORY),
798 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_FILE),
799 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST),
800 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLISTS_TAB));
801 break;
802 case MENU_ENUM_LABEL_VALUE_EXTRACTING_PLEASE_WAIT:
803 snprintf(s, len,
804 "Welcome to RetroArch\n"
805 "\n"
806 "Extracting assets, please wait.\n"
807 "This might take a while...\n");
808 break;
809 case MENU_ENUM_LABEL_INPUT_DRIVER:
810 {
811 const char *lbl = settings ? settings->arrays.input_driver : NULL;
812
813 if (string_is_equal(lbl, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_DRIVER_UDEV)))
814 snprintf(s, len,
815 "udev Input driver. \n"
816 " \n"
817 "It uses the recent evdev joypad API \n"
818 "for joystick support. It supports \n"
819 "hotplugging and force feedback. \n"
820 " \n"
821 "The driver reads evdev events for keyboard \n"
822 "support. It also supports keyboard callback, \n"
823 "mice and touchpads. \n"
824 " \n"
825 "By default in most distros, /dev/input nodes \n"
826 "are root-only (mode 600). You can set up a udev \n"
827 "rule which makes these accessible to non-root.");
828 else if (string_is_equal(lbl,
829 msg_hash_to_str(MENU_ENUM_LABEL_INPUT_DRIVER_LINUXRAW)))
830 snprintf(s, len,
831 "linuxraw Input driver. \n"
832 " \n"
833 "This driver requires an active TTY. Keyboard \n"
834 "events are read directly from the TTY which \n"
835 "makes it simpler, but not as flexible as udev. \n" "Mice, etc, are not supported at all. \n"
836 " \n"
837 "This driver uses the older joystick API \n"
838 "(/dev/input/js*).");
839 else
840 snprintf(s, len,
841 "Input driver.\n"
842 " \n"
843 "Depending on video driver, it might \n"
844 "force a different input driver.");
845 }
846 break;
847 case MENU_ENUM_LABEL_LOAD_CONTENT_LIST:
848 snprintf(s, len,
849 "Load Content. \n"
850 "Browse for content. \n"
851 " \n"
852 "To load content, you need a \n"
853 "'Core' to use, and a content file. \n"
854 " \n"
855 "To control where the menu starts \n"
856 "to browse for content, set \n"
857 "'File Browser Directory'. \n"
858 "If not set, it will start in root. \n"
859 " \n"
860 "The browser will filter out \n"
861 "extensions for the last core set \n"
862 "in 'Load Core', and use that core \n"
863 "when content is loaded.");
864 break;
865 case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY:
866 snprintf(s, len,
867 "Loading content from history. \n"
868 " \n"
869 "As content is loaded, content and libretro \n"
870 "core combinations are saved to history. \n"
871 " \n"
872 "The history is saved to a file in the same \n"
873 "directory as the RetroArch config file. If \n"
874 "no config file was loaded in startup, history \n"
875 "will not be saved or loaded, and will not exist \n"
876 "in the main menu.");
877 break;
878 case MENU_ENUM_LABEL_VIDEO_DRIVER:
879 {
880 const char *video_driver = settings->arrays.video_driver;
881
882 snprintf(s, len,
883 "Current Video driver.");
884
885 if (string_is_equal(video_driver, "gl"))
886 {
887 snprintf(s, len,
888 "OpenGL Video driver. \n"
889 " \n"
890 "This driver allows libretro GL cores to \n"
891 "be used in addition to software-rendered \n"
892 "core implementations.\n"
893 " \n"
894 "Performance for software-rendered and \n"
895 "libretro GL core implementations is \n"
896 "dependent on your graphics card's \n"
897 "underlying GL driver).");
898 }
899 else if (string_is_equal(video_driver, "sdl2"))
900 {
901 snprintf(s, len,
902 "SDL 2 Video driver.\n"
903 " \n"
904 "This is an SDL 2 software-rendered video \n"
905 "driver.\n"
906 " \n"
907 "Performance for software-rendered libretro \n"
908 "core implementations is dependent \n"
909 "on your platform SDL implementation.");
910 }
911 else if (string_is_equal(video_driver, "sdl1"))
912 {
913 snprintf(s, len,
914 "SDL Video driver.\n"
915 " \n"
916 "This is an SDL 1.2 software-rendered video \n"
917 "driver.\n"
918 " \n"
919 "Performance is considered to be suboptimal. \n"
920 "Consider using it only as a last resort.");
921 }
922 else if (string_is_equal(video_driver, "d3d"))
923 {
924 snprintf(s, len,
925 "Direct3D Video driver. \n"
926 " \n"
927 "Performance for software-rendered cores \n"
928 "is dependent on your graphic card's \n"
929 "underlying D3D driver).");
930 }
931 else if (string_is_equal(video_driver, "exynos"))
932 {
933 snprintf(s, len,
934 "Exynos-G2D Video Driver. \n"
935 " \n"
936 "This is a low-level Exynos video driver. \n"
937 "Uses the G2D block in Samsung Exynos SoC \n"
938 "for blit operations. \n"
939 " \n"
940 "Performance for software rendered cores \n"
941 "should be optimal.");
942 }
943 else if (string_is_equal(video_driver, "drm"))
944 {
945 snprintf(s, len,
946 "Plain DRM Video Driver. \n"
947 " \n"
948 "This is a low-level video driver using. \n"
949 "libdrm for hardware scaling using \n"
950 "GPU overlays.");
951 }
952 else if (string_is_equal(video_driver, "sunxi"))
953 {
954 snprintf(s, len,
955 "Sunxi-G2D Video Driver. \n"
956 " \n"
957 "This is a low-level Sunxi video driver. \n"
958 "Uses the G2D block in Allwinner SoCs.");
959 }
960 }
961 break;
962 case MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN:
963 snprintf(s, len,
964 "Audio DSP plugin.\n"
965 " Processes audio before it's sent to \n"
966 "the driver.");
967 break;
968 case MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER:
969 {
970 const char *lbl = settings ? settings->arrays.audio_resampler : NULL;
971
972 if (string_is_equal(lbl, msg_hash_to_str(
973 MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER_SINC)))
974 strlcpy(s,
975 "Windowed SINC implementation.", len);
976 else if (string_is_equal(lbl, msg_hash_to_str(
977 MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER_CC)))
978 strlcpy(s,
979 "Convoluted Cosine implementation.", len);
980 else if (string_is_empty(s))
981 strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);
982 }
983 break;
984
985 case MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION: snprintf(s, len, "SET CRT");
986 break;
987
988 case MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION_SUPER: snprintf(s, len, "SET CRT SUPER");
989 break;
990
991 case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET:
992 snprintf(s, len,
993 "Load Shader Preset. \n"
994 " \n"
995 " Load a shader preset directly. \n"
996 "The menu shader menu is updated accordingly. \n"
997 " \n"
998 "If the CGP uses scaling methods which are not \n"
999 "simple, (i.e. source scaling, same scaling \n"
1000 "factor for X/Y), the scaling factor displayed \n"
1001 "in the menu might not be correct.");
1002 break;
1003 case MENU_ENUM_LABEL_VIDEO_SHADER_SCALE_PASS:
1004 snprintf(s, len,
1005 "Scale for this pass. \n"
1006 " \n"
1007 "The scale factor accumulates, i.e. 2x \n"
1008 "for first pass and 2x for second pass \n"
1009 "will give you a 4x total scale. \n"
1010 " \n"
1011 "If there is a scale factor for last \n"
1012 "pass, the result is stretched to \n"
1013 "screen with the filter specified in \n"
1014 "'Default Filter'. \n"
1015 " \n"
1016 "If 'Don't Care' is set, either 1x \n"
1017 "scale or stretch to fullscreen will \n"
1018 "be used depending if it's not the last \n"
1019 "pass or not.");
1020 break;
1021 case MENU_ENUM_LABEL_VIDEO_SHADER_NUM_PASSES:
1022 snprintf(s, len,
1023 "Shader Passes. \n"
1024 " \n"
1025 "RetroArch allows you to mix and match various \n"
1026 "shaders with arbitrary shader passes, with \n"
1027 "custom hardware filters and scale factors. \n"
1028 " \n"
1029 "This option specifies the number of shader \n"
1030 "passes to use. If you set this to 0, and use \n"
1031 "Apply Shader Changes, you use a 'blank' shader. \n"
1032 " \n"
1033 "The Default Filter option will affect the \n"
1034 "stretching filter.");
1035 break;
1036 case MENU_ENUM_LABEL_VIDEO_SHADER_PARAMETERS:
1037 snprintf(s, len,
1038 "Shader Parameters. \n"
1039 " \n"
1040 "Modifies current shader directly. Will not be \n"
1041 "saved to CGP/GLSLP preset file.");
1042 break;
1043 case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_PARAMETERS:
1044 snprintf(s, len,
1045 "Shader Preset Parameters. \n"
1046 " \n"
1047 "Modifies shader preset currently in menu.");
1048 break;
1049 case MENU_ENUM_LABEL_VIDEO_SHADER_PASS:
1050 snprintf(s, len,
1051 "Path to shader. \n"
1052 " \n"
1053 "All shaders must be of the same \n"
1054 "type (i.e. CG, GLSL or HLSL). \n"
1055 " \n"
1056 "Set Shader Directory to set where \n"
1057 "the browser starts to look for \n"
1058 "shaders.");
1059 break;
1060 case MENU_ENUM_LABEL_CONFIGURATION_SETTINGS:
1061 snprintf(s, len,
1062 "Determines how configuration files \n"
1063 "are loaded and prioritized.");
1064 break;
1065 case MENU_ENUM_LABEL_CONFIG_SAVE_ON_EXIT:
1066 snprintf(s, len,
1067 "Saves config to disk on exit.\n"
1068 "Useful for menu as settings can be\n"
1069 "modified. Overwrites the config.\n"
1070 " \n"
1071 "#include's and comments are not \n"
1072 "preserved. \n"
1073 " \n"
1074 "By design, the config file is \n"
1075 "considered immutable as it is \n"
1076 "likely maintained by the user, \n"
1077 "and should not be overwritten \n"
1078 "behind the user's back."
1079 #if defined(RARCH_CONSOLE) || defined(RARCH_MOBILE)
1080 "\nThis is not not the case on \n"
1081 "consoles however, where \n"
1082 "looking at the config file \n"
1083 "manually isn't really an option."
1084 #endif
1085 );
1086 break;
1087 case MENU_ENUM_LABEL_CONFIRM_ON_EXIT:
1088 snprintf(s, len, "Are you sure you want to quit?");
1089 break;
1090 case MENU_ENUM_LABEL_SHOW_HIDDEN_FILES:
1091 snprintf(s, len, "Show hidden files\n"
1092 "and folders.");
1093 break;
1094 case MENU_ENUM_LABEL_VIDEO_SHADER_FILTER_PASS:
1095 snprintf(s, len,
1096 "Hardware filter for this pass. \n"
1097 " \n"
1098 "If 'Don't Care' is set, 'Default \n"
1099 "Filter' will be used.");
1100 break;
1101 case MENU_ENUM_LABEL_AUTOSAVE_INTERVAL:
1102 snprintf(s, len,
1103 "Autosaves the non-volatile SRAM \n"
1104 "at a regular interval.\n"
1105 " \n"
1106 "This is disabled by default unless set \n"
1107 "otherwise. The interval is measured in \n"
1108 "seconds. \n"
1109 " \n"
1110 "A value of 0 disables autosave.");
1111 break;
1112 case MENU_ENUM_LABEL_INPUT_BIND_DEVICE_TYPE:
1113 snprintf(s, len,
1114 "Input Device Type. \n"
1115 " \n"
1116 "Picks which device type to use. This is \n"
1117 "relevant for the libretro core itself.");
1118 break;
1119 case MENU_ENUM_LABEL_LIBRETRO_LOG_LEVEL:
1120 snprintf(s, len,
1121 "Sets log level for libretro cores \n"
1122 "(GET_LOG_INTERFACE). \n"
1123 " \n"
1124 " If a log level issued by a libretro \n"
1125 " core is below libretro_log level, it \n"
1126 " is ignored.\n"
1127 " \n"
1128 " DEBUG logs are always ignored unless \n"
1129 " verbose mode is activated (--verbose).\n"
1130 " \n"
1131 " DEBUG = 0\n"
1132 " INFO = 1\n"
1133 " WARN = 2\n"
1134 " ERROR = 3");
1135 break;
1136 case MENU_ENUM_LABEL_STATE_SLOT_INCREASE:
1137 case MENU_ENUM_LABEL_STATE_SLOT_DECREASE:
1138 snprintf(s, len,
1139 "State slots.\n"
1140 " \n"
1141 " With slot set to 0, save state name is *.state \n"
1142 " (or whatever defined on commandline).\n"
1143 "When slot is != 0, path will be (path)(d), \n"
1144 "where (d) is slot number.");
1145 break;
1146 case MENU_ENUM_LABEL_SHADER_APPLY_CHANGES:
1147 snprintf(s, len,
1148 "Apply Shader Changes. \n"
1149 " \n"
1150 "After changing shader settings, use this to \n"
1151 "apply changes. \n"
1152 " \n"
1153 "Changing shader settings is a somewhat \n"
1154 "expensive operation so it has to be \n"
1155 "done explicitly. \n"
1156 " \n"
1157 "When you apply shaders, the menu shader \n"
1158 "settings are saved to a temporary file (either \n"
1159 "menu.cgp or menu.glslp) and loaded. The file \n"
1160 "persists after RetroArch exits. The file is \n"
1161 "saved to Shader Directory.");
1162 break;
1163 case MENU_ENUM_LABEL_SHADER_WATCH_FOR_CHANGES:
1164 snprintf(s, len,
1165 "Watch shader files for new changes. \n"
1166 " \n"
1167 "After saving changes to a shader on disk, \n"
1168 "it will automatically be recompiled \n"
1169 "and applied to the running content.");
1170 break;
1171 case MENU_ENUM_LABEL_MENU_TOGGLE:
1172 snprintf(s, len,
1173 "Toggles menu.");
1174 break;
1175 case MENU_ENUM_LABEL_GRAB_MOUSE_TOGGLE:
1176 snprintf(s, len,
1177 "Toggles mouse grab.\n"
1178 " \n"
1179 "When mouse is grabbed, RetroArch hides the \n"
1180 "mouse, and keeps the mouse pointer inside \n"
1181 "the window to allow relative mouse input to \n"
1182 "work better.");
1183 break;
1184 case MENU_ENUM_LABEL_GAME_FOCUS_TOGGLE:
1185 snprintf(s, len,
1186 "Toggles game focus.\n"
1187 " \n"
1188 "When a game has focus, RetroArch will both disable \n"
1189 "hotkeys and keep/wrap the mouse pointer inside the window.");
1190 break;
1191 case MENU_ENUM_LABEL_DISK_NEXT:
1192 snprintf(s, len,
1193 "Cycles through disk images. Use after \n"
1194 "ejecting. \n"
1195 " \n"
1196 " Complete by toggling eject again.");
1197 break;
1198 case MENU_ENUM_LABEL_VIDEO_FILTER:
1199 #ifdef HAVE_FILTERS_BUILTIN
1200 snprintf(s, len,
1201 "CPU-based video filter.");
1202 #else
1203 snprintf(s, len,
1204 "CPU-based video filter.\n"
1205 " \n"
1206 "Path to a dynamic library.");
1207 #endif
1208 break;
1209 case MENU_ENUM_LABEL_AUDIO_DEVICE:
1210 snprintf(s, len,
1211 "Override the default audio device \n"
1212 "the audio driver uses.\n"
1213 "This is driver dependent. E.g.\n"
1214 #ifdef HAVE_ALSA
1215 " \n"
1216 "ALSA wants a PCM device."
1217 #endif
1218 #ifdef HAVE_OSS
1219 " \n"
1220 "OSS wants a path (e.g. /dev/dsp)."
1221 #endif
1222 #ifdef HAVE_JACK
1223 " \n"
1224 "JACK wants portnames (e.g. system:playback1\n"
1225 ",system:playback_2)."
1226 #endif
1227 #ifdef HAVE_RSOUND
1228 " \n"
1229 "RSound wants an IP address to an RSound \n"
1230 "server."
1231 #endif
1232 );
1233 break;
1234 case MENU_ENUM_LABEL_DISK_EJECT_TOGGLE:
1235 snprintf(s, len,
1236 "Toggles eject for disks.\n"
1237 " \n"
1238 "Used for multiple-disk content.");
1239 break;
1240 case MENU_ENUM_LABEL_ENABLE_HOTKEY:
1241 snprintf(s, len,
1242 "Enable other hotkeys.\n"
1243 " \n"
1244 " If this hotkey is bound to either keyboard, \n"
1245 "joybutton or joyaxis, all other hotkeys will \n"
1246 "be disabled unless this hotkey is also held \n"
1247 "at the same time. \n"
1248 " \n"
1249 "This is useful for RETRO_KEYBOARD centric \n"
1250 "implementations which query a large area of \n"
1251 "the keyboard, where it is not desirable that \n"
1252 "hotkeys get in the way.");
1253 break;
1254 case MENU_ENUM_LABEL_REWIND_ENABLE:
1255 snprintf(s, len,
1256 "Enable rewinding.\n"
1257 " \n"
1258 "This will take a performance hit, \n"
1259 "so it is disabled by default.");
1260 break;
1261 case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE:
1262 snprintf(s, len,
1263 "Apply cheat immediately after toggling.");
1264 break;
1265 case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_LOAD:
1266 snprintf(s, len,
1267 "Auto-apply cheats when game loads.");
1268 break;
1269 case MENU_ENUM_LABEL_LIBRETRO_DIR_PATH:
1270 snprintf(s, len,
1271 "Core Directory. \n"
1272 " \n"
1273 "A directory for where to search for \n"
1274 "libretro core implementations.");
1275 break;
1276 case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE_AUTO:
1277 snprintf(s, len,
1278 "Refresh Rate Auto.\n"
1279 " \n"
1280 "The accurate refresh rate of our monitor (Hz).\n"
1281 "This is used to calculate audio input rate with \n"
1282 "the formula: \n"
1283 " \n"
1284 "audio_input_rate = game input rate * display \n"
1285 "refresh rate / game refresh rate\n"
1286 " \n"
1287 "If the implementation does not report any \n"
1288 "values, NTSC defaults will be assumed for \n"
1289 "compatibility.\n"
1290 " \n"
1291 "This value should stay close to 60Hz to avoid \n"
1292 "large pitch changes. If your monitor does \n"
1293 "not run at 60Hz, or something close to it, \n"
1294 "disable VSync, and leave this at its default.");
1295 break;
1296 case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE_POLLED:
1297 snprintf(s, len,
1298 "Set Polled Refresh Rate\n"
1299 " \n"
1300 "Sets the refresh rate to the actual value\n"
1301 "polled from the display driver.");
1302 break;
1303 case MENU_ENUM_LABEL_VIDEO_ROTATION:
1304 snprintf(s, len,
1305 "Forces a certain rotation \n"
1306 "of the screen.\n"
1307 " \n"
1308 "The rotation is added to rotations which\n"
1309 "the libretro core sets (see Video Allow\n"
1310 "Rotate).");
1311 break;
1312 case MENU_ENUM_LABEL_VIDEO_SCALE:
1313 snprintf(s, len,
1314 "Fullscreen resolution.\n"
1315 " \n"
1316 "Resolution of 0 uses the \n"
1317 "resolution of the environment.\n");
1318 break;
1319 case MENU_ENUM_LABEL_FASTFORWARD_RATIO:
1320 snprintf(s, len,
1321 "Fastforward ratio.\n"
1322 " \n"
1323 "The maximum rate at which content will\n"
1324 "be run when using fast forward.\n"
1325 " \n"
1326 " (E.g. 5.0 for 60 fps content => 300 fps \n"
1327 "cap).\n"
1328 " \n"
1329 "RetroArch will go to sleep to ensure that \n"
1330 "the maximum rate will not be exceeded.\n"
1331 "Do not rely on this cap to be perfectly \n"
1332 "accurate.");
1333 break;
1334 case MENU_ENUM_LABEL_VRR_RUNLOOP_ENABLE:
1335 snprintf(s, len,
1336 "Sync to Exact Content Framerate.\n"
1337 " \n"
1338 "This option is the equivalent of forcing x1 speed\n"
1339 "while still allowing fast forward.\n"
1340 "No deviation from the core requested refresh rate,\n"
1341 "no sound Dynamic Rate Control.");
1342 break;
1343 case MENU_ENUM_LABEL_VIDEO_MONITOR_INDEX:
1344 snprintf(s, len,
1345 "Which monitor to prefer.\n"
1346 " \n"
1347 "0 (default) means no particular monitor \n"
1348 "is preferred, 1 and up (1 being first \n"
1349 "monitor), suggests RetroArch to use that \n"
1350 "particular monitor.");
1351 break;
1352 case MENU_ENUM_LABEL_VIDEO_CROP_OVERSCAN:
1353 snprintf(s, len,
1354 "Forces cropping of overscanned \n"
1355 "frames.\n"
1356 " \n"
1357 "Exact behavior of this option is \n"
1358 "core-implementation specific.");
1359 break;
1360 case MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER:
1361 snprintf(s, len,
1362 "Only scales video in integer \n"
1363 "steps.\n"
1364 " \n"
1365 "The base size depends on system-reported \n"
1366 "geometry and aspect ratio.\n"
1367 " \n"
1368 "If 'Force Aspect Ratio' is not set, X/Y will be \n"
1369 "integer scaled independently.");
1370 break;
1371 case MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER_OVERSCALE:
1372 snprintf(s, len,
1373 "Force integer scaling to round up \n"
1374 " to the next larger integer instead of rounding down.");
1375 break;
1376 case MENU_ENUM_LABEL_AUDIO_VOLUME:
1377 snprintf(s, len,
1378 "Audio volume, expressed in dB.\n"
1379 " \n"
1380 " 0 dB is normal volume. No gain will be applied.\n"
1381 "Gain can be controlled in runtime with Input\n"
1382 "Volume Up / Input Volume Down.");
1383 break;
1384 case MENU_ENUM_LABEL_AUDIO_RATE_CONTROL_DELTA:
1385 snprintf(s, len,
1386 "Audio rate control.\n"
1387 " \n"
1388 "Setting this to 0 disables rate control.\n"
1389 "Any other value controls audio rate control \n"
1390 "delta.\n"
1391 " \n"
1392 "Defines how much input rate can be adjusted \n"
1393 "dynamically.\n"
1394 " \n"
1395 " Input rate is defined as: \n"
1396 " input rate * (1.0 +/- (rate control delta))");
1397 break;
1398 case MENU_ENUM_LABEL_AUDIO_MAX_TIMING_SKEW:
1399 snprintf(s, len,
1400 "Maximum audio timing skew.\n"
1401 " \n"
1402 "Defines the maximum change in input rate.\n"
1403 "You may want to increase this to enable\n"
1404 "very large changes in timing, for example\n"
1405 "running PAL cores on NTSC displays, at the\n"
1406 "cost of inaccurate audio pitch.\n"
1407 " \n"
1408 " Input rate is defined as: \n"
1409 " input rate * (1.0 +/- (max timing skew))");
1410 break;
1411 case MENU_ENUM_LABEL_OVERLAY_NEXT:
1412 snprintf(s, len,
1413 "Toggles to next overlay.\n"
1414 " \n"
1415 "Wraps around.");
1416 break;
1417 case MENU_ENUM_LABEL_LOG_VERBOSITY:
1418 snprintf(s, len,
1419 "Enable or disable verbosity level \n"
1420 "of frontend.");
1421 break;
1422 case MENU_ENUM_LABEL_VOLUME_UP:
1423 snprintf(s, len,
1424 "Increases audio volume.");
1425 break;
1426 case MENU_ENUM_LABEL_VOLUME_DOWN:
1427 snprintf(s, len,
1428 "Decreases audio volume.");
1429 break;
1430 case MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION:
1431 snprintf(s, len,
1432 "Forcibly disable composition.\n"
1433 "Only valid on Windows Vista/7 for now.");
1434 break;
1435 case MENU_ENUM_LABEL_PERFCNT_ENABLE:
1436 snprintf(s, len,
1437 "Enable or disable frontend \n"
1438 "performance counters.");
1439 break;
1440 case MENU_ENUM_LABEL_SYSTEM_DIRECTORY:
1441 snprintf(s, len,
1442 "System Directory. \n"
1443 " \n"
1444 "Sets the 'system' directory.\n"
1445 "Cores can query for this\n"
1446 "directory to load BIOSes, \n"
1447 "system-specific configs, etc.");
1448 break;
1449 case MENU_ENUM_LABEL_SAVESTATE_AUTO_SAVE:
1450 case MENU_ENUM_LABEL_SAVESTATE_AUTO_LOAD:
1451 snprintf(s, len,
1452 "Automatically saves a savestate at the \n"
1453 "end of RetroArch's lifetime.\n"
1454 " \n"
1455 "RetroArch will automatically load any savestate\n"
1456 "with this path on startup if 'Auto Load State\n"
1457 "is enabled.");
1458 break;
1459 case MENU_ENUM_LABEL_VIDEO_THREADED:
1460 snprintf(s, len,
1461 "Use threaded video driver.\n"
1462 " \n"
1463 "Using this might improve performance at the \n"
1464 "possible cost of latency and more video \n"
1465 "stuttering.");
1466 break;
1467 case MENU_ENUM_LABEL_VIDEO_VSYNC:
1468 snprintf(s, len,
1469 "Video V-Sync.\n");
1470 break;
1471 case MENU_ENUM_LABEL_VIDEO_HARD_SYNC:
1472 snprintf(s, len,
1473 "Attempts to hard-synchronize \n"
1474 "CPU and GPU.\n"
1475 " \n"
1476 "Can reduce latency at the cost of \n"
1477 "performance.");
1478 break;
1479 case MENU_ENUM_LABEL_REWIND_GRANULARITY:
1480 snprintf(s, len,
1481 "Rewind granularity.\n"
1482 " \n"
1483 " When rewinding defined number of \n"
1484 "frames, you can rewind several frames \n"
1485 "at a time, increasing the rewinding \n"
1486 "speed.");
1487 break;
1488 case MENU_ENUM_LABEL_REWIND_BUFFER_SIZE:
1489 snprintf(s, len,
1490 "Rewind buffer size (MB).\n"
1491 " \n"
1492 " The amount of memory in MB to reserve \n"
1493 "for rewinding. Increasing this value \n"
1494 "increases the rewind history length.\n");
1495 break;
1496 case MENU_ENUM_LABEL_REWIND_BUFFER_SIZE_STEP:
1497 snprintf(s, len,
1498 "Rewind buffer size step (MB).\n"
1499 " \n"
1500 " Each time you increase or decrease \n"
1501 "the rewind buffer size value via this \n"
1502 "UI it will change by this amount.\n");
1503 break;
1504 case MENU_ENUM_LABEL_SCREENSHOT:
1505 snprintf(s, len,
1506 "Take screenshot.");
1507 break;
1508 case MENU_ENUM_LABEL_VIDEO_FRAME_DELAY:
1509 snprintf(s, len,
1510 "Sets how many milliseconds to delay\n"
1511 "after VSync before running the core.\n"
1512 "\n"
1513 "Can reduce latency at the cost of\n"
1514 "higher risk of stuttering.\n"
1515 " \n"
1516 "Maximum is 15.");
1517 break;
1518 case MENU_ENUM_LABEL_VIDEO_SHADER_DELAY:
1519 snprintf(s, len,
1520 "Sets by how many milliseconds auto-loading shaders\n"
1521 "are delayed.\n"
1522 "\n"
1523 "Can work around graphical glitches due to using\n"
1524 "'screen grabbing' software like streaming software.");
1525 break;
1526 case MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES:
1527 snprintf(s, len,
1528 "Sets how many frames CPU can \n"
1529 "run ahead of GPU when using 'GPU \n"
1530 "Hard Sync'.\n"
1531 " \n"
1532 "Maximum is 3.\n"
1533 " \n"
1534 " 0: Syncs to GPU immediately.\n"
1535 " 1: Syncs to previous frame.\n"
1536 " 2: Etc ...");
1537 break;
1538 case MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION:
1539 snprintf(s, len,
1540 "Inserts a black frame inbetween \n"
1541 "frames.\n"
1542 " \n"
1543 "Useful for 120 Hz monitors who want to \n"
1544 "play 60 Hz material with eliminated \n"
1545 "ghosting.\n"
1546 " \n"
1547 "Video refresh rate should still be \n"
1548 "configured as if it is a 60 Hz monitor \n"
1549 "(divide refresh rate by 2).");
1550 break;
1551 case MENU_ENUM_LABEL_RGUI_SHOW_START_SCREEN:
1552 snprintf(s, len,
1553 "Show startup screen in menu.\n"
1554 "Is automatically set to false when seen\n"
1555 "for the first time.\n"
1556 " \n"
1557 "This is only updated in config if\n"
1558 "'Save Configuration on Exit' is enabled.\n");
1559 break;
1560 case MENU_ENUM_LABEL_VIDEO_FULLSCREEN:
1561 snprintf(s, len, "Toggles fullscreen.");
1562 break;
1563 case MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE:
1564 snprintf(s, len,
1565 "Block SRAM from being overwritten \n"
1566 "when loading save states.\n"
1567 " \n"
1568 "Might potentially lead to buggy games.");
1569 break;
1570 case MENU_ENUM_LABEL_PAUSE_NONACTIVE:
1571 snprintf(s, len,
1572 "Pause gameplay when window focus \n"
1573 "is lost.");
1574 break;
1575 case MENU_ENUM_LABEL_VIDEO_GPU_SCREENSHOT:
1576 snprintf(s, len,
1577 "Screenshots output of GPU shaded \n"
1578 "material if available.");
1579 break;
1580 case MENU_ENUM_LABEL_SCREENSHOT_DIRECTORY:
1581 snprintf(s, len,
1582 "Screenshot Directory. \n"
1583 " \n"
1584 "Directory to dump screenshots to.");
1585 break;
1586 case MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL:
1587 snprintf(s, len,
1588 "VSync Swap Interval.\n"
1589 " \n"
1590 "Uses a custom swap interval for VSync. Set this \n"
1591 "to effectively halve monitor refresh rate.");
1592 break;
1593 case MENU_ENUM_LABEL_SAVEFILE_DIRECTORY:
1594 snprintf(s, len,
1595 "Savefile Directory. \n"
1596 " \n"
1597 "Save all save files (*.srm) to this \n"
1598 "directory. This includes related files like \n"
1599 ".bsv, .rt, .psrm, etc...\n"
1600 " \n"
1601 "This will be overridden by explicit command line\n"
1602 "options.");
1603 break;
1604 case MENU_ENUM_LABEL_SAVESTATE_DIRECTORY:
1605 snprintf(s, len,
1606 "Savestate Directory. \n"
1607 " \n"
1608 "Save all save states (*.state) to this \n"
1609 "directory.\n"
1610 " \n"
1611 "This will be overridden by explicit command line\n"
1612 "options.");
1613 break;
1614 case MENU_ENUM_LABEL_ASSETS_DIRECTORY:
1615 snprintf(s, len,
1616 "Assets Directory. \n"
1617 " \n"
1618 " This location is queried by default when \n"
1619 "menu interfaces try to look for loadable \n"
1620 "assets, etc.");
1621 break;
1622 case MENU_ENUM_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY:
1623 snprintf(s, len,
1624 "Dynamic Wallpapers Directory. \n"
1625 " \n"
1626 " The place to store backgrounds that will \n"
1627 "be loaded dynamically by the menu depending \n"
1628 "on context.");
1629 break;
1630 case MENU_ENUM_LABEL_SLOWMOTION_RATIO:
1631 snprintf(s, len,
1632 "Slowmotion ratio."
1633 " \n"
1634 "When slowmotion, content will slow\n"
1635 "down by factor.");
1636 break;
1637 case MENU_ENUM_LABEL_INPUT_BUTTON_AXIS_THRESHOLD:
1638 snprintf(s, len,
1639 "Defines the axis threshold.\n"
1640 " \n"
1641 "How far an axis must be tilted to result\n"
1642 "in a button press.\n"
1643 " Possible values are [0.0, 1.0].");
1644 break;
1645 case MENU_ENUM_LABEL_INPUT_TURBO_PERIOD:
1646 snprintf(s, len,
1647 "Turbo period.\n"
1648 " \n"
1649 "Describes the period of which turbo-enabled\n"
1650 "buttons toggle.\n"
1651 " \n"
1652 "Numbers are described in frames.");
1653 break;
1654 case MENU_ENUM_LABEL_INPUT_TURBO_MODE:
1655 snprintf(s, len,
1656 "Turbo Mode.\n"
1657 " \n"
1658 "Selects the general behavior of turbo mode.");
1659 break;
1660 case MENU_ENUM_LABEL_INPUT_TURBO_DEFAULT_BUTTON:
1661 snprintf(s, len,
1662 "Turbo Default Button.\n"
1663 " \n"
1664 "Default active button for Turbo Mode 'Single Button'.\n");
1665 break;
1666 case MENU_ENUM_LABEL_INPUT_DUTY_CYCLE:
1667 snprintf(s, len,
1668 "Duty cycle.\n"
1669 " \n"
1670 "Describes how long the period of a turbo-enabled\n"
1671 "should be.\n"
1672 " \n"
1673 "Numbers are described in frames.");
1674 break;
1675 case MENU_ENUM_LABEL_INPUT_TOUCH_ENABLE:
1676 snprintf(s, len, "Enable touch support.");
1677 break;
1678 case MENU_ENUM_LABEL_INPUT_PREFER_FRONT_TOUCH:
1679 snprintf(s, len, "Use front instead of back touch.");
1680 break;
1681 case MENU_ENUM_LABEL_MOUSE_ENABLE:
1682 snprintf(s, len, "Enable mouse input inside the menu.");
1683 break;
1684 case MENU_ENUM_LABEL_POINTER_ENABLE:
1685 snprintf(s, len, "Enable touch input inside the menu.");
1686 break;
1687 case MENU_ENUM_LABEL_MENU_WALLPAPER:
1688 snprintf(s, len, "Path to an image to set as the background.");
1689 break;
1690 case MENU_ENUM_LABEL_NAVIGATION_WRAPAROUND:
1691 snprintf(s, len,
1692 "Wrap-around to beginning and/or end \n"
1693 "if boundary of list is reached \n"
1694 "horizontally and/or vertically.");
1695 break;
1696 case MENU_ENUM_LABEL_PAUSE_LIBRETRO:
1697 snprintf(s, len,
1698 "If disabled, the game will keep \n"
1699 "running in the background when we are in the \n"
1700 "menu.");
1701 break;
1702 case MENU_ENUM_LABEL_SUSPEND_SCREENSAVER_ENABLE:
1703 snprintf(s, len,
1704 "Suspends the screensaver. Is a hint that \n"
1705 "does not necessarily have to be \n"
1706 "honored by the video driver.");
1707 break;
1708 case MENU_ENUM_LABEL_NETPLAY_MODE:
1709 snprintf(s, len,
1710 "Netplay client mode for the current user. \n"
1711 "Will be 'Server' mode if disabled.");
1712 break;
1713 case MENU_ENUM_LABEL_NETPLAY_DELAY_FRAMES:
1714 snprintf(s, len,
1715 "The amount of delay frames to use for netplay. \n"
1716 " \n"
1717 "Increasing this value will increase \n"
1718 "performance, but introduce more latency.");
1719 break;
1720 case MENU_ENUM_LABEL_NETPLAY_PUBLIC_ANNOUNCE:
1721 snprintf(s, len,
1722 "Whether to announce netplay games publicly. \n"
1723 " \n"
1724 "If set to false, clients must manually connect \n"
1725 "rather than using the public lobby.");
1726 break;
1727 case MENU_ENUM_LABEL_NETPLAY_START_AS_SPECTATOR:
1728 snprintf(s, len,
1729 "Whether to start netplay in spectator mode. \n"
1730 " \n"
1731 "If set to true, netplay will be in spectator mode \n"
1732 "on start. It's always possible to change mode \n"
1733 "later.");
1734 break;
1735 case MENU_ENUM_LABEL_NETPLAY_ALLOW_SLAVES:
1736 snprintf(s, len,
1737 "Whether to allow connections in slave mode. \n"
1738 " \n"
1739 "Slave-mode clients require very little processing \n"
1740 "power on either side, but will suffer \n"
1741 "significantly from network latency.");
1742 break;
1743 case MENU_ENUM_LABEL_NETPLAY_REQUIRE_SLAVES:
1744 snprintf(s, len,
1745 "Whether to disallow connections not in slave mode. \n"
1746 " \n"
1747 "Not recommended except for very fast networks \n"
1748 "with very weak machines.");
1749 break;
1750 case MENU_ENUM_LABEL_NETPLAY_STATELESS_MODE:
1751 snprintf(s, len,
1752 "Whether to run netplay in a mode not requiring"
1753 "save states. \n"
1754 " \n"
1755 "If set to true, a very fast network is required, \n"
1756 "but no rewinding is performed, so there will be \n"
1757 "no netplay jitter. \n");
1758 break;
1759 case MENU_ENUM_LABEL_NETPLAY_CHECK_FRAMES:
1760 snprintf(s, len,
1761 "The frequency in frames with which netplay \n"
1762 "will verify that the host and client are in \n"
1763 "sync. \n"
1764 " \n"
1765 "With most cores, this value will have no \n"
1766 "visible effect and can be ignored. With \n"
1767 "nondeterminstic cores, this value determines \n"
1768 "how often the netplay peers will be brought \n"
1769 "into sync. With buggy cores, setting this \n"
1770 "to any non-zero value will cause severe \n"
1771 "performance issues. Set to zero to perform \n"
1772 "no checks. This value is only used on the \n"
1773 "netplay host. \n");
1774 break;
1775 case MENU_ENUM_LABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN:
1776 snprintf(s, len,
1777 "The number of frames of input latency for \n"
1778 "netplay to use to hide network latency. \n"
1779 " \n"
1780 "When in netplay, this option delays local \n"
1781 "input, so that the frame being run is \n"
1782 "closer to the frames being received from \n"
1783 "the network. This reduces jitter and makes \n"
1784 "netplay less CPU-intensive, but at the \n"
1785 "price of noticeable input lag. \n");
1786 break;
1787 case MENU_ENUM_LABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE:
1788 snprintf(s, len,
1789 "The range of frames of input latency that \n"
1790 "may be used by netplay to hide network \n"
1791 "latency. \n"
1792 "\n"
1793 "If set, netplay will adjust the number of \n"
1794 "frames of input latency dynamically to \n"
1795 "balance CPU time, input latency and \n"
1796 "network latency. This reduces jitter and \n"
1797 "makes netplay less CPU-intensive, but at \n"
1798 "the price of unpredictable input lag. \n");
1799 break;
1800 case MENU_ENUM_LABEL_NETPLAY_NAT_TRAVERSAL:
1801 snprintf(s, len,
1802 "When hosting, attempt to listen for\n"
1803 "connections from the public internet, using\n"
1804 "UPnP or similar technologies to escape LANs. \n");
1805 break;
1806 case MENU_ENUM_LABEL_NETPLAY_USE_MITM_SERVER:
1807 snprintf(s, len,
1808 "When hosting a netplay session, relay connection through a \n"
1809 "man-in-the-middle server \n"
1810 "to get around firewalls or NAT/UPnP issues. \n");
1811 break;
1812 case MENU_ENUM_LABEL_NETPLAY_MITM_SERVER:
1813 snprintf(s, len,
1814 "Specifies the man-in-the-middle server \n"
1815 "to use for netplay. A server that is \n"
1816 "located closer to you may have less latency. \n");
1817 break;
1818 case MENU_ENUM_LABEL_VIDEO_MAX_SWAPCHAIN_IMAGES:
1819 snprintf(s, len,
1820 "Maximum amount of swapchain images. This \n"
1821 "can tell the video driver to use a specific \n"
1822 "video buffering mode. \n"
1823 " \n"
1824 "Single buffering - 1\n"
1825 "Double buffering - 2\n"
1826 "Triple buffering - 3\n"
1827 " \n"
1828 "Setting the right buffering mode can have \n"
1829 "a big impact on latency.");
1830 break;
1831 case MENU_ENUM_LABEL_VIDEO_SMOOTH:
1832 snprintf(s, len,
1833 "Smoothens picture with bilinear filtering. \n"
1834 "Should be disabled if using shaders.");
1835 break;
1836 case MENU_ENUM_LABEL_VIDEO_CTX_SCALING:
1837 snprintf(s, len,
1838 #ifdef HAVE_ODROIDGO2
1839 "RGA scaling and bicubic filtering. May break widgets."
1840 #else
1841 "Hardware context scaling (if available)."
1842 #endif
1843 );
1844 break;
1845 case MENU_ENUM_LABEL_TIMEDATE_ENABLE:
1846 snprintf(s, len,
1847 "Shows current date and/or time inside menu.");
1848 break;
1849 case MENU_ENUM_LABEL_TIMEDATE_STYLE:
1850 snprintf(s, len,
1851 "Style to show the current date and/or time in.");
1852 break;
1853 case MENU_ENUM_LABEL_BATTERY_LEVEL_ENABLE:
1854 snprintf(s, len,
1855 "Shows current battery level inside menu.");
1856 break;
1857 case MENU_ENUM_LABEL_CORE_ENABLE:
1858 snprintf(s, len,
1859 "Shows current core inside menu.");
1860 break;
1861 case MENU_ENUM_LABEL_NETPLAY_ENABLE_HOST:
1862 snprintf(s, len,
1863 "Enables Netplay in host (server) mode.");
1864 break;
1865 case MENU_ENUM_LABEL_NETPLAY_ENABLE_CLIENT:
1866 snprintf(s, len,
1867 "Enables Netplay in client mode.");
1868 break;
1869 case MENU_ENUM_LABEL_NETPLAY_DISCONNECT:
1870 snprintf(s, len,
1871 "Disconnects an active Netplay connection.");
1872 break;
1873 case MENU_ENUM_LABEL_NETPLAY_LAN_SCAN_SETTINGS:
1874 snprintf(s, len,
1875 "Search for and connect to netplay hosts on the local network.");
1876 break;
1877 case MENU_ENUM_LABEL_NETPLAY_SETTINGS:
1878 snprintf(s, len,
1879 "Setting related to Netplay.");
1880 break;
1881 case MENU_ENUM_LABEL_DYNAMIC_WALLPAPER:
1882 snprintf(s, len,
1883 "Dynamically load a new background \n"
1884 "depending on context.");
1885 break;
1886 case MENU_ENUM_LABEL_CORE_UPDATER_BUILDBOT_URL:
1887 snprintf(s, len,
1888 "URL to core updater directory on the \n"
1889 "Libretro buildbot.");
1890 break;
1891 case MENU_ENUM_LABEL_BUILDBOT_ASSETS_URL:
1892 snprintf(s, len,
1893 "URL to assets updater directory on the \n"
1894 "Libretro buildbot.");
1895 break;
1896 case MENU_ENUM_LABEL_INPUT_REMAP_BINDS_ENABLE:
1897 snprintf(s, len,
1898 "if enabled, overrides the input binds \n"
1899 "with the remapped binds set for the \n"
1900 "current core.");
1901 break;
1902 case MENU_ENUM_LABEL_OVERLAY_DIRECTORY:
1903 snprintf(s, len,
1904 "Overlay Directory. \n"
1905 " \n"
1906 "Defines a directory where overlays are \n"
1907 "kept for easy access.");
1908 break;
1909 case MENU_ENUM_LABEL_VIDEO_LAYOUT_DIRECTORY:
1910 snprintf(s, len,
1911 "Video Layout Directory. \n"
1912 " \n"
1913 "Defines a directory where video layouts are \n"
1914 "kept for easy access.");
1915 break;
1916 case MENU_ENUM_LABEL_INPUT_MAX_USERS:
1917 snprintf(s, len,
1918 "Maximum amount of users supported by \n"
1919 "RetroArch.");
1920 break;
1921 case MENU_ENUM_LABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE:
1922 snprintf(s, len,
1923 "After downloading, automatically extract \n"
1924 "archives that the downloads are contained \n"
1925 "inside.");
1926 break;
1927 case MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE:
1928 snprintf(s, len,
1929 "Filter files being shown by \n"
1930 "supported extensions.");
1931 break;
1932 case MENU_ENUM_LABEL_NETPLAY_NICKNAME:
1933 snprintf(s, len,
1934 "The username of the person running RetroArch. \n"
1935 "This will be used for playing online games.");
1936 break;
1937 case MENU_ENUM_LABEL_NETPLAY_TCP_UDP_PORT:
1938 snprintf(s, len,
1939 "The port of the host IP address. \n"
1940 "Can be either a TCP or UDP port.");
1941 break;
1942 case MENU_ENUM_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE:
1943 snprintf(s, len,
1944 "Enable or disable spectator mode for \n"
1945 "the user during netplay.");
1946 break;
1947 case MENU_ENUM_LABEL_NETPLAY_IP_ADDRESS:
1948 snprintf(s, len,
1949 "The address of the host to connect to.");
1950 break;
1951 case MENU_ENUM_LABEL_NETPLAY_PASSWORD:
1952 snprintf(s, len,
1953 "The password for connecting to the netplay \n"
1954 "host. Used only in host mode.");
1955 break;
1956 case MENU_ENUM_LABEL_NETPLAY_SPECTATE_PASSWORD:
1957 snprintf(s, len,
1958 "The password for connecting to the netplay \n"
1959 "host with only spectator privileges. Used \n"
1960 "only in host mode.");
1961 break;
1962 case MENU_ENUM_LABEL_STDIN_CMD_ENABLE:
1963 snprintf(s, len,
1964 "Enable stdin command interface.");
1965 break;
1966 case MENU_ENUM_LABEL_UI_COMPANION_START_ON_BOOT:
1967 snprintf(s, len,
1968 "Start User Interface companion driver \n"
1969 "on boot (if available).");
1970 break;
1971 case MENU_ENUM_LABEL_MENU_DRIVER:
1972 snprintf(s, len, "Menu driver to use.");
1973 break;
1974 case MENU_ENUM_LABEL_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO:
1975 snprintf(s, len,
1976 "Gamepad button combination to toggle menu. \n"
1977 " \n"
1978 "0 - None \n"
1979 "1 - Press L + R + Y + D-Pad Down \n"
1980 "simultaneously. \n"
1981 "2 - Press L3 + R3 simultaneously. \n"
1982 "3 - Press Start + Select simultaneously.");
1983 break;
1984 case MENU_ENUM_LABEL_INPUT_ALL_USERS_CONTROL_MENU:
1985 snprintf(s, len, "Allows any user to control the menu. \n"
1986 " \n"
1987 "When disabled, only user 1 can control the menu.");
1988 break;
1989 case MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE:
1990 snprintf(s, len,
1991 "Enable input auto-detection.\n"
1992 " \n"
1993 "Will attempt to auto-configure \n"
1994 "joypads, Plug-and-Play style.");
1995 break;
1996 case MENU_ENUM_LABEL_CAMERA_ALLOW:
1997 snprintf(s, len,
1998 "Allow or disallow camera access by \n"
1999 "cores.");
2000 break;
2001 case MENU_ENUM_LABEL_LOCATION_ALLOW:
2002 snprintf(s, len,
2003 "Allow or disallow location services \n"
2004 "access by cores.");
2005 break;
2006 case MENU_ENUM_LABEL_TURBO:
2007 snprintf(s, len,
2008 "Turbo enable.\n"
2009 " \n"
2010 "Holding the turbo while pressing another \n"
2011 "button will let the button enter a turbo \n"
2012 "mode where the button state is modulated \n"
2013 "with a periodic signal. \n"
2014 " \n"
2015 "The modulation stops when the button \n"
2016 "itself (not turbo button) is released.");
2017 break;
2018 case MENU_ENUM_LABEL_OSK_ENABLE:
2019 snprintf(s, len,
2020 "Enable/disable on-screen keyboard.");
2021 break;
2022 case MENU_ENUM_LABEL_AUDIO_MUTE:
2023 snprintf(s, len,
2024 "Mute/unmute audio.");
2025 break;
2026 case MENU_ENUM_LABEL_REWIND:
2027 snprintf(s, len,
2028 "Hold button down to rewind.\n"
2029 " \n"
2030 "Rewind must be enabled.");
2031 break;
2032 case MENU_ENUM_LABEL_EXIT_EMULATOR:
2033 snprintf(s, len,
2034 "Key to exit RetroArch cleanly."
2035 #if !defined(RARCH_MOBILE) && !defined(RARCH_CONSOLE)
2036 "\nKilling it in any hard way (SIGKILL, \n"
2037 "etc) will terminate without saving\n"
2038 "RAM, etc. On Unix-likes,\n"
2039 "SIGINT/SIGTERM allows\n"
2040 "a clean deinitialization."
2041 #endif
2042 );
2043 break;
2044 case MENU_ENUM_LABEL_LOAD_STATE:
2045 snprintf(s, len,
2046 "Loads state.");
2047 break;
2048 case MENU_ENUM_LABEL_SAVE_STATE:
2049 snprintf(s, len,
2050 "Saves state.");
2051 break;
2052 case MENU_ENUM_LABEL_NETPLAY_GAME_WATCH:
2053 snprintf(s, len,
2054 "Netplay toggle play/spectate mode.");
2055 break;
2056 case MENU_ENUM_LABEL_CHEAT_INDEX_PLUS:
2057 snprintf(s, len,
2058 "Increase cheat index.");
2059 break;
2060 case MENU_ENUM_LABEL_CHEAT_INDEX_MINUS:
2061 snprintf(s, len,
2062 "Decrease cheat index.");
2063 break;
2064 case MENU_ENUM_LABEL_SHADER_PREV:
2065 snprintf(s, len,
2066 "Applies previous shader in directory.");
2067 break;
2068 case MENU_ENUM_LABEL_SHADER_NEXT:
2069 snprintf(s, len,
2070 "Applies next shader in directory.");
2071 break;
2072 case MENU_ENUM_LABEL_RESET:
2073 snprintf(s, len,
2074 "Reset the content.");
2075 break;
2076 case MENU_ENUM_LABEL_PAUSE_TOGGLE:
2077 snprintf(s, len,
2078 "Toggle between paused and non-paused state.");
2079 break;
2080 case MENU_ENUM_LABEL_CHEAT_TOGGLE:
2081 snprintf(s, len,
2082 "Toggle cheat index.");
2083 break;
2084 case MENU_ENUM_LABEL_CHEAT_IDX:
2085 snprintf(s, len,
2086 "Index position in list.");
2087 break;
2088 case MENU_ENUM_LABEL_CHEAT_ADDRESS_BIT_POSITION:
2089 snprintf(s, len,
2090 "Address bitmask when Memory Search Size < 8-bit.");
2091 break;
2092 case MENU_ENUM_LABEL_CHEAT_REPEAT_COUNT:
2093 snprintf(s, len,
2094 "The number of times the cheat will be applied.\nUse with the other two Iteration options to affect large areas of memory.");
2095 break;
2096 case MENU_ENUM_LABEL_CHEAT_REPEAT_ADD_TO_ADDRESS:
2097 snprintf(s, len,
2098 "After each 'Number of Iterations' the Memory Address will be increased by this number times the 'Memory Search Size'.");
2099 break;
2100 case MENU_ENUM_LABEL_CHEAT_REPEAT_ADD_TO_VALUE:
2101 snprintf(s, len,
2102 "After each 'Number of Iterations' the Value will be increased by this amount.");
2103 break;
2104 case MENU_ENUM_LABEL_CHEAT_MATCH_IDX:
2105 snprintf(s, len,
2106 "Select the match to view.");
2107 break;
2108 case MENU_ENUM_LABEL_CHEAT_START_OR_CONT:
2109 snprintf(s, len,
2110 "Scan memory to create new cheats.");
2111 break;
2112 case MENU_ENUM_LABEL_CHEAT_START_OR_RESTART:
2113 snprintf(s, len,
2114 "Left/Right to change bit-size.");
2115 break;
2116 case MENU_ENUM_LABEL_CHEAT_SEARCH_EXACT:
2117 snprintf(s, len,
2118 "Left/Right to change value.");
2119 break;
2120 case MENU_ENUM_LABEL_CHEAT_SEARCH_LT:
2121 snprintf(s, len,
2122 " ");
2123 break;
2124 case MENU_ENUM_LABEL_CHEAT_SEARCH_GT:
2125 snprintf(s, len,
2126 " ");
2127 break;
2128 case MENU_ENUM_LABEL_CHEAT_SEARCH_EQ:
2129 snprintf(s, len,
2130 " ");
2131 break;
2132 case MENU_ENUM_LABEL_CHEAT_SEARCH_NEQ:
2133 snprintf(s, len,
2134 " ");
2135 break;
2136 case MENU_ENUM_LABEL_CHEAT_SEARCH_EQPLUS:
2137 snprintf(s, len,
2138 "Left/Right to change value.");
2139 break;
2140 case MENU_ENUM_LABEL_CHEAT_SEARCH_EQMINUS:
2141 snprintf(s, len,
2142 "Left/Right to change value.");
2143 break;
2144 case MENU_ENUM_LABEL_CHEAT_ADD_MATCHES:
2145 snprintf(s, len,
2146 " ");
2147 break;
2148 case MENU_ENUM_LABEL_CHEAT_VIEW_MATCHES:
2149 snprintf(s, len,
2150 " ");
2151 break;
2152 case MENU_ENUM_LABEL_CHEAT_CREATE_OPTION:
2153 snprintf(s, len,
2154 " ");
2155 break;
2156 case MENU_ENUM_LABEL_CHEAT_DELETE_OPTION:
2157 snprintf(s, len,
2158 " ");
2159 break;
2160 case MENU_ENUM_LABEL_CHEAT_ADD_NEW_TOP:
2161 snprintf(s, len,
2162 " ");
2163 break;
2164 case MENU_ENUM_LABEL_CHEAT_RELOAD_CHEATS:
2165 snprintf(s, len,
2166 " ");
2167 break;
2168 case MENU_ENUM_LABEL_CHEAT_ADD_NEW_BOTTOM:
2169 snprintf(s, len,
2170 " ");
2171 break;
2172 case MENU_ENUM_LABEL_CHEAT_DELETE_ALL:
2173 snprintf(s, len,
2174 " ");
2175 break;
2176 case MENU_ENUM_LABEL_CHEAT_BIG_ENDIAN:
2177 snprintf(s, len,
2178 "Big endian : 258 = 0x0102\n"
2179 "Little endian : 258 = 0x0201");
2180 break;
2181 case MENU_ENUM_LABEL_HOLD_FAST_FORWARD:
2182 snprintf(s, len,
2183 "Hold for fast-forward. Releasing button \n"
2184 "disables fast-forward.");
2185 break;
2186 case MENU_ENUM_LABEL_SLOWMOTION_HOLD:
2187 snprintf(s, len,
2188 "Hold for slowmotion.");
2189 break;
2190 case MENU_ENUM_LABEL_FRAME_ADVANCE:
2191 snprintf(s, len,
2192 "Frame advance when content is paused.");
2193 break;
2194 case MENU_ENUM_LABEL_BSV_RECORD_TOGGLE:
2195 snprintf(s, len,
2196 "Toggle between recording and not.");
2197 break;
2198 case MENU_ENUM_LABEL_L_X_PLUS:
2199 case MENU_ENUM_LABEL_L_X_MINUS:
2200 case MENU_ENUM_LABEL_L_Y_PLUS:
2201 case MENU_ENUM_LABEL_L_Y_MINUS:
2202 case MENU_ENUM_LABEL_R_X_PLUS:
2203 case MENU_ENUM_LABEL_R_X_MINUS:
2204 case MENU_ENUM_LABEL_R_Y_PLUS:
2205 case MENU_ENUM_LABEL_R_Y_MINUS:
2206 snprintf(s, len,
2207 "Axis for analog stick (DualShock-esque).\n"
2208 " \n"
2209 "Bound as usual, however, if a real analog \n"
2210 "axis is bound, it can be read as a true analog.\n"
2211 " \n"
2212 "Positive X axis is right. \n"
2213 "Positive Y axis is down.");
2214 break;
2215 case MENU_ENUM_LABEL_VALUE_WHAT_IS_A_CORE_DESC:
2216 snprintf(s, len,
2217 "RetroArch by itself does nothing. \n"
2218 " \n"
2219 "To make it do things, you need to \n"
2220 "load a program into it. \n"
2221 "\n"
2222 "We call such a program 'Libretro core', \n"
2223 "or 'core' in short. \n"
2224 " \n"
2225 "To load a core, select one from\n"
2226 "'Load Core'.\n"
2227 " \n"
2228 #ifdef HAVE_NETWORKING
2229 "You can obtain cores in several ways: \n"
2230 "* Download them by going to\n"
2231 "'%s' -> '%s'.\n"
2232 "* Manually move them over to\n"
2233 "'%s'.",
2234 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER),
2235 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST),
2236 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH)
2237 #else
2238 "You can obtain cores by\n"
2239 "manually moving them over to\n"
2240 "'%s'.",
2241 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH)
2242 #endif
2243 );
2244 break;
2245 case MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD_DESC:
2246 snprintf(s, len,
2247 "You can change the virtual gamepad overlay\n"
2248 "by going to '%s' -> '%s'."
2249 " \n"
2250 "From there you can change the overlay,\n"
2251 "change the size and opacity of the buttons, etc.\n"
2252 " \n"
2253 "NOTE: By default, virtual gamepad overlays are\n"
2254 "hidden when in the menu.\n"
2255 "If you'd like to change this behavior,\n"
2256 "you can set '%s' to false.",
2257 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS),
2258 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OVERLAY_SETTINGS),
2259 msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU));
2260 break;
2261 case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_ENABLE:
2262 snprintf(s, len,
2263 "Enables a background color for the OSD.");
2264 break;
2265 case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_RED:
2266 snprintf(s, len,
2267 "Sets the red value of the OSD background color. Valid values are between 0 and 255.");
2268 break;
2269 case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_GREEN:
2270 snprintf(s, len,
2271 "Sets the green value of the OSD background color. Valid values are between 0 and 255.");
2272 break;
2273 case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_BLUE:
2274 snprintf(s, len,
2275 "Sets the blue value of the OSD background color. Valid values are between 0 and 255.");
2276 break;
2277 case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_OPACITY:
2278 snprintf(s, len,
2279 "Sets the opacity of the OSD background color. Valid values are between 0.0 and 1.0.");
2280 break;
2281 case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_RED:
2282 snprintf(s, len,
2283 "Sets the red value of the OSD text color. Valid values are between 0 and 255.");
2284 break;
2285 case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_GREEN:
2286 snprintf(s, len,
2287 "Sets the green value of the OSD text color. Valid values are between 0 and 255.");
2288 break;
2289 case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_BLUE:
2290 snprintf(s, len,
2291 "Sets the blue value of the OSD text color. Valid values are between 0 and 255.");
2292 break;
2293 case MENU_ENUM_LABEL_MIDI_DRIVER:
2294 snprintf(s, len,
2295 "MIDI driver to use.");
2296 break;
2297 #ifdef HAVE_LAKKA
2298 case MENU_ENUM_LABEL_TIMEZONE:
2299 snprintf(s, len,
2300 "Displays a list of available timezones. After\n"
2301 "selecting a time zone, time and date is adjusted\n"
2302 "to the selected time zone. It assumes, that system/\n"
2303 "hardware clock is set to UTC.");
2304 break;
2305 #endif
2306 case MENU_ENUM_LABEL_MIDI_INPUT:
2307 snprintf(s, len,
2308 "Sets the input device (driver specific).\n"
2309 "When set to \"Off\", MIDI input will be disabled.\n"
2310 "Device name can also be typed in.");
2311 break;
2312 case MENU_ENUM_LABEL_MIDI_OUTPUT:
2313 snprintf(s, len,
2314 "Sets the output device (driver specific).\n"
2315 "When set to \"Off\", MIDI output will be disabled.\n"
2316 "Device name can also be typed in.\n"
2317 " \n"
2318 "When MIDI output is enabled and core and game/app support MIDI output,\n"
2319 "some or all sounds (depends on game/app) will be generated by MIDI device.\n"
2320 "In case of \"null\" MIDI driver this means that those sounds won't be audible.");
2321 break;
2322 case MENU_ENUM_LABEL_MIDI_VOLUME:
2323 snprintf(s, len,
2324 "Sets the master volume of the output device.");
2325 break;
2326 default:
2327 if (string_is_empty(s))
2328 strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);
2329 return -1;
2330 }
2331
2332 return 0;
2333 }
2334 #endif
2335
2336 #ifdef HAVE_MENU
menu_hash_to_str_us_label_enum(enum msg_hash_enums msg)2337 static const char *menu_hash_to_str_us_label_enum(enum msg_hash_enums msg)
2338 {
2339 if (msg <= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_END &&
2340 msg >= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN)
2341 {
2342 static char hotkey_lbl[128] = {0};
2343 unsigned idx = msg - MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN;
2344 snprintf(hotkey_lbl, sizeof(hotkey_lbl), "input_hotkey_binds_%d", idx);
2345 return hotkey_lbl;
2346 }
2347
2348 switch (msg)
2349 {
2350 #include "msg_hash_lbl.h"
2351 default:
2352 #if 0
2353 RARCH_LOG("Unimplemented: [%d]\n", msg);
2354 #endif
2355 break;
2356 }
2357
2358 return "null";
2359 }
2360 #endif
2361
msg_hash_to_str_us(enum msg_hash_enums msg)2362 const char *msg_hash_to_str_us(enum msg_hash_enums msg)
2363 {
2364 #ifdef HAVE_MENU
2365 const char *ret = menu_hash_to_str_us_label_enum(msg);
2366
2367 if (ret && !string_is_equal(ret, "null"))
2368 return ret;
2369 #endif
2370
2371 switch (msg)
2372 {
2373 #include "msg_hash_us.h"
2374 default:
2375 #if 0
2376 RARCH_LOG("Unimplemented: [%d]\n", msg);
2377 {
2378 RARCH_LOG("[%d] : %s\n", msg - 1, msg_hash_to_str(((enum msg_hash_enums)(msg - 1))));
2379 }
2380 #endif
2381 break;
2382 }
2383
2384 return "null";
2385 }
2386