mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 13:57:57 -07:00
8cae2fee56
In the future if we merge wiimote too, this will bring the advantage that the two will be able to cooperate, to no longer fight over control of input devices which can sometimes cause problems. Thanks shuffle2 for the patience. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5670 8ced0084-cf51-0410-be5f-012b33b47a6e
183 lines
4.8 KiB
C
183 lines
4.8 KiB
C
|
|
//________________________________________________________________________________________
|
|
// File description: Common plugin spec, version #1.0 maintained by F|RES
|
|
|
|
#ifndef _PLUGINS_H_INCLUDED__
|
|
#define _PLUGINS_H_INCLUDED__
|
|
|
|
// Includes
|
|
// ------------
|
|
// TODO: See if we can get rid of the windows.h include.
|
|
#ifdef _WIN32
|
|
#include <windows.h>
|
|
#endif
|
|
#include "CommonTypes.h"
|
|
|
|
// Plugin communication. I place this here rather in Common.h to rebuild less 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
|
|
WM_USER_PAUSE = 10,
|
|
WM_USER_STOP,
|
|
WM_USER_CREATE,
|
|
WM_USER_SETCURSOR,
|
|
WM_USER_KEYDOWN,
|
|
VIDEO_DESTROY, // The video debugging window was destroyed
|
|
AUDIO_DESTROY, // The audio debugging window was destroyed
|
|
WIIMOTE_DISCONNECT, // Disconnect Wiimote
|
|
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_REMOVED,
|
|
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
|
|
|
|
// used for notification on emulation state
|
|
enum PLUGIN_EMUSTATE {
|
|
PLUGIN_EMUSTATE_PLAY = 1,
|
|
PLUGIN_EMUSTATE_PAUSE,
|
|
PLUGIN_EMUSTATE_STOP,
|
|
};
|
|
|
|
// 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;
|
|
|
|
#ifndef MAX_PATH
|
|
// apparently a windows-ism.
|
|
#define MAX_PATH 260
|
|
#endif
|
|
|
|
// TODO: Remove, or at least remove the void pointers and replace with data.
|
|
// This design is just wrong and ugly - the plugins shouldn't have this much access.
|
|
typedef struct
|
|
{
|
|
void *was_eventHandler_but_lets_not_break_abi;
|
|
void *logManager;
|
|
char game_ini[MAX_PATH];
|
|
char unique_id[16];
|
|
} 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);
|
|
|
|
// ___________________________________________________________________________
|
|
// Function: EmuStateChange
|
|
// Purpose: Notifies the plugin of a change in emulation state
|
|
// input: newState
|
|
// output: none
|
|
//
|
|
EXPORT void CALL EmuStateChange(PLUGIN_EMUSTATE newState);
|
|
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
#endif // _PLUGINS_H_INCLUDED__
|