No point in having an older version of the controller specs.
This commit is contained in:
parent
0d75a57f1f
commit
0f85dc146b
|
@ -1,220 +0,0 @@
|
||||||
/**********************************************************************************
|
|
||||||
Common Controller plugin spec, version #1.0 maintained by
|
|
||||||
zilmar (zilmar@emulation64.com)
|
|
||||||
|
|
||||||
All questions or suggestions should go through the mailing list.
|
|
||||||
http://www.egroups.com/group/Plugin64-Dev
|
|
||||||
**********************************************************************************/
|
|
||||||
#ifndef _CONTR_H_INCLUDED__
|
|
||||||
#define _CONTR_H_INCLUDED__
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Note: BOOL, BYTE, WORD, DWORD, TRUE, FALSE are defined in windows.h */
|
|
||||||
|
|
||||||
#define PLUGIN_TYPE_CONTROLLER 4
|
|
||||||
|
|
||||||
/*** Conteroller plugin's ****/
|
|
||||||
|
|
||||||
#define PLUGIN_NONE 1
|
|
||||||
#define PLUGIN_MEMPAK 2
|
|
||||||
// not implemeted for non raw data
|
|
||||||
#define PLUGIN_RUMBLE_PAK 3
|
|
||||||
// not implemeted for non raw data
|
|
||||||
#define PLUGIN_TRANSFER_PAK 4
|
|
||||||
#define PLUGIN_RAW 5
|
|
||||||
|
|
||||||
/*********************************************************************************
|
|
||||||
Note about Conteroller plugin's:
|
|
||||||
the rumble pak needs a function for the force feed back joystick and tranfer pak
|
|
||||||
probaly needs a function for the plugin to be able to select the GB rom and
|
|
||||||
eeprom... maybe this should be done by the emu instead of the plugin, but I think
|
|
||||||
it probaly should be done by the plugin. I will see about adding these functions
|
|
||||||
in the next spec
|
|
||||||
**********************************************************************************/
|
|
||||||
|
|
||||||
#define EXPORT __declspec(dllexport)
|
|
||||||
#define CALL __cdecl
|
|
||||||
|
|
||||||
/***** Structures *****/
|
|
||||||
typedef struct {
|
|
||||||
WORD Version; /* Should be set to 0x0100 */
|
|
||||||
WORD Type; /* Set to PLUGIN_TYPE_CONTROLLER */
|
|
||||||
char Name[100]; /* Name of the DLL */
|
|
||||||
BOOL Reserved1;
|
|
||||||
BOOL Reserved2;
|
|
||||||
} PLUGIN_INFO;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
BOOL Present;
|
|
||||||
BOOL RawData;
|
|
||||||
int Plugin;
|
|
||||||
} CONTROL;
|
|
||||||
|
|
||||||
typedef union {
|
|
||||||
DWORD Value;
|
|
||||||
struct {
|
|
||||||
unsigned R_DPAD : 1;
|
|
||||||
unsigned L_DPAD : 1;
|
|
||||||
unsigned D_DPAD : 1;
|
|
||||||
unsigned U_DPAD : 1;
|
|
||||||
unsigned START_BUTTON : 1;
|
|
||||||
unsigned Z_TRIG : 1;
|
|
||||||
unsigned B_BUTTON : 1;
|
|
||||||
unsigned A_BUTTON : 1;
|
|
||||||
|
|
||||||
unsigned R_CBUTTON : 1;
|
|
||||||
unsigned L_CBUTTON : 1;
|
|
||||||
unsigned D_CBUTTON : 1;
|
|
||||||
unsigned U_CBUTTON : 1;
|
|
||||||
unsigned R_TRIG : 1;
|
|
||||||
unsigned L_TRIG : 1;
|
|
||||||
unsigned Reserved1 : 1;
|
|
||||||
unsigned Reserved2 : 1;
|
|
||||||
|
|
||||||
signed Y_AXIS : 8;
|
|
||||||
|
|
||||||
signed X_AXIS : 8;
|
|
||||||
};
|
|
||||||
} BUTTONS;
|
|
||||||
|
|
||||||
/******************************************************************
|
|
||||||
Function: CloseDLL
|
|
||||||
Purpose: This function is called when the emulator is closing
|
|
||||||
down allowing the dll to de-initialise.
|
|
||||||
input: none
|
|
||||||
output: none
|
|
||||||
*******************************************************************/
|
|
||||||
EXPORT void CALL CloseDLL (void);
|
|
||||||
|
|
||||||
/******************************************************************
|
|
||||||
Function: ControllerCommand
|
|
||||||
Purpose: To process the raw data that has just been sent to a
|
|
||||||
specific controller.
|
|
||||||
input: - Controller Number (0 to 3) and -1 signalling end of
|
|
||||||
processing the pif ram.
|
|
||||||
- Pointer of data to be processed.
|
|
||||||
output: none
|
|
||||||
|
|
||||||
note: This function is only needed if the DLL is allowing raw
|
|
||||||
data.
|
|
||||||
|
|
||||||
the data that is being processed looks like this:
|
|
||||||
initilize controller: 01 03 00 FF FF FF
|
|
||||||
read controller: 01 04 01 FF FF FF FF
|
|
||||||
*******************************************************************/
|
|
||||||
EXPORT void CALL ControllerCommand ( int Control, BYTE * Command);
|
|
||||||
|
|
||||||
/******************************************************************
|
|
||||||
Function: DllAbout
|
|
||||||
Purpose: This function is optional function that is provided
|
|
||||||
to give further information about the DLL.
|
|
||||||
input: a handle to the window that calls this function
|
|
||||||
output: none
|
|
||||||
*******************************************************************/
|
|
||||||
EXPORT void CALL DllAbout ( HWND hParent );
|
|
||||||
|
|
||||||
/******************************************************************
|
|
||||||
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: DllTest
|
|
||||||
Purpose: This function is optional function that is provided
|
|
||||||
to allow the user to test the dll
|
|
||||||
input: a handle to the window that calls this function
|
|
||||||
output: none
|
|
||||||
*******************************************************************/
|
|
||||||
EXPORT void CALL DllTest ( HWND hParent );
|
|
||||||
|
|
||||||
/******************************************************************
|
|
||||||
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 stucture that needs to be
|
|
||||||
filled by the function. (see def above)
|
|
||||||
output: none
|
|
||||||
*******************************************************************/
|
|
||||||
EXPORT void CALL GetDllInfo ( PLUGIN_INFO * PluginInfo );
|
|
||||||
|
|
||||||
/******************************************************************
|
|
||||||
Function: GetKeys
|
|
||||||
Purpose: To get the current state of the controllers buttons.
|
|
||||||
input: - Controller Number (0 to 3)
|
|
||||||
- A pointer to a BUTTONS structure to be filled with
|
|
||||||
the controller state.
|
|
||||||
output: none
|
|
||||||
*******************************************************************/
|
|
||||||
EXPORT void CALL GetKeys(int Control, BUTTONS * Keys );
|
|
||||||
|
|
||||||
/******************************************************************
|
|
||||||
Function: InitiateControllers
|
|
||||||
Purpose: This function initialises how each of the controllers
|
|
||||||
should be handled.
|
|
||||||
input: - The handle to the main window.
|
|
||||||
- A controller structure that needs to be filled for
|
|
||||||
the emulator to know how to handle each controller.
|
|
||||||
output: none
|
|
||||||
*******************************************************************/
|
|
||||||
EXPORT void CALL InitiateControllers (HWND hMainWindow, CONTROL Controls[4]);
|
|
||||||
|
|
||||||
/******************************************************************
|
|
||||||
Function: ReadController
|
|
||||||
Purpose: To process the raw data in the pif ram that is about to
|
|
||||||
be read.
|
|
||||||
input: - Controller Number (0 to 3) and -1 signalling end of
|
|
||||||
processing the pif ram.
|
|
||||||
- Pointer of data to be processed.
|
|
||||||
output: none
|
|
||||||
note: This function is only needed if the DLL is allowing raw
|
|
||||||
data.
|
|
||||||
*******************************************************************/
|
|
||||||
EXPORT void CALL ReadController ( int Control, BYTE * Command );
|
|
||||||
|
|
||||||
/******************************************************************
|
|
||||||
Function: RomClosed
|
|
||||||
Purpose: This function is called when a rom is closed.
|
|
||||||
input: none
|
|
||||||
output: none
|
|
||||||
*******************************************************************/
|
|
||||||
EXPORT void CALL RomClosed (void);
|
|
||||||
|
|
||||||
/******************************************************************
|
|
||||||
Function: RomOpen
|
|
||||||
Purpose: This function is called when a rom is open. (from the
|
|
||||||
emulation thread)
|
|
||||||
input: none
|
|
||||||
output: none
|
|
||||||
*******************************************************************/
|
|
||||||
EXPORT void CALL RomOpen (void);
|
|
||||||
|
|
||||||
/******************************************************************
|
|
||||||
Function: WM_KeyDown
|
|
||||||
Purpose: To pass the WM_KeyDown message from the emulator to the
|
|
||||||
plugin.
|
|
||||||
input: wParam and lParam of the WM_KEYDOWN message.
|
|
||||||
output: none
|
|
||||||
*******************************************************************/
|
|
||||||
EXPORT void CALL WM_KeyDown( WPARAM wParam, LPARAM lParam );
|
|
||||||
|
|
||||||
/******************************************************************
|
|
||||||
Function: WM_KeyUp
|
|
||||||
Purpose: To pass the WM_KEYUP message from the emulator to the
|
|
||||||
plugin.
|
|
||||||
input: wParam and lParam of the WM_KEYDOWN message.
|
|
||||||
output: none
|
|
||||||
*******************************************************************/
|
|
||||||
EXPORT void CALL WM_KeyUp( WPARAM wParam, LPARAM lParam );
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -155,7 +155,7 @@ EXPORT void CALL GetDllInfo ( PLUGIN_INFO* PluginInfo )
|
||||||
sprintf(PluginInfo->Name,"N-Rage For PJ64: %s",VER_FILE_VERSION_STR);
|
sprintf(PluginInfo->Name,"N-Rage For PJ64: %s",VER_FILE_VERSION_STR);
|
||||||
#endif
|
#endif
|
||||||
PluginInfo->Type = PLUGIN_TYPE_CONTROLLER;
|
PluginInfo->Type = PLUGIN_TYPE_CONTROLLER;
|
||||||
PluginInfo->Version = SPECS_VERSION;
|
PluginInfo->Version = 0x0101;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
|
@ -289,21 +289,6 @@ EXPORT void CALL DllTest ( HWND hParent )
|
||||||
// It's easier to maintain one version of this, as not much really changes
|
// It's easier to maintain one version of this, as not much really changes
|
||||||
// between versions. --rabid
|
// between versions. --rabid
|
||||||
|
|
||||||
#if SPECS_VERSION == 0x0100
|
|
||||||
#pragma message("Conforming to Zilmar Spec 1.0")
|
|
||||||
/******************************************************************
|
|
||||||
Function: InitiateControllers
|
|
||||||
Purpose: This function initialises how each of the controllers
|
|
||||||
should be handled.
|
|
||||||
input: - The handle to the main window.
|
|
||||||
- A controller structure that needs to be filled for
|
|
||||||
the emulator to know how to handle each controller.
|
|
||||||
output: none
|
|
||||||
*******************************************************************/
|
|
||||||
EXPORT void CALL InitiateControllers( HWND hMainWindow, CONTROL Controls[4])
|
|
||||||
|
|
||||||
#elif SPECS_VERSION >= 0x0101
|
|
||||||
#pragma message("Conforming to Zilmar Spec 1.1")
|
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
Function: InitiateControllers
|
Function: InitiateControllers
|
||||||
Purpose: This function initialises how each of the controllers
|
Purpose: This function initialises how each of the controllers
|
||||||
|
@ -313,22 +298,15 @@ EXPORT void CALL InitiateControllers( HWND hMainWindow, CONTROL Controls[4])
|
||||||
output: none
|
output: none
|
||||||
*******************************************************************/
|
*******************************************************************/
|
||||||
EXPORT void CALL InitiateControllers (CONTROL_INFO * ControlInfo)
|
EXPORT void CALL InitiateControllers (CONTROL_INFO * ControlInfo)
|
||||||
|
|
||||||
#endif // SPECS_VERSION
|
|
||||||
{
|
{
|
||||||
DebugWriteA("CALLED: InitiateControllers\n");
|
DebugWriteA("CALLED: InitiateControllers\n");
|
||||||
if( !prepareHeap())
|
if( !prepareHeap())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if SPECS_VERSION == 0x0100
|
|
||||||
g_strEmuInfo.hMainWindow = hMainWindow;
|
|
||||||
// g_strEmuInfo.HEADER = NULL;
|
|
||||||
#elif SPECS_VERSION >= 0x0101
|
|
||||||
g_strEmuInfo.hMainWindow = ControlInfo->hMainWindow;
|
g_strEmuInfo.hMainWindow = ControlInfo->hMainWindow;
|
||||||
// g_strEmuInfo.MemoryBswaped = ControlInfo->MemoryBswaped;
|
// g_strEmuInfo.MemoryBswaped = ControlInfo->MemoryBswaped;
|
||||||
// g_strEmuInfo.HEADER = ControlInfo->HEADER;
|
// g_strEmuInfo.HEADER = ControlInfo->HEADER;
|
||||||
// UNDONE: Instead of just storing the header, figure out what ROM we're running and save that information somewhere
|
// UNDONE: Instead of just storing the header, figure out what ROM we're running and save that information somewhere
|
||||||
#endif // SPECS_VERSION
|
|
||||||
|
|
||||||
// The emulator expects us to tell what controllers are plugged in and what their paks are at this point.
|
// The emulator expects us to tell what controllers are plugged in and what their paks are at this point.
|
||||||
|
|
||||||
|
|
|
@ -206,10 +206,6 @@
|
||||||
RelativePath="commonIncludes.h"
|
RelativePath="commonIncludes.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="ControllerSpecs\Controller #1.0.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="ControllerSpecs\Controller #1.1.h"
|
RelativePath="ControllerSpecs\Controller #1.1.h"
|
||||||
>
|
>
|
||||||
|
|
|
@ -65,7 +65,6 @@
|
||||||
<ClInclude Include="Version.h" />
|
<ClInclude Include="Version.h" />
|
||||||
<ClInclude Include="XInputController.h" />
|
<ClInclude Include="XInputController.h" />
|
||||||
<ClInclude Include="commonIncludes.h" />
|
<ClInclude Include="commonIncludes.h" />
|
||||||
<ClInclude Include="ControllerSpecs\Controller #1.0.h" />
|
|
||||||
<ClInclude Include="ControllerSpecs\Controller #1.1.h" />
|
<ClInclude Include="ControllerSpecs\Controller #1.1.h" />
|
||||||
<ClInclude Include="Debug.h" />
|
<ClInclude Include="Debug.h" />
|
||||||
<ClInclude Include="DirectInput.h" />
|
<ClInclude Include="DirectInput.h" />
|
||||||
|
|
|
@ -50,9 +50,6 @@
|
||||||
<ClInclude Include="commonIncludes.h">
|
<ClInclude Include="commonIncludes.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="ControllerSpecs\Controller #1.0.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="ControllerSpecs\Controller #1.1.h">
|
<ClInclude Include="ControllerSpecs\Controller #1.1.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
@ -33,14 +33,7 @@
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
#include "Debug.h"
|
#include "Debug.h"
|
||||||
|
|
||||||
#if SPECS_VERSION == 0x0100
|
|
||||||
#include "./ControllerSpecs/Controller #1.0.h"
|
|
||||||
#endif // #if SPECS_VERSION == 0x0100
|
|
||||||
|
|
||||||
#if SPECS_VERSION >= 0x0101
|
|
||||||
#include "./ControllerSpecs/Controller #1.1.h"
|
#include "./ControllerSpecs/Controller #1.1.h"
|
||||||
#endif // #if SPECS_VERSION == 0x0100
|
|
||||||
|
|
||||||
|
|
||||||
#define P_malloc( size ) HeapAlloc( g_hHeap, 0, size )
|
#define P_malloc( size ) HeapAlloc( g_hHeap, 0, size )
|
||||||
#define P_free( memory ) HeapFree( g_hHeap, 0, memory )
|
#define P_free( memory ) HeapFree( g_hHeap, 0, memory )
|
||||||
|
|
|
@ -48,11 +48,6 @@ typedef const unsigned char *const unsigned char *;
|
||||||
// MAKE SURE localized resources do not exceed this limit, or they will be cut off.
|
// MAKE SURE localized resources do not exceed this limit, or they will be cut off.
|
||||||
#define DEFAULT_BUFFER 256
|
#define DEFAULT_BUFFER 256
|
||||||
|
|
||||||
// conform to Plugin Specs 1.0
|
|
||||||
//#define SPECS_VERSION 0x0100
|
|
||||||
// conform to Plugin Specs 1.1
|
|
||||||
#define SPECS_VERSION 0x0101
|
|
||||||
|
|
||||||
// use default settings for Release and Debugbuild
|
// use default settings for Release and Debugbuild
|
||||||
#define STDCONFIG
|
#define STDCONFIG
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue