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