1 /* RetroArch - A frontend for libretro. 2 * Copyright (C) 2010-2014 - Hans-Kristian Arntzen 3 * Copyright (C) 2011-2017 - Daniel De Matteis 4 * Copyright (C) 2012-2015 - Michael Lelli 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 18 #ifndef INTERNAL_CORES_H__ 19 #define INTERNAL_CORES_H__ 20 21 #include <boolean.h> 22 #include <libretro.h> 23 #include <retro_common_api.h> 24 #include <retro_environment.h> 25 26 #ifdef HAVE_CONFIG_H 27 #include "../config.h" 28 #endif 29 30 RETRO_BEGIN_DECLS 31 32 void libretro_dummy_retro_init(void); 33 34 void libretro_dummy_retro_deinit(void); 35 36 unsigned libretro_dummy_retro_api_version(void); 37 38 void libretro_dummy_retro_get_system_info(struct retro_system_info *info); 39 40 void libretro_dummy_retro_get_system_av_info(struct retro_system_av_info *info); 41 42 void libretro_dummy_retro_set_environment(retro_environment_t cb); 43 44 void libretro_dummy_retro_set_video_refresh(retro_video_refresh_t cb); 45 46 void libretro_dummy_retro_set_audio_sample(retro_audio_sample_t cb); 47 48 void libretro_dummy_retro_set_audio_sample_batch(retro_audio_sample_batch_t cb); 49 50 void libretro_dummy_retro_set_input_poll(retro_input_poll_t cb); 51 52 void libretro_dummy_retro_set_input_state(retro_input_state_t cb); 53 54 void libretro_dummy_retro_set_controller_port_device(unsigned port, unsigned device); 55 56 void libretro_dummy_retro_reset(void); 57 58 void libretro_dummy_retro_run(void); 59 60 size_t libretro_dummy_retro_serialize_size(void); 61 62 bool libretro_dummy_retro_serialize(void *data, size_t size); 63 64 bool libretro_dummy_retro_unserialize(const void *data, size_t size); 65 66 void libretro_dummy_retro_cheat_reset(void); 67 68 void libretro_dummy_retro_cheat_set(unsigned index, bool enabled, const char *code); 69 70 bool libretro_dummy_retro_load_game(const struct retro_game_info *game); 71 72 bool libretro_dummy_retro_load_game_special(unsigned game_type, 73 const struct retro_game_info *info, size_t num_info); 74 75 void libretro_dummy_retro_unload_game(void); 76 77 unsigned libretro_dummy_retro_get_region(void); 78 79 void *libretro_dummy_retro_get_memory_data(unsigned id); 80 81 size_t libretro_dummy_retro_get_memory_size(unsigned id); 82 83 #ifdef HAVE_FFMPEG 84 /* Internal ffmpeg core. */ 85 86 void libretro_ffmpeg_retro_init(void); 87 88 void libretro_ffmpeg_retro_deinit(void); 89 90 unsigned libretro_ffmpeg_retro_api_version(void); 91 92 void libretro_ffmpeg_retro_get_system_info(struct retro_system_info *info); 93 94 void libretro_ffmpeg_retro_get_system_av_info(struct retro_system_av_info *info); 95 96 void libretro_ffmpeg_retro_set_environment(retro_environment_t cb); 97 98 void libretro_ffmpeg_retro_set_video_refresh(retro_video_refresh_t cb); 99 100 void libretro_ffmpeg_retro_set_audio_sample(retro_audio_sample_t cb); 101 102 void libretro_ffmpeg_retro_set_audio_sample_batch(retro_audio_sample_batch_t cb); 103 104 void libretro_ffmpeg_retro_set_input_poll(retro_input_poll_t cb); 105 106 void libretro_ffmpeg_retro_set_input_state(retro_input_state_t cb); 107 108 void libretro_ffmpeg_retro_set_controller_port_device(unsigned port, unsigned device); 109 110 void libretro_ffmpeg_retro_reset(void); 111 112 void libretro_ffmpeg_retro_run(void); 113 114 size_t libretro_ffmpeg_retro_serialize_size(void); 115 116 bool libretro_ffmpeg_retro_serialize(void *data, size_t size); 117 118 bool libretro_ffmpeg_retro_unserialize(const void *data, size_t size); 119 120 void libretro_ffmpeg_retro_cheat_reset(void); 121 122 void libretro_ffmpeg_retro_cheat_set(unsigned index, bool enabled, const char *code); 123 124 bool libretro_ffmpeg_retro_load_game(const struct retro_game_info *game); 125 126 bool libretro_ffmpeg_retro_load_game_special(unsigned game_type, 127 const struct retro_game_info *info, size_t num_info); 128 129 void libretro_ffmpeg_retro_unload_game(void); 130 131 unsigned libretro_ffmpeg_retro_get_region(void); 132 133 void *libretro_ffmpeg_retro_get_memory_data(unsigned id); 134 135 size_t libretro_ffmpeg_retro_get_memory_size(unsigned id); 136 137 #endif 138 139 #ifdef HAVE_MPV 140 /* Internal mpv core. */ 141 142 void libretro_mpv_retro_init(void); 143 144 void libretro_mpv_retro_deinit(void); 145 146 unsigned libretro_mpv_retro_api_version(void); 147 148 void libretro_mpv_retro_get_system_info(struct retro_system_info *info); 149 150 void libretro_mpv_retro_get_system_av_info(struct retro_system_av_info *info); 151 152 void libretro_mpv_retro_set_environment(retro_environment_t cb); 153 154 void libretro_mpv_retro_set_video_refresh(retro_video_refresh_t cb); 155 156 void libretro_mpv_retro_set_audio_sample(retro_audio_sample_t cb); 157 158 void libretro_mpv_retro_set_audio_sample_batch(retro_audio_sample_batch_t cb); 159 160 void libretro_mpv_retro_set_input_poll(retro_input_poll_t cb); 161 162 void libretro_mpv_retro_set_input_state(retro_input_state_t cb); 163 164 void libretro_mpv_retro_set_controller_port_device(unsigned port, unsigned device); 165 166 void libretro_mpv_retro_reset(void); 167 168 void libretro_mpv_retro_run(void); 169 170 size_t libretro_mpv_retro_serialize_size(void); 171 172 bool libretro_mpv_retro_serialize(void *data, size_t size); 173 174 bool libretro_mpv_retro_unserialize(const void *data, size_t size); 175 176 void libretro_mpv_retro_cheat_reset(void); 177 178 void libretro_mpv_retro_cheat_set(unsigned index, bool enabled, const char *code); 179 180 bool libretro_mpv_retro_load_game(const struct retro_game_info *game); 181 182 bool libretro_mpv_retro_load_game_special(unsigned game_type, 183 const struct retro_game_info *info, size_t num_info); 184 185 void libretro_mpv_retro_unload_game(void); 186 187 unsigned libretro_mpv_retro_get_region(void); 188 189 void *libretro_mpv_retro_get_memory_data(unsigned id); 190 191 size_t libretro_mpv_retro_get_memory_size(unsigned id); 192 193 #endif 194 195 #ifdef HAVE_IMAGEVIEWER 196 /* Internal image viewer core. */ 197 198 void libretro_imageviewer_retro_init(void); 199 200 void libretro_imageviewer_retro_deinit(void); 201 202 unsigned libretro_imageviewer_retro_api_version(void); 203 204 void libretro_imageviewer_retro_get_system_info(struct retro_system_info *info); 205 206 void libretro_imageviewer_retro_get_system_av_info(struct retro_system_av_info *info); 207 208 void libretro_imageviewer_retro_set_environment(retro_environment_t cb); 209 210 void libretro_imageviewer_retro_set_video_refresh(retro_video_refresh_t cb); 211 212 void libretro_imageviewer_retro_set_audio_sample(retro_audio_sample_t cb); 213 214 void libretro_imageviewer_retro_set_audio_sample_batch(retro_audio_sample_batch_t cb); 215 216 void libretro_imageviewer_retro_set_input_poll(retro_input_poll_t cb); 217 218 void libretro_imageviewer_retro_set_input_state(retro_input_state_t cb); 219 220 void libretro_imageviewer_retro_set_controller_port_device(unsigned port, unsigned device); 221 222 void libretro_imageviewer_retro_reset(void); 223 224 void libretro_imageviewer_retro_run(void); 225 226 size_t libretro_imageviewer_retro_serialize_size(void); 227 228 bool libretro_imageviewer_retro_serialize(void *data, size_t size); 229 230 bool libretro_imageviewer_retro_unserialize(const void *data, size_t size); 231 232 void libretro_imageviewer_retro_cheat_reset(void); 233 234 void libretro_imageviewer_retro_cheat_set(unsigned index, bool enabled, const char *code); 235 236 bool libretro_imageviewer_retro_load_game(const struct retro_game_info *game); 237 238 bool libretro_imageviewer_retro_load_game_special(unsigned game_type, 239 const struct retro_game_info *info, size_t num_info); 240 241 void libretro_imageviewer_retro_unload_game(void); 242 243 unsigned libretro_imageviewer_retro_get_region(void); 244 245 void *libretro_imageviewer_retro_get_memory_data(unsigned id); 246 247 size_t libretro_imageviewer_retro_get_memory_size(unsigned id); 248 249 #endif 250 251 #if defined(HAVE_NETWORKGAMEPAD) && defined(HAVE_NETWORKING) 252 /* Internal networked retropad core. */ 253 254 void libretro_netretropad_retro_init(void); 255 256 void libretro_netretropad_retro_deinit(void); 257 258 unsigned libretro_netretropad_retro_api_version(void); 259 260 void libretro_netretropad_retro_get_system_info(struct retro_system_info *info); 261 262 void libretro_netretropad_retro_get_system_av_info(struct retro_system_av_info *info); 263 264 void libretro_netretropad_retro_set_environment(retro_environment_t cb); 265 266 void libretro_netretropad_retro_set_video_refresh(retro_video_refresh_t cb); 267 268 void libretro_netretropad_retro_set_audio_sample(retro_audio_sample_t cb); 269 270 void libretro_netretropad_retro_set_audio_sample_batch(retro_audio_sample_batch_t cb); 271 272 void libretro_netretropad_retro_set_input_poll(retro_input_poll_t cb); 273 274 void libretro_netretropad_retro_set_input_state(retro_input_state_t cb); 275 276 void libretro_netretropad_retro_set_controller_port_device(unsigned port, unsigned device); 277 278 void libretro_netretropad_retro_reset(void); 279 280 void libretro_netretropad_retro_run(void); 281 282 size_t libretro_netretropad_retro_serialize_size(void); 283 284 bool libretro_netretropad_retro_serialize(void *data, size_t size); 285 286 bool libretro_netretropad_retro_unserialize(const void *data, size_t size); 287 288 void libretro_netretropad_retro_cheat_reset(void); 289 290 void libretro_netretropad_retro_cheat_set(unsigned index, bool enabled, const char *code); 291 292 bool libretro_netretropad_retro_load_game(const struct retro_game_info *game); 293 294 bool libretro_netretropad_retro_load_game_special(unsigned game_type, 295 const struct retro_game_info *info, size_t num_info); 296 297 void libretro_netretropad_retro_unload_game(void); 298 299 unsigned libretro_netretropad_retro_get_region(void); 300 301 void *libretro_netretropad_retro_get_memory_data(unsigned id); 302 303 size_t libretro_netretropad_retro_get_memory_size(unsigned id); 304 305 #endif 306 307 #if defined(HAVE_V4L2) 308 /* Internal video processor core. */ 309 310 void libretro_videoprocessor_retro_init(void); 311 312 void libretro_videoprocessor_retro_deinit(void); 313 314 unsigned libretro_videoprocessor_retro_api_version(void); 315 316 void libretro_videoprocessor_retro_get_system_info(struct retro_system_info *info); 317 318 void libretro_videoprocessor_retro_get_system_av_info(struct retro_system_av_info *info); 319 320 void libretro_videoprocessor_retro_set_environment(retro_environment_t cb); 321 322 void libretro_videoprocessor_retro_set_video_refresh(retro_video_refresh_t cb); 323 324 void libretro_videoprocessor_retro_set_audio_sample(retro_audio_sample_t cb); 325 326 void libretro_videoprocessor_retro_set_audio_sample_batch(retro_audio_sample_batch_t cb); 327 328 void libretro_videoprocessor_retro_set_input_poll(retro_input_poll_t cb); 329 330 void libretro_videoprocessor_retro_set_input_state(retro_input_state_t cb); 331 332 void libretro_videoprocessor_retro_set_controller_port_device(unsigned port, unsigned device); 333 334 void libretro_videoprocessor_retro_reset(void); 335 336 void libretro_videoprocessor_retro_run(void); 337 338 size_t libretro_videoprocessor_retro_serialize_size(void); 339 340 bool libretro_videoprocessor_retro_serialize(void *data, size_t size); 341 342 bool libretro_videoprocessor_retro_unserialize(const void *data, size_t size); 343 344 void libretro_videoprocessor_retro_cheat_reset(void); 345 346 void libretro_videoprocessor_retro_cheat_set(unsigned index, bool enabled, const char *code); 347 348 bool libretro_videoprocessor_retro_load_game(const struct retro_game_info *game); 349 350 bool libretro_videoprocessor_retro_load_game_special(unsigned game_type, 351 const struct retro_game_info *info, size_t num_info); 352 353 void libretro_videoprocessor_retro_unload_game(void); 354 355 unsigned libretro_videoprocessor_retro_get_region(void); 356 357 void *libretro_videoprocessor_retro_get_memory_data(unsigned id); 358 359 size_t libretro_videoprocessor_retro_get_memory_size(unsigned id); 360 361 #endif 362 363 #ifdef HAVE_GONG 364 /* Internal gong core. */ 365 366 void libretro_gong_retro_init(void); 367 368 void libretro_gong_retro_deinit(void); 369 370 unsigned libretro_gong_retro_api_version(void); 371 372 void libretro_gong_retro_get_system_info(struct retro_system_info *info); 373 374 void libretro_gong_retro_get_system_av_info(struct retro_system_av_info *info); 375 376 void libretro_gong_retro_set_environment(retro_environment_t cb); 377 378 void libretro_gong_retro_set_video_refresh(retro_video_refresh_t cb); 379 380 void libretro_gong_retro_set_audio_sample(retro_audio_sample_t cb); 381 382 void libretro_gong_retro_set_audio_sample_batch(retro_audio_sample_batch_t cb); 383 384 void libretro_gong_retro_set_input_poll(retro_input_poll_t cb); 385 386 void libretro_gong_retro_set_input_state(retro_input_state_t cb); 387 388 void libretro_gong_retro_set_controller_port_device(unsigned port, unsigned device); 389 390 void libretro_gong_retro_reset(void); 391 392 void libretro_gong_retro_run(void); 393 394 size_t libretro_gong_retro_serialize_size(void); 395 396 bool libretro_gong_retro_serialize(void *data, size_t size); 397 398 bool libretro_gong_retro_unserialize(const void *data, size_t size); 399 400 void libretro_gong_retro_cheat_reset(void); 401 402 void libretro_gong_retro_cheat_set(unsigned index, bool enabled, const char *code); 403 404 bool libretro_gong_retro_load_game(const struct retro_game_info *game); 405 406 bool libretro_gong_retro_load_game_special(unsigned game_type, 407 const struct retro_game_info *info, size_t num_info); 408 409 void libretro_gong_retro_unload_game(void); 410 411 unsigned libretro_gong_retro_get_region(void); 412 413 void *libretro_gong_retro_get_memory_data(unsigned id); 414 415 size_t libretro_gong_retro_get_memory_size(unsigned id); 416 417 #endif 418 419 RETRO_END_DECLS 420 421 #endif 422