command.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. /* RetroArch - A frontend for libretro.
  2. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen
  3. * Copyright (C) 2011-2016 - Daniel De Matteis
  4. * Copyright (C) 2021 - David G.F.
  5. *
  6. * RetroArch is free software: you can redistribute it and/or modify it under the terms
  7. * of the GNU General Public License as published by the Free Software Found-
  8. * ation, either version 3 of the License, or (at your option) any later version.
  9. *
  10. * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  11. * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  12. * PURPOSE. See the GNU General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License along with RetroArch.
  15. * If not, see <http://www.gnu.org/licenses/>.
  16. */
  17. #ifndef COMMAND_H__
  18. #define COMMAND_H__
  19. #include <stdint.h>
  20. #include <boolean.h>
  21. #include <retro_common_api.h>
  22. #ifdef HAVE_CONFIG_H
  23. #include "config.h"
  24. #endif
  25. #include <streams/interface_stream.h>
  26. #include "retroarch_types.h"
  27. #include "input/input_defines.h"
  28. #include "configuration.h"
  29. RETRO_BEGIN_DECLS
  30. #define MAX_CMD_DRIVERS 3
  31. #define DEFAULT_NETWORK_CMD_PORT 55355
  32. struct cmd_map
  33. {
  34. const char *str;
  35. unsigned id;
  36. };
  37. struct command_handler;
  38. typedef void (*command_poller_t)(struct command_handler *cmd);
  39. typedef void (*command_replier_t)(struct command_handler *cmd, const char * data, size_t len);
  40. typedef void (*command_destructor_t)(struct command_handler *cmd);
  41. struct command_handler
  42. {
  43. /* Interface to poll the driver */
  44. command_poller_t poll;
  45. /* Interface to reply */
  46. command_replier_t replier;
  47. /* Interface to delete the underlying command */
  48. command_destructor_t destroy;
  49. /* Underlying command storage */
  50. void *userptr;
  51. /* State received */
  52. bool state[RARCH_BIND_LIST_END];
  53. };
  54. typedef struct command_handler command_t;
  55. enum event_command
  56. {
  57. CMD_EVENT_NONE = 0,
  58. /* Resets RetroArch. */
  59. CMD_EVENT_RESET,
  60. CMD_EVENT_SET_PER_GAME_RESOLUTION,
  61. CMD_EVENT_SET_FRAME_LIMIT,
  62. /* Loads core. */
  63. CMD_EVENT_LOAD_CORE,
  64. CMD_EVENT_LOAD_CORE_PERSIST,
  65. #if defined(HAVE_RUNAHEAD) && (defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB))
  66. CMD_EVENT_LOAD_SECOND_CORE,
  67. #endif
  68. CMD_EVENT_UNLOAD_CORE,
  69. /* Closes content. */
  70. CMD_EVENT_CLOSE_CONTENT,
  71. /* Swaps the current state with what's on the undo load buffer. */
  72. CMD_EVENT_UNDO_LOAD_STATE,
  73. /* Rewrites a savestate on disk. */
  74. CMD_EVENT_UNDO_SAVE_STATE,
  75. /* Save state hotkeys. */
  76. CMD_EVENT_LOAD_STATE,
  77. CMD_EVENT_SAVE_STATE,
  78. CMD_EVENT_SAVE_STATE_DECREMENT,
  79. CMD_EVENT_SAVE_STATE_INCREMENT,
  80. /* Replay hotkeys. */
  81. CMD_EVENT_PLAY_REPLAY,
  82. CMD_EVENT_RECORD_REPLAY,
  83. CMD_EVENT_HALT_REPLAY,
  84. CMD_EVENT_REPLAY_DECREMENT,
  85. CMD_EVENT_REPLAY_INCREMENT,
  86. /* Save state actions. */
  87. CMD_EVENT_SAVE_STATE_TO_RAM,
  88. CMD_EVENT_LOAD_STATE_FROM_RAM,
  89. CMD_EVENT_RAM_STATE_TO_FILE,
  90. /* Takes screenshot. */
  91. CMD_EVENT_TAKE_SCREENSHOT,
  92. /* Quits RetroArch. */
  93. CMD_EVENT_QUIT,
  94. /* Reinitialize all drivers. */
  95. CMD_EVENT_REINIT_FROM_TOGGLE,
  96. /* Reinitialize all drivers. */
  97. CMD_EVENT_REINIT,
  98. /* Toggles cheevos hardcore mode. */
  99. CMD_EVENT_CHEEVOS_HARDCORE_MODE_TOGGLE,
  100. /* Deinitialize rewind. */
  101. CMD_EVENT_REWIND_DEINIT,
  102. /* Initializes rewind. */
  103. CMD_EVENT_REWIND_INIT,
  104. /* Toggles rewind. */
  105. CMD_EVENT_REWIND_TOGGLE,
  106. /* Initializes autosave. */
  107. CMD_EVENT_AUTOSAVE_INIT,
  108. /* Stops audio. */
  109. CMD_EVENT_AUDIO_STOP,
  110. /* Starts audio. */
  111. CMD_EVENT_AUDIO_START,
  112. /* Mutes audio. */
  113. CMD_EVENT_AUDIO_MUTE_TOGGLE,
  114. /* Volume adjustments. */
  115. CMD_EVENT_VOLUME_UP,
  116. CMD_EVENT_VOLUME_DOWN,
  117. CMD_EVENT_MIXER_VOLUME_UP,
  118. CMD_EVENT_MIXER_VOLUME_DOWN,
  119. /* Toggles FPS counter. */
  120. CMD_EVENT_FPS_TOGGLE,
  121. /* Toggles statistics display. */
  122. CMD_EVENT_STATISTICS_TOGGLE,
  123. /* Initializes overlay. */
  124. CMD_EVENT_OVERLAY_INIT,
  125. /* Deinitializes overlay. */
  126. CMD_EVENT_OVERLAY_DEINIT,
  127. /* Sets current scale factor for overlay. */
  128. CMD_EVENT_OVERLAY_SET_SCALE_FACTOR,
  129. /* Sets current alpha modulation for overlay. */
  130. CMD_EVENT_OVERLAY_SET_ALPHA_MOD,
  131. /* Sets diagonal sensitivities of overlay eightway areas. */
  132. CMD_EVENT_OVERLAY_SET_EIGHTWAY_DIAGONAL_SENSITIVITY,
  133. /* Deinitializes overlay. */
  134. CMD_EVENT_DSP_FILTER_INIT,
  135. /* Initializes recording system. */
  136. CMD_EVENT_RECORD_INIT,
  137. /* Deinitializes recording system. */
  138. CMD_EVENT_RECORD_DEINIT,
  139. /* Deinitializes history playlist. */
  140. CMD_EVENT_HISTORY_DEINIT,
  141. /* Initializes history playlist. */
  142. CMD_EVENT_HISTORY_INIT,
  143. /* Deinitializes core information. */
  144. CMD_EVENT_CORE_INFO_DEINIT,
  145. /* Initializes core information. */
  146. CMD_EVENT_CORE_INFO_INIT,
  147. /* Deinitializes core. */
  148. CMD_EVENT_CORE_DEINIT,
  149. /* Initializes core. */
  150. CMD_EVENT_CORE_INIT,
  151. /* Apply video state changes. */
  152. CMD_EVENT_VIDEO_APPLY_STATE_CHANGES,
  153. /* Set video blocking state. */
  154. CMD_EVENT_VIDEO_SET_BLOCKING_STATE,
  155. /* Sets current aspect ratio index. */
  156. CMD_EVENT_VIDEO_SET_ASPECT_RATIO,
  157. /* Restarts RetroArch. */
  158. CMD_EVENT_RESTART_RETROARCH,
  159. /* Shutdown the OS */
  160. CMD_EVENT_SHUTDOWN,
  161. /* Reboot the OS */
  162. CMD_EVENT_REBOOT,
  163. /* Resume RetroArch when in menu. */
  164. CMD_EVENT_RESUME,
  165. /* Add a playlist entry to favorites. */
  166. CMD_EVENT_ADD_TO_FAVORITES,
  167. /* Reset playlist entry associated core to DETECT */
  168. CMD_EVENT_RESET_CORE_ASSOCIATION,
  169. /* Toggles pause. */
  170. CMD_EVENT_PAUSE_TOGGLE,
  171. /* Pauses RetroArch. */
  172. CMD_EVENT_MENU_PAUSE_LIBRETRO,
  173. CMD_EVENT_PAUSE,
  174. /* Unpauses RetroArch. */
  175. CMD_EVENT_UNPAUSE,
  176. /* Toggles menu on/off. */
  177. CMD_EVENT_MENU_TOGGLE,
  178. /* Configuration saving. */
  179. CMD_EVENT_MENU_RESET_TO_DEFAULT_CONFIG,
  180. CMD_EVENT_MENU_SAVE_CONFIG,
  181. CMD_EVENT_MENU_SAVE_CURRENT_CONFIG,
  182. CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
  183. CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR,
  184. CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_GAME,
  185. CMD_EVENT_MENU_REMOVE_CURRENT_CONFIG_OVERRIDE_CORE,
  186. CMD_EVENT_MENU_REMOVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR,
  187. CMD_EVENT_MENU_REMOVE_CURRENT_CONFIG_OVERRIDE_GAME,
  188. /* Applies shader changes. */
  189. CMD_EVENT_SHADERS_APPLY_CHANGES,
  190. /* A new shader preset has been loaded */
  191. CMD_EVENT_SHADER_PRESET_LOADED,
  192. /* Shader hotkeys. */
  193. CMD_EVENT_SHADER_NEXT,
  194. CMD_EVENT_SHADER_PREV,
  195. CMD_EVENT_SHADER_TOGGLE,
  196. /* Apply cheats. */
  197. CMD_EVENT_CHEATS_APPLY,
  198. /* Cheat hotkeys. */
  199. CMD_EVENT_CHEAT_TOGGLE,
  200. CMD_EVENT_CHEAT_INDEX_PLUS,
  201. CMD_EVENT_CHEAT_INDEX_MINUS,
  202. /* Initializes network system. */
  203. CMD_EVENT_NETWORK_INIT,
  204. /* Initializes netplay system with a string or no host specified. */
  205. CMD_EVENT_NETPLAY_INIT,
  206. /* Initializes netplay system with a direct host specified. */
  207. CMD_EVENT_NETPLAY_INIT_DIRECT,
  208. /* Initializes netplay system with a direct host specified after loading content. */
  209. CMD_EVENT_NETPLAY_INIT_DIRECT_DEFERRED,
  210. /* Deinitializes netplay system. */
  211. CMD_EVENT_NETPLAY_DEINIT,
  212. /* Switch between netplay gaming and watching. */
  213. CMD_EVENT_NETPLAY_GAME_WATCH,
  214. /* Open a netplay chat input menu. */
  215. CMD_EVENT_NETPLAY_PLAYER_CHAT,
  216. /* Toggle chat fading. */
  217. CMD_EVENT_NETPLAY_FADE_CHAT_TOGGLE,
  218. /* Start hosting netplay. */
  219. CMD_EVENT_NETPLAY_ENABLE_HOST,
  220. /* Disconnect from the netplay host. */
  221. CMD_EVENT_NETPLAY_DISCONNECT,
  222. /* Toggle ping counter. */
  223. CMD_EVENT_NETPLAY_PING_TOGGLE,
  224. /* Toggles netplay hosting. */
  225. CMD_EVENT_NETPLAY_HOST_TOGGLE,
  226. /* Reinitializes audio driver. */
  227. CMD_EVENT_AUDIO_REINIT,
  228. /* Resizes windowed scale. Will reinitialize video driver. */
  229. CMD_EVENT_RESIZE_WINDOWED_SCALE,
  230. /* Toggles disk eject. */
  231. CMD_EVENT_DISK_EJECT_TOGGLE,
  232. /* Cycle to next disk. */
  233. CMD_EVENT_DISK_NEXT,
  234. /* Cycle to previous disk. */
  235. CMD_EVENT_DISK_PREV,
  236. /* Switch to specified disk index */
  237. CMD_EVENT_DISK_INDEX,
  238. /* Appends disk image to disk image list. */
  239. CMD_EVENT_DISK_APPEND_IMAGE,
  240. /* Stops rumbling. */
  241. CMD_EVENT_RUMBLE_STOP,
  242. /* Toggles mouse grab. */
  243. CMD_EVENT_GRAB_MOUSE_TOGGLE,
  244. /* Toggles game focus. */
  245. CMD_EVENT_GAME_FOCUS_TOGGLE,
  246. /* Toggles desktop menu. */
  247. CMD_EVENT_UI_COMPANION_TOGGLE,
  248. /* Toggles fullscreen mode. */
  249. CMD_EVENT_FULLSCREEN_TOGGLE,
  250. /* Toggle recording. */
  251. CMD_EVENT_RECORDING_TOGGLE,
  252. /* Toggle streaming. */
  253. CMD_EVENT_STREAMING_TOGGLE,
  254. /* Toggle Run-Ahead. */
  255. CMD_EVENT_RUNAHEAD_TOGGLE,
  256. /* Toggle Preemtive Frames. */
  257. CMD_EVENT_PREEMPT_TOGGLE,
  258. /* Deinitialize or Reinitialize Preemptive Frames. */
  259. CMD_EVENT_PREEMPT_UPDATE,
  260. /* Force Preemptive Frames to refill its state buffer. */
  261. CMD_EVENT_PREEMPT_RESET_BUFFER,
  262. /* Toggle VRR runloop. */
  263. CMD_EVENT_VRR_RUNLOOP_TOGGLE,
  264. /* AI service. */
  265. CMD_EVENT_AI_SERVICE_TOGGLE,
  266. CMD_EVENT_AI_SERVICE_CALL,
  267. /* Misc. */
  268. CMD_EVENT_SAVE_FILES,
  269. CMD_EVENT_CONTROLLER_INIT,
  270. CMD_EVENT_DISCORD_INIT,
  271. CMD_EVENT_PRESENCE_UPDATE,
  272. CMD_EVENT_OVERLAY_NEXT,
  273. CMD_EVENT_OSK_TOGGLE,
  274. /* Deprecated */
  275. CMD_EVENT_SEND_DEBUG_INFO
  276. };
  277. typedef struct command_handle
  278. {
  279. command_t *handle;
  280. unsigned id;
  281. } command_handle_t;
  282. enum cmd_source_t
  283. {
  284. CMD_NONE = 0,
  285. CMD_STDIN,
  286. CMD_NETWORK
  287. };
  288. struct rarch_state;
  289. /**
  290. * command_event:
  291. * @cmd : Command index.
  292. *
  293. * Performs RetroArch command with index @cmd.
  294. *
  295. * Returns: true (1) on success, otherwise false (0).
  296. **/
  297. bool command_event(enum event_command action, void *data);
  298. /* Constructors for the supported drivers */
  299. command_t* command_network_new(uint16_t port);
  300. command_t* command_stdin_new(void);
  301. command_t* command_uds_new(void);
  302. bool command_network_send(const char *cmd_);
  303. #ifdef HAVE_CONFIGFILE
  304. bool command_event_save_config(
  305. const char *config_path,
  306. char *s, size_t len);
  307. #endif
  308. void command_event_undo_save_state(char *s, size_t len);
  309. void command_event_undo_load_state(char *s, size_t len);
  310. void command_event_set_mixer_volume(
  311. settings_t *settings,
  312. float gain);
  313. bool command_event_resize_windowed_scale(settings_t *settings,
  314. unsigned window_scale);
  315. bool command_event_save_auto_state(
  316. bool savestate_auto_save,
  317. const enum rarch_core_type current_core_type);
  318. /**
  319. * event_set_volume:
  320. * @gain : amount of gain to be applied to current volume level.
  321. *
  322. * Adjusts the current audio volume level.
  323. *
  324. **/
  325. void command_event_set_volume(
  326. settings_t *settings,
  327. float gain,
  328. bool widgets_active,
  329. bool audio_driver_mute_enable);
  330. /**
  331. * command_event_init_controllers:
  332. *
  333. * Initialize libretro controllers.
  334. **/
  335. void command_event_init_controllers(rarch_system_info_t *info,
  336. settings_t *settings, unsigned num_active_users);
  337. bool command_event_load_entry_state(settings_t *settings);
  338. void command_event_load_auto_state(void);
  339. void command_event_set_savestate_auto_index(
  340. settings_t *settings);
  341. void command_event_set_savestate_garbage_collect(
  342. unsigned max_to_keep,
  343. bool show_hidden_files
  344. );
  345. void command_event_set_replay_auto_index(
  346. settings_t *settings);
  347. void command_event_set_replay_garbage_collect(
  348. unsigned max_to_keep,
  349. bool show_hidden_files
  350. );
  351. #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL)
  352. bool command_set_shader(command_t *cmd, const char *arg);
  353. #endif
  354. #ifdef HAVE_CHEATS
  355. void command_event_init_cheats(
  356. bool apply_cheats_after_load,
  357. const char *path_cheat_db,
  358. void *bsv_movie_data);
  359. #endif
  360. #if defined(HAVE_COMMAND)
  361. struct cmd_action_map
  362. {
  363. const char *str;
  364. bool (*action)(command_t* cmd, const char *arg);
  365. const char *arg_desc;
  366. };
  367. bool command_version(command_t *cmd, const char* arg);
  368. bool command_get_status(command_t *cmd, const char* arg);
  369. bool command_get_config_param(command_t *cmd, const char* arg);
  370. bool command_show_osd_msg(command_t *cmd, const char* arg);
  371. bool command_load_state_slot(command_t *cmd, const char* arg);
  372. bool command_play_replay_slot(command_t *cmd, const char* arg);
  373. #ifdef HAVE_CHEEVOS
  374. bool command_read_ram(command_t *cmd, const char *arg);
  375. bool command_write_ram(command_t *cmd, const char *arg);
  376. #endif
  377. bool command_read_memory(command_t *cmd, const char *arg);
  378. bool command_write_memory(command_t *cmd, const char *arg);
  379. uint8_t *command_memory_get_pointer(
  380. const rarch_system_info_t* system,
  381. unsigned address,
  382. unsigned int* max_bytes,
  383. int for_write,
  384. char *reply_at,
  385. size_t len);
  386. static const struct cmd_action_map action_map[] = {
  387. #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL)
  388. { "SET_SHADER", command_set_shader, "<shader path>" },
  389. #endif
  390. { "VERSION", command_version, "No argument"},
  391. { "GET_STATUS", command_get_status, "No argument" },
  392. { "GET_CONFIG_PARAM", command_get_config_param, "<param name>" },
  393. { "SHOW_MSG", command_show_osd_msg, "No argument" },
  394. #if defined(HAVE_CHEEVOS)
  395. /* These functions use achievement addresses and only work if a game with achievements is
  396. * loaded. READ_CORE_MEMORY and WRITE_CORE_MEMORY are preferred and use system addresses. */
  397. { "READ_CORE_RAM", command_read_ram, "<address> <number of bytes>" },
  398. { "WRITE_CORE_RAM", command_write_ram, "<address> <byte1> <byte2> ..." },
  399. #endif
  400. { "READ_CORE_MEMORY", command_read_memory, "<address> <number of bytes>" },
  401. { "WRITE_CORE_MEMORY",command_write_memory, "<address> <byte1> <byte2> ..." },
  402. { "LOAD_STATE_SLOT",command_load_state_slot, "<slot number>"},
  403. { "PLAY_REPLAY_SLOT",command_play_replay_slot, "<slot number>"},
  404. };
  405. static const struct cmd_map map[] = {
  406. { "MENU_TOGGLE", RARCH_MENU_TOGGLE },
  407. { "QUIT", RARCH_QUIT_KEY },
  408. { "CLOSE_CONTENT", RARCH_CLOSE_CONTENT_KEY },
  409. { "RESET", RARCH_RESET },
  410. { "FAST_FORWARD", RARCH_FAST_FORWARD_KEY },
  411. { "FAST_FORWARD_HOLD", RARCH_FAST_FORWARD_HOLD_KEY },
  412. { "SLOWMOTION", RARCH_SLOWMOTION_KEY },
  413. { "SLOWMOTION_HOLD", RARCH_SLOWMOTION_HOLD_KEY },
  414. { "REWIND", RARCH_REWIND },
  415. { "PAUSE_TOGGLE", RARCH_PAUSE_TOGGLE },
  416. { "FRAMEADVANCE", RARCH_FRAMEADVANCE },
  417. { "MUTE", RARCH_MUTE },
  418. { "VOLUME_UP", RARCH_VOLUME_UP },
  419. { "VOLUME_DOWN", RARCH_VOLUME_DOWN },
  420. { "LOAD_STATE", RARCH_LOAD_STATE_KEY },
  421. { "SAVE_STATE", RARCH_SAVE_STATE_KEY },
  422. { "STATE_SLOT_PLUS", RARCH_STATE_SLOT_PLUS },
  423. { "STATE_SLOT_MINUS", RARCH_STATE_SLOT_MINUS },
  424. { "PLAY_REPLAY", RARCH_PLAY_REPLAY_KEY },
  425. { "RECORD_REPLAY", RARCH_RECORD_REPLAY_KEY },
  426. { "HALT_REPLAY", RARCH_HALT_REPLAY_KEY },
  427. { "REPLAY_SLOT_PLUS", RARCH_REPLAY_SLOT_PLUS },
  428. { "REPLAY_SLOT_MINUS", RARCH_REPLAY_SLOT_MINUS },
  429. { "DISK_EJECT_TOGGLE", RARCH_DISK_EJECT_TOGGLE },
  430. { "DISK_NEXT", RARCH_DISK_NEXT },
  431. { "DISK_PREV", RARCH_DISK_PREV },
  432. { "SHADER_TOGGLE", RARCH_SHADER_TOGGLE },
  433. { "SHADER_NEXT", RARCH_SHADER_NEXT },
  434. { "SHADER_PREV", RARCH_SHADER_PREV },
  435. { "CHEAT_TOGGLE", RARCH_CHEAT_TOGGLE },
  436. { "CHEAT_INDEX_PLUS", RARCH_CHEAT_INDEX_PLUS },
  437. { "CHEAT_INDEX_MINUS", RARCH_CHEAT_INDEX_MINUS },
  438. { "SCREENSHOT", RARCH_SCREENSHOT },
  439. { "RECORDING_TOGGLE", RARCH_RECORDING_TOGGLE },
  440. { "STREAMING_TOGGLE", RARCH_STREAMING_TOGGLE },
  441. { "GRAB_MOUSE_TOGGLE", RARCH_GRAB_MOUSE_TOGGLE },
  442. { "GAME_FOCUS_TOGGLE", RARCH_GAME_FOCUS_TOGGLE },
  443. { "FULLSCREEN_TOGGLE", RARCH_FULLSCREEN_TOGGLE_KEY },
  444. { "UI_COMPANION_TOGGLE", RARCH_UI_COMPANION_TOGGLE },
  445. { "VRR_RUNLOOP_TOGGLE", RARCH_VRR_RUNLOOP_TOGGLE },
  446. { "RUNAHEAD_TOGGLE", RARCH_RUNAHEAD_TOGGLE },
  447. { "PREEMPT_TOGGLE", RARCH_PREEMPT_TOGGLE },
  448. { "FPS_TOGGLE", RARCH_FPS_TOGGLE },
  449. { "STATISTICS_TOGGLE", RARCH_STATISTICS_TOGGLE },
  450. { "AI_SERVICE", RARCH_AI_SERVICE },
  451. { "NETPLAY_PING_TOGGLE", RARCH_NETPLAY_PING_TOGGLE },
  452. { "NETPLAY_HOST_TOGGLE", RARCH_NETPLAY_HOST_TOGGLE },
  453. { "NETPLAY_GAME_WATCH", RARCH_NETPLAY_GAME_WATCH },
  454. { "NETPLAY_PLAYER_CHAT", RARCH_NETPLAY_PLAYER_CHAT },
  455. { "NETPLAY_FADE_CHAT_TOGGLE", RARCH_NETPLAY_FADE_CHAT_TOGGLE },
  456. { "MENU_UP", RETRO_DEVICE_ID_JOYPAD_UP },
  457. { "MENU_DOWN", RETRO_DEVICE_ID_JOYPAD_DOWN },
  458. { "MENU_LEFT", RETRO_DEVICE_ID_JOYPAD_LEFT },
  459. { "MENU_RIGHT", RETRO_DEVICE_ID_JOYPAD_RIGHT },
  460. { "MENU_A", RETRO_DEVICE_ID_JOYPAD_A },
  461. { "MENU_B", RETRO_DEVICE_ID_JOYPAD_B },
  462. { "OVERLAY_NEXT", RARCH_OVERLAY_NEXT },
  463. { "OSK", RARCH_OSK },
  464. #if 0
  465. /* Deprecated */
  466. { "SEND_DEBUG_INFO", RARCH_SEND_DEBUG_INFO },
  467. #endif
  468. };
  469. #endif
  470. #ifdef HAVE_CONFIGFILE
  471. /**
  472. * command_event_save_core_config:
  473. *
  474. * Saves a new (core) configuration to a file. Filename is based
  475. * on heuristics to avoid typing.
  476. *
  477. * Returns: true (1) on success, otherwise false (0).
  478. **/
  479. bool command_event_save_core_config(
  480. const char *dir_menu_config,
  481. const char *rarch_path_config);
  482. /**
  483. * command_event_save_current_config:
  484. *
  485. * Saves current configuration file to disk, and (optionally)
  486. * autosave state.
  487. **/
  488. void command_event_save_current_config(enum override_type type);
  489. /**
  490. * command_event_remove_current_config:
  491. *
  492. * Removes current configuration file from disk.
  493. **/
  494. void command_event_remove_current_config(enum override_type type);
  495. #endif
  496. /**
  497. * command_event_disk_control_append_image:
  498. * @path : Path to disk image.
  499. *
  500. * Appends disk image to disk image list.
  501. **/
  502. bool command_event_disk_control_append_image(const char *path);
  503. void command_event_reinit(const int flags);
  504. bool command_event_main_state(unsigned cmd);
  505. RETRO_END_DECLS
  506. #endif