////////////////////////////////////////////////////////////////////////////////////////// //________________________________________________________________________________________ // File description: Common plugin spec, version #1.0 maintained by F|RES /////////////////////////// #ifndef _PLUGINS_H_INCLUDED__ #define _PLUGINS_H_INCLUDED__ ////////////////////////////////////////////////////////////////////////////////////////// // Includes // ------------ #ifdef _WIN32 #include #endif #include "CommonTypes.h" /////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// /* Plugin communication. I place this here rather in Common.h since these messages are only received at one place, by the CPanel in Frame.cpp. That way I don't have to rebuild if any of this is changed */ // ----------------- enum PLUGIN_COMM { // Begin at 10 in case there is already messages with wParam = 0, 1, 2 and so on OPENGL_WM_USER_STOP = 10, OPENGL_WM_USER_CREATE, NJOY_RELOAD, // Reload nJoy if DirectInput has failed WIIMOTE_RECONNECT, // Reconnect the Wiimote if it has disconnected INPUT_FRAME_COUNTER // Wind back the frame counter for rerecording }; /////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// // System specific declarations and definitions // ------------ #ifdef _WIN32 #define EXPORT __declspec(dllexport) #define CALL __cdecl #else #define EXPORT __attribute__ ((visibility("default"))) #define __cdecl #define CALL #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif // simulate something that looks like win32 // long term, kill these #define HWND void* #define HINSTANCE void* #endif #if defined(__cplusplus) extern "C" { #endif /////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// // Global values // ------------ // Plugin types enum PLUGIN_TYPE { PLUGIN_TYPE_VIDEO = 1, PLUGIN_TYPE_DVD, PLUGIN_TYPE_PAD, PLUGIN_TYPE_AUDIO, PLUGIN_TYPE_COMPILER, PLUGIN_TYPE_DSP, PLUGIN_TYPE_WIIMOTE, }; #define STATE_MODE_READ 1 #define STATE_MODE_WRITE 2 #define STATE_MODE_MEASURE 3 /////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// // Export structs // ------------ typedef struct { u16 Version; // Set to 0x0100 PLUGIN_TYPE Type; // Set to PLUGIN_TYPE_DVD char Name[100]; // Name of the DLL } PLUGIN_INFO; typedef struct { void *eventHandler; void *config; void *messageLogger; } PLUGIN_GLOBALS; /////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // GLOBAL I N T E R F A C E /////////////////////////////////////////////////// // ____________________________________________________________________________ // Function: GetDllInfo // Purpose: This function allows the emulator to gather information // about the DLL by filling in the PluginInfo structure. // input: A pointer to a PLUGIN_INFO structure that needs to be // filled by the function. (see def above) // output: none // EXPORT void CALL GetDllInfo(PLUGIN_INFO* _pPluginInfo); // ___________________________________________________________________________ // Function: DllConfig // Purpose: This function is optional function that is provided // to allow the user to configure the DLL // input: A handle to the window that calls this function // output: none // EXPORT void CALL DllConfig(HWND _hParent); // ___________________________________________________________________________ // Function: DllDebugger // Purpose: Open the debugger // input: a handle to the window that calls this function // output: none // EXPORT void CALL DllDebugger(HWND _hParent, bool Show); // ___________________________________________________________________________ // Function: DllSetGlobals // Purpose: Set the pointer for globals variables // input: a pointer to the global struct // output: none // EXPORT void CALL SetDllGlobals(PLUGIN_GLOBALS* _pPluginGlobals); // ___________________________________________________________________________ // Function: Initialize // Purpose: Initialize the plugin // input: Init // output: none // EXPORT void CALL Initialize(void *init); // ___________________________________________________________________________ // Function: Shutdown // Purpose: This function is called when the emulator is shutting down // a game allowing the dll to de-initialise. // input: none // output: none // EXPORT void CALL Shutdown(void); // ___________________________________________________________________________ // Function: DoState // Purpose: Saves/load state // input/output: ptr // input: mode // EXPORT void CALL DoState(unsigned char **ptr, int mode); /////////////////////////////// #if defined(__cplusplus) } #endif #endif // _PLUGINS_H_INCLUDED__