command.h 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  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) 2016-2019 - Brad Parker
  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. RETRO_BEGIN_DECLS
  26. enum event_command
  27. {
  28. CMD_EVENT_NONE = 0,
  29. /* Resets RetroArch. */
  30. CMD_EVENT_RESET,
  31. CMD_EVENT_SET_PER_GAME_RESOLUTION,
  32. CMD_EVENT_SET_FRAME_LIMIT,
  33. /* Loads core. */
  34. CMD_EVENT_LOAD_CORE,
  35. CMD_EVENT_LOAD_CORE_PERSIST,
  36. CMD_EVENT_UNLOAD_CORE,
  37. CMD_EVENT_CLOSE_CONTENT,
  38. CMD_EVENT_LOAD_STATE,
  39. /* Swaps the current state with what's on the undo load buffer */
  40. CMD_EVENT_UNDO_LOAD_STATE,
  41. /* Rewrites a savestate on disk */
  42. CMD_EVENT_UNDO_SAVE_STATE,
  43. CMD_EVENT_SAVE_STATE,
  44. CMD_EVENT_SAVE_STATE_DECREMENT,
  45. CMD_EVENT_SAVE_STATE_INCREMENT,
  46. /* Takes screenshot. */
  47. CMD_EVENT_TAKE_SCREENSHOT,
  48. /* Quits RetroArch. */
  49. CMD_EVENT_QUIT,
  50. /* Reinitialize all drivers. */
  51. CMD_EVENT_REINIT_FROM_TOGGLE,
  52. /* Reinitialize all drivers. */
  53. CMD_EVENT_REINIT,
  54. /* Toggles cheevos hardcore mode. */
  55. CMD_EVENT_CHEEVOS_HARDCORE_MODE_TOGGLE,
  56. /* Deinitialize rewind. */
  57. CMD_EVENT_REWIND_DEINIT,
  58. /* Initializes rewind. */
  59. CMD_EVENT_REWIND_INIT,
  60. /* Toggles rewind. */
  61. CMD_EVENT_REWIND_TOGGLE,
  62. /* Initializes autosave. */
  63. CMD_EVENT_AUTOSAVE_INIT,
  64. /* Stops audio. */
  65. CMD_EVENT_AUDIO_STOP,
  66. /* Starts audio. */
  67. CMD_EVENT_AUDIO_START,
  68. /* Mutes audio. */
  69. CMD_EVENT_AUDIO_MUTE_TOGGLE,
  70. /* Toggles FPS counter. */
  71. CMD_EVENT_FPS_TOGGLE,
  72. /* Gathers diagnostic info about the system and RetroArch configuration, then sends it to our servers. */
  73. CMD_EVENT_SEND_DEBUG_INFO,
  74. /* Toggles netplay hosting. */
  75. CMD_EVENT_NETPLAY_HOST_TOGGLE,
  76. /* Initializes overlay. */
  77. CMD_EVENT_OVERLAY_INIT,
  78. /* Deinitializes overlay. */
  79. CMD_EVENT_OVERLAY_DEINIT,
  80. /* Sets current scale factor for overlay. */
  81. CMD_EVENT_OVERLAY_SET_SCALE_FACTOR,
  82. /* Sets current alpha modulation for overlay. */
  83. CMD_EVENT_OVERLAY_SET_ALPHA_MOD,
  84. /* Cycle to next overlay. */
  85. CMD_EVENT_OVERLAY_NEXT,
  86. /* Deinitializes overlay. */
  87. CMD_EVENT_DSP_FILTER_INIT,
  88. /* Initializes recording system. */
  89. CMD_EVENT_RECORD_INIT,
  90. /* Deinitializes recording system. */
  91. CMD_EVENT_RECORD_DEINIT,
  92. /* Deinitializes history playlist. */
  93. CMD_EVENT_HISTORY_DEINIT,
  94. /* Initializes history playlist. */
  95. CMD_EVENT_HISTORY_INIT,
  96. /* Deinitializes core information. */
  97. CMD_EVENT_CORE_INFO_DEINIT,
  98. /* Initializes core information. */
  99. CMD_EVENT_CORE_INFO_INIT,
  100. /* Deinitializes core. */
  101. CMD_EVENT_CORE_DEINIT,
  102. /* Initializes core. */
  103. CMD_EVENT_CORE_INIT,
  104. /* Apply video state changes. */
  105. CMD_EVENT_VIDEO_APPLY_STATE_CHANGES,
  106. /* Set video blocking state. */
  107. CMD_EVENT_VIDEO_SET_BLOCKING_STATE,
  108. /* Sets current aspect ratio index. */
  109. CMD_EVENT_VIDEO_SET_ASPECT_RATIO,
  110. /* Restarts RetroArch. */
  111. CMD_EVENT_RESTART_RETROARCH,
  112. /* Shutdown the OS */
  113. CMD_EVENT_SHUTDOWN,
  114. /* Reboot the OS */
  115. CMD_EVENT_REBOOT,
  116. /* Resume RetroArch when in menu. */
  117. CMD_EVENT_RESUME,
  118. /* Add a playlist entry to favorites. */
  119. CMD_EVENT_ADD_TO_FAVORITES,
  120. /* Reset playlist entry associated core to DETECT */
  121. CMD_EVENT_RESET_CORE_ASSOCIATION,
  122. /* Toggles pause. */
  123. CMD_EVENT_PAUSE_TOGGLE,
  124. /* Pauses RetroArch. */
  125. CMD_EVENT_UNPAUSE,
  126. /* Unpauses retroArch. */
  127. CMD_EVENT_PAUSE,
  128. CMD_EVENT_MENU_RESET_TO_DEFAULT_CONFIG,
  129. CMD_EVENT_MENU_SAVE_CURRENT_CONFIG,
  130. CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
  131. CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR,
  132. CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_GAME,
  133. CMD_EVENT_MENU_SAVE_CONFIG,
  134. CMD_EVENT_MENU_PAUSE_LIBRETRO,
  135. /* Toggles menu on/off. */
  136. CMD_EVENT_MENU_TOGGLE,
  137. /* Applies shader changes. */
  138. CMD_EVENT_SHADERS_APPLY_CHANGES,
  139. /* A new shader preset has been loaded */
  140. CMD_EVENT_SHADER_PRESET_LOADED,
  141. /* Apply cheats. */
  142. CMD_EVENT_CHEATS_APPLY,
  143. /* Initializes network system. */
  144. CMD_EVENT_NETWORK_INIT,
  145. /* Initializes netplay system with a string or no host specified. */
  146. CMD_EVENT_NETPLAY_INIT,
  147. /* Initializes netplay system with a direct host specified. */
  148. CMD_EVENT_NETPLAY_INIT_DIRECT,
  149. /* Initializes netplay system with a direct host specified after loading content. */
  150. CMD_EVENT_NETPLAY_INIT_DIRECT_DEFERRED,
  151. /* Deinitializes netplay system. */
  152. CMD_EVENT_NETPLAY_DEINIT,
  153. /* Switch between netplay gaming and watching. */
  154. CMD_EVENT_NETPLAY_GAME_WATCH,
  155. /* Start hosting netplay. */
  156. CMD_EVENT_NETPLAY_ENABLE_HOST,
  157. /* Disconnect from the netplay host. */
  158. CMD_EVENT_NETPLAY_DISCONNECT,
  159. /* Reinitializes audio driver. */
  160. CMD_EVENT_AUDIO_REINIT,
  161. /* Resizes windowed scale. Will reinitialize video driver. */
  162. CMD_EVENT_RESIZE_WINDOWED_SCALE,
  163. CMD_EVENT_LOG_FILE_DEINIT,
  164. /* Toggles disk eject. */
  165. CMD_EVENT_DISK_EJECT_TOGGLE,
  166. /* Cycle to next disk. */
  167. CMD_EVENT_DISK_NEXT,
  168. /* Cycle to previous disk. */
  169. CMD_EVENT_DISK_PREV,
  170. /* Switch to specified disk index */
  171. CMD_EVENT_DISK_INDEX,
  172. /* Appends disk image to disk image list. */
  173. CMD_EVENT_DISK_APPEND_IMAGE,
  174. /* Stops rumbling. */
  175. CMD_EVENT_RUMBLE_STOP,
  176. /* Toggles mouse grab. */
  177. CMD_EVENT_GRAB_MOUSE_TOGGLE,
  178. /* Toggles game focus. */
  179. CMD_EVENT_GAME_FOCUS_TOGGLE,
  180. /* Toggles desktop menu. */
  181. CMD_EVENT_UI_COMPANION_TOGGLE,
  182. /* Toggles fullscreen mode. */
  183. CMD_EVENT_FULLSCREEN_TOGGLE,
  184. CMD_EVENT_VOLUME_UP,
  185. CMD_EVENT_VOLUME_DOWN,
  186. CMD_EVENT_MIXER_VOLUME_UP,
  187. CMD_EVENT_MIXER_VOLUME_DOWN,
  188. CMD_EVENT_DISCORD_INIT,
  189. CMD_EVENT_DISCORD_UPDATE,
  190. CMD_EVENT_OSK_TOGGLE,
  191. CMD_EVENT_RECORDING_TOGGLE,
  192. CMD_EVENT_STREAMING_TOGGLE,
  193. CMD_EVENT_RUNAHEAD_TOGGLE,
  194. CMD_EVENT_AI_SERVICE_TOGGLE,
  195. CMD_EVENT_BSV_RECORDING_TOGGLE,
  196. CMD_EVENT_SHADER_NEXT,
  197. CMD_EVENT_SHADER_PREV,
  198. CMD_EVENT_CHEAT_INDEX_PLUS,
  199. CMD_EVENT_CHEAT_INDEX_MINUS,
  200. CMD_EVENT_CHEAT_TOGGLE,
  201. CMD_EVENT_AI_SERVICE_CALL,
  202. CMD_EVENT_SAVE_FILES,
  203. CMD_EVENT_RELOAD_CONFIG
  204. };
  205. typedef struct command command_t;
  206. typedef struct command_handle
  207. {
  208. command_t *handle;
  209. unsigned id;
  210. } command_handle_t;
  211. /**
  212. * command_event:
  213. * @cmd : Command index.
  214. *
  215. * Performs RetroArch command with index @cmd.
  216. *
  217. * Returns: true (1) on success, otherwise false (0).
  218. **/
  219. bool command_event(enum event_command action, void *data);
  220. RETRO_END_DECLS
  221. #endif