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