1 #ifndef __MDFN_MEDNAFEN_DRIVER_H
2 #define __MDFN_MEDNAFEN_DRIVER_H
3 
4 #include <stdio.h>
5 #include <vector>
6 #include <string>
7 
8 #include "settings-common.h"
9 
10 extern std::vector<MDFNGI *>MDFNSystems;
11 
12 /* Indent stdout newlines +- "indent" amount */
13 void MDFN_indent(int indent);
14 void MDFN_printf(const char *format, ...);
15 
16 #define MDFNI_printf MDFN_printf
17 
18 /* Displays an error.  Can block or not. */
19 void MDFND_PrintError(const char *s);
20 void MDFND_Message(const char *s);
21 
22 uint32 MDFND_GetTime(void);
23 void MDFND_Sleep(uint32 ms);
24 
25 #ifdef WANT_THREADING
26 /* Being threading support. */
27 // Mostly based off SDL's prototypes and semantics.
28 // Driver code should actually define MDFN_Thread and MDFN_Mutex.
29 
30 struct MDFN_Thread;
31 struct MDFN_Mutex;
32 
33 MDFN_Thread *MDFND_CreateThread(int (*fn)(void *), void *data);
34 void MDFND_WaitThread(MDFN_Thread *thread, int *status);
35 void MDFND_KillThread(MDFN_Thread *thread);
36 
37 MDFN_Mutex *MDFND_CreateMutex(void);
38 void MDFND_DestroyMutex(MDFN_Mutex *mutex);
39 int MDFND_LockMutex(MDFN_Mutex *mutex);
40 int MDFND_UnlockMutex(MDFN_Mutex *mutex);
41 
42 /* End threading support. */
43 #endif
44 
45 /* path = path of game/file to load.  returns NULL on failure. */
46 MDFNGI *MDFNI_LoadGame(const char *force_module, const char *path);
47 
48 MDFNGI *MDFNI_LoadCD(const char *sysname, const char *devicename);
49 
50 // Call this function as early as possible, even before MDFNI_Initialize()
51 bool MDFNI_InitializeModule(void);
52 
53 /* allocates memory.  0 on failure, 1 on success. */
54 /* Also pass it the base directory to load the configuration file. */
55 int MDFNI_Initialize(const char *basedir);
56 
57 /* Sets the base directory(save states, snapshots, etc. are saved in directories
58    below this directory. */
59 void MDFNI_SetBaseDirectory(const char *dir);
60 
61 /* Closes currently loaded game */
62 void MDFNI_CloseGame(void);
63 
64 void MDFN_DispMessage(const char *format, ...);
65 #define MDFNI_DispMessage MDFN_DispMessage
66 
67 uint32 MDFNI_CRC32(uint32 crc, uint8 *buf, uint32 len);
68 
69 // NES hackish function.  Should abstract in the future.
70 int MDFNI_DatachSet(const uint8 *rcode);
71 
72 void MDFNI_DumpModulesDef(const char *fn);
73 
74 
75 #endif
76