[Nrage-input] Tabs -> spaces

This commit is contained in:
oddMLan 2020-02-09 04:36:49 -07:00
parent 891e43878b
commit 2b15003e77
22 changed files with 10328 additions and 10328 deletions

View File

@ -12,179 +12,179 @@ http://www.emutalk.net/cgi-bin/ikonboard/ikonboard.cgi?s=3bd272222f66ffff;act=SF
extern "C" {
#endif
/* Note: BOOL, BYTE, WORD, DWORD, TRUE, FALSE are defined in windows.h */
/* Note: BOOL, BYTE, WORD, DWORD, TRUE, FALSE are defined in windows.h */
#define PLUGIN_TYPE_CONTROLLER 4
#define PLUGIN_TYPE_CONTROLLER 4
#ifndef SPECS_VERSION
#define SPECS_VERSION 0x0101
#endif
/*** 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
// the controller plugin is passed in raw data
#define PLUGIN_RAW 5
/*** 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
// the controller plugin is passed in raw data
#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
**********************************************************************************/
/*********************************************************************************
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
#define EXPORT __declspec(dllexport)
#define CALL _cdecl
/***** Structures *****/
typedef struct
{
WORD Version; /* Should be set to 0x0101 */
WORD Type; /* Set to PLUGIN_TYPE_CONTROLLER */
char Name[100]; /* Name of the DLL */
BOOL Reserved1;
BOOL Reserved2;
} PLUGIN_INFO;
/***** Structures *****/
typedef struct
{
WORD Version; /* Should be set to 0x0101 */
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 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;
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;
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 Y_AXIS : 8;
signed X_AXIS : 8;
};
} BUTTONS;
signed X_AXIS : 8;
};
} BUTTONS;
typedef struct
{
HWND hMainWindow;
HINSTANCE hinst;
typedef struct
{
HWND hMainWindow;
HINSTANCE hinst;
BOOL MemoryBswaped; // If this is set to TRUE, then the memory has been pre
// bswap on a dword (32 bits) boundry, only effects header.
// eg. the first 8 bytes are stored like this:
// 4 3 2 1 8 7 6 5
BYTE * HEADER; // This is the rom header (first 40h bytes of the rom)
CONTROL *Controls; // A pointer to an array of 4 controllers .. eg:
// CONTROL Controls[4];
} CONTROL_INFO;
BOOL MemoryBswaped; // If this is set to TRUE, then the memory has been pre
// bswap on a dword (32 bits) boundry, only effects header.
// eg. the first 8 bytes are stored like this:
// 4 3 2 1 8 7 6 5
BYTE * HEADER; // This is the rom header (first 40h bytes of the rom)
CONTROL *Controls; // A pointer to an array of 4 controllers .. eg:
// CONTROL Controls[4];
} CONTROL_INFO;
/******************************************************************
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: 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
/******************************************************************
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, or the plugin is set to raw
note: This function is only needed if the DLL is allowing raw
data, or the plugin is set to raw
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);
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: 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: 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: 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: 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: 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
*******************************************************************/
/******************************************************************
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
*******************************************************************/
#if (SPECS_VERSION < 0x0101)
EXPORT void CALL InitiateControllers(void * hMainWindow, CONTROL Controls[4]);
#elif (SPECS_VERSION == 0x0101)
@ -194,53 +194,53 @@ EXPORT void CALL InitiateControllers(CONTROL_INFO ControlInfo);
EXPORT void CALL InitiateControllers(CONTROL_INFO * ControlInfo);
#endif
/******************************************************************
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: 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: 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: 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_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);
/******************************************************************
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)
}

View File

@ -1,9 +1,9 @@
/*
N-Rage`s Dinput8 Plugin
N-Rage`s Dinput8 Plugin
(C) 2002, 2006 Norbert Wladyka
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
This program is free software; you can redistribute it and/or modify
@ -34,125 +34,125 @@ HANDLE hDebug = INVALID_HANDLE_VALUE;
void _DebugAnsiFileWrite( LPCSTR szRemark )
{
if( !bDebug )
return;
if( !bDebug )
return;
if (hDebug == INVALID_HANDLE_VALUE)
{
TCHAR szFile[] = _T("NRage-Debug.txt");
TCHAR szBuffer[MAX_PATH+1];
if (hDebug == INVALID_HANDLE_VALUE)
{
TCHAR szFile[] = _T("NRage-Debug.txt");
TCHAR szBuffer[MAX_PATH+1];
GetAbsoluteFileName( szBuffer, szFile, DIRECTORY_LOG );
hDebug = CreateFile( szBuffer, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
if (hDebug != INVALID_HANDLE_VALUE)
SetFilePointer(hDebug, 0, 0, FILE_END);
}
GetAbsoluteFileName( szBuffer, szFile, DIRECTORY_LOG );
hDebug = CreateFile( szBuffer, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
if (hDebug != INVALID_HANDLE_VALUE)
SetFilePointer(hDebug, 0, 0, FILE_END);
}
if( hDebug != INVALID_HANDLE_VALUE )
{
DWORD dwWritten;
LPCSTR szText = szRemark;
if( szText == NULL )
szText = "\r\n";
if( hDebug != INVALID_HANDLE_VALUE )
{
DWORD dwWritten;
LPCSTR szText = szRemark;
if( szText == NULL )
szText = "\r\n";
LPCSTR szCurrPos = szText;
LPCSTR szCurrPos = szText;
while( ( szCurrPos = strchr( szCurrPos, '\n' )) != NULL )
{
DWORD length = szCurrPos - szText;
if( length > 0 && szCurrPos[-1] == '\r' )
--length;
while( ( szCurrPos = strchr( szCurrPos, '\n' )) != NULL )
{
DWORD length = szCurrPos - szText;
if( length > 0 && szCurrPos[-1] == '\r' )
--length;
if( length > 0 )
WriteFile( hDebug, (LPCVOID)szText, length, &dwWritten, NULL );
WriteFile( hDebug, "\r\n", 2, &dwWritten, NULL );
if( length > 0 )
WriteFile( hDebug, (LPCVOID)szText, length, &dwWritten, NULL );
WriteFile( hDebug, "\r\n", 2, &dwWritten, NULL );
szText = ++szCurrPos;
}
szText = ++szCurrPos;
}
DWORD length = lstrlenA( szText );
DWORD length = lstrlenA( szText );
if( length > 0 )
if( length > 0 )
WriteFile( hDebug, (LPCVOID)szText, length, &dwWritten, NULL );
}
return;
}
return;
}
void _cdecl _DebugWriteA( LPCSTR szFormat, ... )
{
if( szFormat != NULL )
{
char szBuffer[4096];
if( szFormat != NULL )
{
char szBuffer[4096];
va_list val;
va_list val;
va_start( val,szFormat );
wvsprintfA( szBuffer, szFormat, val );
va_end( val );
szBuffer[sizeof(szBuffer)-1] = '\0';
va_start( val,szFormat );
wvsprintfA( szBuffer, szFormat, val );
va_end( val );
szBuffer[sizeof(szBuffer)-1] = '\0';
_DebugAnsiFileWrite( szBuffer );
}
else
_DebugAnsiFileWrite( szBuffer );
}
else
_DebugAnsiFileWrite( NULL );
}
void _cdecl _DebugWriteW( const LPCWSTR szFormat, ... )
{
if( szFormat != NULL )
{
WCHAR szBuffer[4096];
va_list val;
if( szFormat != NULL )
{
WCHAR szBuffer[4096];
va_list val;
va_start( val,szFormat );
wvsprintfW( szBuffer, szFormat, val );
va_end( val );
szBuffer[(sizeof(szBuffer) / sizeof(WCHAR))-1] = L'\0';
va_start( val,szFormat );
wvsprintfW( szBuffer, szFormat, val );
va_end( val );
szBuffer[(sizeof(szBuffer) / sizeof(WCHAR))-1] = L'\0';
char szAnsi[sizeof(szBuffer) / sizeof(WCHAR)];
WideCharToMultiByte( CP_ACP, 0, szBuffer, -1, szAnsi, sizeof(szAnsi), NULL, NULL );
_DebugAnsiFileWrite( szAnsi );
}
else
_DebugAnsiFileWrite( NULL );
char szAnsi[sizeof(szBuffer) / sizeof(WCHAR)];
WideCharToMultiByte( CP_ACP, 0, szBuffer, -1, szAnsi, sizeof(szAnsi), NULL, NULL );
_DebugAnsiFileWrite( szAnsi );
}
else
_DebugAnsiFileWrite( NULL );
}
void _WriteDatasA( LPCSTR Header, const int Control, const unsigned char * Data, const HRESULT hr )
{
if( !bDebug || Data == NULL )
return;
if( !bDebug || Data == NULL )
return;
_DebugWriteA( "%d:%s\n", Control, Header);
_DebugWriteA( "%d:%s\n", Control, Header);
if( hr )
{
_DebugWriteA( "Failed! ErrorCode: %08X\n", hr );
}
if( hr )
{
_DebugWriteA( "Failed! ErrorCode: %08X\n", hr );
}
int iEnd = Data[0] + Data[1] + 2;
int iEnd = Data[0] + Data[1] + 2;
for( int i = -1; i < iEnd; i += 8 )
{
_DebugWriteA( "%02X%02X%02X%02X %02X%02X%02X%02X\n", Data[i+0], Data[i+1], Data[i+2], Data[i+3], Data[i+4], Data[i+5], Data[i+6], Data[i+7] );
}
for( int i = -1; i < iEnd; i += 8 )
{
_DebugWriteA( "%02X%02X%02X%02X %02X%02X%02X%02X\n", Data[i+0], Data[i+1], Data[i+2], Data[i+3], Data[i+4], Data[i+5], Data[i+6], Data[i+7] );
}
return;
return;
}
void _CloseDebugFile()
{
if( hDebug != INVALID_HANDLE_VALUE )
{
_DebugWriteA("---DEBUG FILE CLOSED---\n");
CloseHandle( hDebug );
}
if( hDebug != INVALID_HANDLE_VALUE )
{
_DebugWriteA("---DEBUG FILE CLOSED---\n");
CloseHandle( hDebug );
}
}
void _DebugFlush()
{
if( hDebug != INVALID_HANDLE_VALUE )
{
FlushFileBuffers(hDebug);
}
if( hDebug != INVALID_HANDLE_VALUE )
{
FlushFileBuffers(hDebug);
}
}

View File

@ -1,9 +1,9 @@
/*
N-Rage`s Dinput8 Plugin
N-Rage`s Dinput8 Plugin
(C) 2002, 2006 Norbert Wladyka
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
This program is free software; you can redistribute it and/or modify
@ -37,9 +37,9 @@ void _cdecl _DebugWriteW( LPCWSTR szFormat, ... );
void _CloseDebugFile();
void _DebugFlush();
#define DebugWriteA _DebugWriteA
#define DebugWriteW _DebugWriteW
#define WriteDatasA( header, control, data, hr ) _WriteDatasA( header, control, data, hr )
#define DebugWriteA _DebugWriteA
#define DebugWriteW _DebugWriteW
#define WriteDatasA( header, control, data, hr ) _WriteDatasA( header, control, data, hr )
#define CloseDebugFile() _CloseDebugFile()
#define DebugWriteByteA(str) DebugWriteA("%02X", str)
#define DebugWriteWordA(str) DebugWriteA("%04X", str)
@ -48,9 +48,9 @@ void _DebugFlush();
#else // #ifndef _DEBUG
#define DebugWriteByteA(str)
#define DebugWriteWordA(str)
#define DebugWriteA ;//
#define DebugWriteW ;//
#define WriteDatasA(header,control,data,hr)
#define DebugWriteA ;//
#define DebugWriteW ;//
#define WriteDatasA(header,control,data,hr)
#define CloseDebugFile()
#define DebugFlush()

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
/*
N-Rage`s Dinput8 Plugin
N-Rage`s Dinput8 Plugin
(C) 2002, 2006 Norbert Wladyka
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
This program is free software; you can redistribute it and/or modify
@ -55,103 +55,103 @@ HRESULT ReadAdaptoidPak( LPDIRECTINPUTDEVICE8 lpDirectInputDevice, DWORD addr, L
HRESULT WriteAdaptoidPak( LPDIRECTINPUTDEVICE8 lpDirectInputDevice, DWORD addr, LPBYTE data );
#define MINAXISVALUE -32767
#define MAXAXISVALUE 32767
#define ZEROVALUE 0
#define THRESHOLD 50
#define RANGERELATIVE (MAXAXISVALUE - ZEROVALUE + 1)
#define ABSTHRESHOLD (RANGERELATIVE * THRESHOLD / 100)
// plus or minus this many 1/100 degrees counts as GetJoyPadPOV being pressed
#define POVANGLETHRESH 5675
#define MINAXISVALUE -32767
#define MAXAXISVALUE 32767
#define ZEROVALUE 0
#define THRESHOLD 50
#define RANGERELATIVE (MAXAXISVALUE - ZEROVALUE + 1)
#define ABSTHRESHOLD (RANGERELATIVE * THRESHOLD / 100)
// plus or minus this many 1/100 degrees counts as GetJoyPadPOV being pressed
#define POVANGLETHRESH 5675
#define MOUSEMOVE 5
// by default, scale the mouse input by this much
#define MOUSESCALEVALUE 10
// percent to decay mouse buffer every frame.
// Tweak this from 0-100 to control how much the mouse drifts; values closer to 100 drift more,
// while values closer to 0 are very stiff (deadpan) and don't turn well
#define MOUSEBUFFERDECAY 80
#define MOUSEMOVE 5
// by default, scale the mouse input by this much
#define MOUSESCALEVALUE 10
// percent to decay mouse buffer every frame.
// Tweak this from 0-100 to control how much the mouse drifts; values closer to 100 drift more,
// while values closer to 0 are very stiff (deadpan) and don't turn well
#define MOUSEBUFFERDECAY 80
#define N64DIVIDER 258
#define N64DIVIDER 258
#define DID_KEYBOARD 0
#define DID_MOUSE 1
#define DID_GAMEPAD 2
#define DID_KEYBOARD 0
#define DID_MOUSE 1
#define DID_GAMEPAD 2
#define DIB_KEYBOARD DISCL_NONEXCLUSIVE | DISCL_FOREGROUND
#define DIB_MOUSE DISCL_EXCLUSIVE | DISCL_FOREGROUND
#define DIB_FF DISCL_EXCLUSIVE | DISCL_BACKGROUND
#define DIB_DEVICE DISCL_NONEXCLUSIVE | DISCL_BACKGROUND
#define DIB_KEYBOARD DISCL_NONEXCLUSIVE | DISCL_FOREGROUND
#define DIB_MOUSE DISCL_EXCLUSIVE | DISCL_FOREGROUND
#define DIB_FF DISCL_EXCLUSIVE | DISCL_BACKGROUND
#define DIB_DEVICE DISCL_NONEXCLUSIVE | DISCL_BACKGROUND
#define DIB_CONFIG DISCL_NONEXCLUSIVE | DISCL_BACKGROUND
#define DIB_CONFIG DISCL_NONEXCLUSIVE | DISCL_BACKGROUND
#define RUMBLE_NONE 0x00
#define RUMBLE_CONSTANT 0x01
#define RUMBLE_RAMP 0x02
#define RUMBLE_CONDITION 0x04
#define RUMBLE_PERIODIC 0x08
#define RUMBLE_CUSTOM 0x10
#define RUMBLE_NONE 0x00
#define RUMBLE_CONSTANT 0x01
#define RUMBLE_RAMP 0x02
#define RUMBLE_CONDITION 0x04
#define RUMBLE_PERIODIC 0x08
#define RUMBLE_CUSTOM 0x10
#define RUMBLE_DIRECT 0x80
#define RUMBLE_DIRECT 0x80
#define RUMBLE_EFF1 RUMBLE_CONSTANT
#define RUMBLE_EFF2 RUMBLE_RAMP
#define RUMBLE_EFF3 RUMBLE_DIRECT
#define RUMBLE_EFF1 RUMBLE_CONSTANT
#define RUMBLE_EFF2 RUMBLE_RAMP
#define RUMBLE_EFF3 RUMBLE_DIRECT
// Reported Name of the Adaptoid
#define STRING_ADAPTOID "Adaptoid"
#define STRING_GUID_SYSKEYBOARD _T("Keyboard")
#define STRING_GUID_SYSMOUSE _T("SysMouse")
// Reported Name of the Adaptoid
#define STRING_ADAPTOID "Adaptoid"
#define STRING_GUID_SYSKEYBOARD _T("Keyboard")
#define STRING_GUID_SYSMOUSE _T("SysMouse")
// Query API - pass in command #, returns 0xB0CAB0CA if supported
#define ADAPT_TEST 0x7834BB00
// Send command to rumble pack (DWORD 0=stop, 1=go)
#define ADAPT_RUMBLE 0x7834BB08
// Initialize pak (returns pak status bit flags)
#define ADAPT_INIT 0x7834BB0C
// Read from pak (reads 32 bytes of data)
#define ADAPT_READPAK 0x7834BB0D
// Write to pak (writes 32 bytes of data)
#define ADAPT_WRITEPAK 0x7834BB0E
// Send command directly to controller - synchronous
#define ADAPT_DIRECTCOMMAND 0x7834BB28
// Query API - pass in command #, returns 0xB0CAB0CA if supported
#define ADAPT_TEST 0x7834BB00
// Send command to rumble pack (DWORD 0=stop, 1=go)
#define ADAPT_RUMBLE 0x7834BB08
// Initialize pak (returns pak status bit flags)
#define ADAPT_INIT 0x7834BB0C
// Read from pak (reads 32 bytes of data)
#define ADAPT_READPAK 0x7834BB0D
// Write to pak (writes 32 bytes of data)
#define ADAPT_WRITEPAK 0x7834BB0E
// Send command directly to controller - synchronous
#define ADAPT_DIRECTCOMMAND 0x7834BB28
// The following inline functions are all overloads for existing functions
inline bool CreateEffectHandle( int iDevice, BYTE bRumbleTyp, long lStrength )
{
return CreateEffectHandle( g_strEmuInfo.hMainWindow, g_apFFDevice[iDevice], g_apdiEffect[iDevice], bRumbleTyp, lStrength );
return CreateEffectHandle( g_strEmuInfo.hMainWindow, g_apFFDevice[iDevice], g_apdiEffect[iDevice], bRumbleTyp, lStrength );
}
// this used to exist, but it was only used once and makes things more confusing. Removed. --rabid
//inline void ReleaseEffect( int iEffect )
//{
// ReleaseEffect( g_apdiEffect[iEffect] );
// ReleaseEffect( g_apdiEffect[iEffect] );
//}
inline BYTE GetAdaptoidStatus( int iDevice )
{
return GetAdaptoidStatus( g_apFFDevice[iDevice] );
return GetAdaptoidStatus( g_apFFDevice[iDevice] );
}
inline HRESULT WriteAdaptoidPak( int iDevice, DWORD addr, LPBYTE data )
{
return WriteAdaptoidPak( g_apFFDevice[iDevice], addr, data );
return WriteAdaptoidPak( g_apFFDevice[iDevice], addr, data );
}
inline HRESULT ReadAdaptoidPak( int iDevice, DWORD addr, LPBYTE data )
{
return ReadAdaptoidPak( g_apFFDevice[iDevice], addr, data );
return ReadAdaptoidPak( g_apFFDevice[iDevice], addr, data );
}
inline HRESULT InitializeAdaptoid( int iDevice, LPBYTE status )
{
return InitializeAdaptoid( g_apFFDevice[iDevice], status );
return InitializeAdaptoid( g_apFFDevice[iDevice], status );
}
inline HRESULT DirectRumbleCommand( int iDevice, DWORD cmd )
{
return DirectRumbleCommand( g_apFFDevice[iDevice], cmd );
return DirectRumbleCommand( g_apFFDevice[iDevice], cmd );
}
inline bool IsAdaptoidCommandSupported( int iDevice, DWORD cmd )
{
return IsAdaptoidCommandSupported( g_apFFDevice[iDevice], cmd );
return IsAdaptoidCommandSupported( g_apFFDevice[iDevice], cmd );
}

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
/*
N-Rage`s Dinput8 Plugin
N-Rage`s Dinput8 Plugin
(C) 2002, 2006 Norbert Wladyka
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
This program is free software; you can redistribute it and/or modify
@ -55,75 +55,75 @@ inline bool StringtoGUIDA( LPGUID guid, const char * szGUIDbuf );
unsigned long djbHash(const char *str);
#ifdef _UNICODE
#define TCHAR_TO_CHAR(x,y,z) wcstombs(x,y,z)
#define CHAR_TO_TCHAR(x,y,z) mbstowcs(x,y,z)
#define TCHAR_TO_CHAR(x,y,z) wcstombs(x,y,z)
#define CHAR_TO_TCHAR(x,y,z) mbstowcs(x,y,z)
#else
#define TCHAR_TO_CHAR(x,y,z) strncpy(x,y,z)
#define CHAR_TO_TCHAR(x,y,z) strncpy(x,y,z)
#define TCHAR_TO_CHAR(x,y,z) strncpy(x,y,z)
#define CHAR_TO_TCHAR(x,y,z) strncpy(x,y,z)
#endif
#define STRING_DEF_MEMPAKFILE _T("MemPaks")
#define STRING_DEF_GBROMFILE _T("GBxRoms")
#define STRING_DEF_GBROMSAVE _T("GBxSaves")
#define STRING_DEF_MEMPAKFILE _T("MemPaks")
#define STRING_DEF_GBROMFILE _T("GBxRoms")
#define STRING_DEF_GBROMSAVE _T("GBxSaves")
#define STRING_INI_HEADER "# Generated by NRage input plugin V2 version " VER_FILE_VERSION_STR "\n"
#define STRING_INI_HEADER "# Generated by NRage input plugin V2 version " VER_FILE_VERSION_STR "\n"
// We use these names for loading from INI files and NRage config files
#define STRING_INI_GENERAL "General"
#define STRING_INI_CONTROLLER "Controller"
#define STRING_INI_FOLDERS "Folders"
#define STRING_INI_BROWSER "lastBrowserDir"
#define STRING_INI_CONTROLS "Controls"
#define STRING_INI_SHORTCUTS "Shortcuts"
#define STRING_INI_MODIFIERS "Modifiers"
#define STRING_INI_GENERAL "General"
#define STRING_INI_CONTROLLER "Controller"
#define STRING_INI_FOLDERS "Folders"
#define STRING_INI_BROWSER "lastBrowserDir"
#define STRING_INI_CONTROLS "Controls"
#define STRING_INI_SHORTCUTS "Shortcuts"
#define STRING_INI_MODIFIERS "Modifiers"
#define STRING_INI_LANGUAGE "Language"
#define STRING_INI_SHOWMESSAGES "ShowMessages"
#define STRING_INI_LANGUAGE "Language"
#define STRING_INI_SHOWMESSAGES "ShowMessages"
#define STRING_INI_BRPROFILE "Profile"
#define STRING_INI_BRNOTE "Note"
#define STRING_INI_BRMEMPAK "Mempak"
#define STRING_INI_BRGBROM "GBxRom"
#define STRING_INI_BRGBSAVE "GBxSave"
// #define STRING_INI_BRSHORTCUTS STRING_INI_SHORTCUTS
#define STRING_INI_BRPROFILE "Profile"
#define STRING_INI_BRNOTE "Note"
#define STRING_INI_BRMEMPAK "Mempak"
#define STRING_INI_BRGBROM "GBxRom"
#define STRING_INI_BRGBSAVE "GBxSave"
// #define STRING_INI_BRSHORTCUTS STRING_INI_SHORTCUTS
#define STRING_INI_PLUGGED "Plugged"
#define STRING_INI_XINPUT "xInput"
#define STRING_INI_N64MOUSE "N64Mouse"
#define STRING_INI_BACKGROUNDINPUT "BackgroundInput"
#define STRING_INI_RAWDATA "RawData"
#define STRING_INI_PAKTYPE "PakType"
#define STRING_INI_REALN64RANGE "RealN64Range"
#define STRING_INI_RAPIDFIREENABLED "RapidFireEnabled"
#define STRING_INI_RAPIDFIRERATE "RapidFireRate"
#define STRING_INI_STICKRANGE "StickRange"
#define STRING_INI_MOUSEMOVEX "MouseMoveX"
#define STRING_INI_MOUSEMOVEY "MouseMoveY"
#define STRING_INI_AXISSET "AxisSet"
#define STRING_INI_KEYABSOLUTEX "KeyAbsoluteX"
#define STRING_INI_KEYABSOLUTEY "KeyAbsoluteY"
#define STRING_INI_PADDEADZONE "PadDeadZone"
#define STRING_INI_MOUSESENSX "MouseSensitivityX"
#define STRING_INI_MOUSESENSY "MouseSensitivityY"
#define STRING_INI_RUMBLETYPE "RumbleType"
#define STRING_INI_RUMBLESTRENGTH "RumbleStrength"
#define STRING_INI_VISUALRUMBLE "VisualRumble"
#define STRING_INI_FFDEVICEGUID "FFDeviceGUID"
#define STRING_INI_MEMPAKFILE "MemPakFile"
#define STRING_INI_GBROMFILE "GBRomFile"
#define STRING_INI_GBROMSAVE "GBRomSave"
#define STRING_INI_PLUGGED "Plugged"
#define STRING_INI_XINPUT "xInput"
#define STRING_INI_N64MOUSE "N64Mouse"
#define STRING_INI_BACKGROUNDINPUT "BackgroundInput"
#define STRING_INI_RAWDATA "RawData"
#define STRING_INI_PAKTYPE "PakType"
#define STRING_INI_REALN64RANGE "RealN64Range"
#define STRING_INI_RAPIDFIREENABLED "RapidFireEnabled"
#define STRING_INI_RAPIDFIRERATE "RapidFireRate"
#define STRING_INI_STICKRANGE "StickRange"
#define STRING_INI_MOUSEMOVEX "MouseMoveX"
#define STRING_INI_MOUSEMOVEY "MouseMoveY"
#define STRING_INI_AXISSET "AxisSet"
#define STRING_INI_KEYABSOLUTEX "KeyAbsoluteX"
#define STRING_INI_KEYABSOLUTEY "KeyAbsoluteY"
#define STRING_INI_PADDEADZONE "PadDeadZone"
#define STRING_INI_MOUSESENSX "MouseSensitivityX"
#define STRING_INI_MOUSESENSY "MouseSensitivityY"
#define STRING_INI_RUMBLETYPE "RumbleType"
#define STRING_INI_RUMBLESTRENGTH "RumbleStrength"
#define STRING_INI_VISUALRUMBLE "VisualRumble"
#define STRING_INI_FFDEVICEGUID "FFDeviceGUID"
#define STRING_INI_MEMPAKFILE "MemPakFile"
#define STRING_INI_GBROMFILE "GBRomFile"
#define STRING_INI_GBROMSAVE "GBRomSave"
#define STRING_INI_DINPUTGUID "DInputGUID"
#define STRING_INI_BUTTON "Button"
#define STRING_INI_MODIFIER "Modifier"
#define STRING_INI_DINPUTGUID "DInputGUID"
#define STRING_INI_BUTTON "Button"
#define STRING_INI_MODIFIER "Modifier"
// The following are not found in INI files; only profile and shortcuts files
#define STRING_PROFILEVERSION22 "Controller Profile 2.2"
#define STRING_PROFILEVERSION STRING_PROFILEVERSION22
#define STRING_PROFILEVERSION STRING_PROFILEVERSION22
#define STRING_INI_FFDEVICENAME "FFDeviceName"
#define STRING_INI_FFDEVICENR "FFDeviceNr"
#define STRING_INI_DINPUTNAME "DInputName"
#define STRING_INI_DINPUTNR "DInputNr"
#define STRING_INI_FFDEVICENAME "FFDeviceName"
#define STRING_INI_FFDEVICENR "FFDeviceNr"
#define STRING_INI_DINPUTNAME "DInputName"
#define STRING_INI_DINPUTNR "DInputNr"
// the following are hashes for the string values above
@ -197,40 +197,40 @@ unsigned long djbHash(const char *str);
// If any of the following values conflict with djbHash return values (such as a blank string), there will be problems!
// nothing
#define PL_NOHIT 0
// [Category]
#define PL_CATEGORY 1
// @STRING_PROFILEVERSION
#define PL_VERSIONSTRING 10
#define PL_NOHIT 0
// [Category]
#define PL_CATEGORY 1
// @STRING_PROFILEVERSION
#define PL_VERSIONSTRING 10
// resets the static vars in ProcessKey
#define PL_RESET 200
// resets the static vars in ProcessKey
#define PL_RESET 200
#define DIRECTORY_MEMPAK 0
#define DIRECTORY_GBROMS 1
#define DIRECTORY_GBSAVES 2
#define DIRECTORY_CONFIG 252
#define DIRECTORY_LOG 253
#define DIRECTORY_DLL 254
#define DIRECTORY_APPLICATION 255
#define DIRECTORY_INVALID 256
#define DIRECTORY_MEMPAK 0
#define DIRECTORY_GBROMS 1
#define DIRECTORY_GBSAVES 2
#define DIRECTORY_CONFIG 252
#define DIRECTORY_LOG 253
#define DIRECTORY_DLL 254
#define DIRECTORY_APPLICATION 255
#define DIRECTORY_INVALID 256
#define FILIST_MEM 1
#define FILIST_TRANSFER 2
#define FILIST_MEM 1
#define FILIST_TRANSFER 2
#define BF_LOAD false
#define BF_SAVE true
#define BF_LOAD false
#define BF_SAVE true
#define BF_MEMPAK 0
#define BF_GBROM 1
#define BF_GBSAVE 2
#define BF_PROFILE 3
#define BF_NOTE 4
#define BF_SHORTCUTS 5
#define BF_MEMPAK 0
#define BF_GBROM 1
#define BF_GBSAVE 2
#define BF_PROFILE 3
#define BF_NOTE 4
#define BF_SHORTCUTS 5
// 32 hex characters, 4 hyphens, 2 end braces
#define GUID_STRINGLENGTH 32+4+2
// 32 hex characters, 4 hyphens, 2 end braces
#define GUID_STRINGLENGTH 32+4+2
#endif // #ifndef _FILEACCESS_H_

File diff suppressed because it is too large Load Diff

View File

@ -21,27 +21,27 @@ typedef struct _gbCartRTC {
typedef struct _GBCART
{
unsigned int iCurrentRomBankNo;
unsigned int iCurrentRamBankNo;
int iCartType;
bool bHasRam;
bool bHasBattery;
bool bHasTimer;
bool bHasRumble;
bool bRamEnableState;
bool bMBC1RAMbanking; // if false, use 2 magic bits for Most Significant Bits of ROM banking (default); if true, use the 2 magic bits for RAM banking
unsigned int iNumRomBanks;
unsigned int iNumRamBanks;
BYTE TimerData[5];
BYTE LatchedTimerData[5];
time_t timerLastUpdate;
bool TimerDataLatched;
HANDLE hRomFile; // a file mapping handle
HANDLE hRamFile; // a file mapping handle, must be NULL if malloc'd ram is being used instead of a valid memory mapped file
const unsigned char * RomData; // max [0x200 * 0x4000];
LPBYTE RamData; // max [0x10 * 0x2000];
bool (*ptrfnReadCart)(_GBCART * Cart, WORD dwAddress, BYTE *Data); // ReadCart handler
bool (*ptrfnWriteCart)(_GBCART * Cart, WORD dwAddress, BYTE *Data); // WriteCart handler
unsigned int iCurrentRomBankNo;
unsigned int iCurrentRamBankNo;
int iCartType;
bool bHasRam;
bool bHasBattery;
bool bHasTimer;
bool bHasRumble;
bool bRamEnableState;
bool bMBC1RAMbanking; // if false, use 2 magic bits for Most Significant Bits of ROM banking (default); if true, use the 2 magic bits for RAM banking
unsigned int iNumRomBanks;
unsigned int iNumRamBanks;
BYTE TimerData[5];
BYTE LatchedTimerData[5];
time_t timerLastUpdate;
bool TimerDataLatched;
HANDLE hRomFile; // a file mapping handle
HANDLE hRamFile; // a file mapping handle, must be NULL if malloc'd ram is being used instead of a valid memory mapped file
const unsigned char * RomData; // max [0x200 * 0x4000];
LPBYTE RamData; // max [0x10 * 0x2000];
bool (*ptrfnReadCart)(_GBCART * Cart, WORD dwAddress, BYTE *Data); // ReadCart handler
bool (*ptrfnWriteCart)(_GBCART * Cart, WORD dwAddress, BYTE *Data); // WriteCart handler
} GBCART, *LPGBCART;
bool LoadCart(LPGBCART Cart, LPCTSTR RomFile, LPCTSTR RamFile, LPCTSTR TdfFile);
@ -65,15 +65,15 @@ iCartType values:
Note, that 7 and up are not implemented yet.
*/
#define GB_NORM 0x00
#define GB_MBC1 0x01
#define GB_MBC2 0x02
#define GB_MMMO1 0x03
#define GB_MBC3 0x04
#define GB_MBC5 0x05
#define GB_CAMERA 0x06
#define GB_TAMA5 0x07
#define GB_HUC3 0x08
#define GB_HUC1 0x09
#define GB_NORM 0x00
#define GB_MBC1 0x01
#define GB_MBC2 0x02
#define GB_MMMO1 0x03
#define GB_MBC3 0x04
#define GB_MBC5 0x05
#define GB_CAMERA 0x06
#define GB_TAMA5 0x07
#define GB_HUC3 0x08
#define GB_HUC1 0x09
#endif // #ifndef _GBCART_H_

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
/*
N-Rage`s Dinput8 Plugin
N-Rage`s Dinput8 Plugin
(C) 2002, 2006 Norbert Wladyka
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
This program is free software; you can redistribute it and/or modify
@ -29,64 +29,64 @@ void SetModifier( CONTROLLER *pcController );
void SetControllerDefaults( CONTROLLER *pcController );
// application internal message
#define WM_USER_UPDATE WM_USER + 1
#define WM_USER_UPDATE WM_USER + 1
// application internal message
#define WM_USER_READVALUES WM_USER + 2
#define WM_USER_READVALUES WM_USER + 2
#define CONFIGTHRESHOLD 50
#define MOUSE_THRESHOLD 10
#define CONFIGTHRESHOLD 50
#define MOUSE_THRESHOLD 10
#define SC_SCANSUCCEED 0x01
#define SC_SCANESCAPE 0x10
#define SC_SCANSUCCEED 0x01
#define SC_SCANESCAPE 0x10
#define TIMER_BUTTON 1
#define TIMER_BUTTON 1
#define INTERVAL_BUTTON 20
#define INTERVAL_RUMBLETEST 20
#define INTERVAL_BUTTON 20
#define INTERVAL_RUMBLETEST 20
#define MPAK_FORMATABLE 0x01
#define MPAK_READABLE 0x02
#define MPAK_WRITEABLE 0x04
#define MPAK_FORMATABLE 0x01
#define MPAK_READABLE 0x02
#define MPAK_WRITEABLE 0x04
#define MPAK_OK 0x07
#define MPAK_INUSE 0x12
#define MPAK_WRONGSIZE 0x27
#define MPAK_DAMAGED 0x71
#define MPAK_ERROR 0x81
#define MPAK_NOSELECTION 0xF0
#define MPAK_OK 0x07
#define MPAK_INUSE 0x12
#define MPAK_WRONGSIZE 0x27
#define MPAK_DAMAGED 0x71
#define MPAK_ERROR 0x81
#define MPAK_NOSELECTION 0xF0
#define BSET_CONTROLS 1
#define BSET_SHORTCUTS 2
#define BSET_CONTROLS 1
#define BSET_SHORTCUTS 2
typedef struct _IFDEVICE
{
TCHAR szProductName[MAX_PATH+1];
BYTE bProductCounter;
TCHAR szProductName[MAX_PATH+1];
BYTE bProductCounter;
} IFDEVICE, *LPIFDEVICE;
typedef struct _INTERFACEVALUES
{
BYTE ChosenTab;
CONTROLLER Controllers[4];
IFDEVICE FFDevices[4];
SHORTCUTS Shortcuts;
LANGID Language;
bool fDisplayShortPop;
BYTE ChosenTab;
CONTROLLER Controllers[4];
IFDEVICE FFDevices[4];
SHORTCUTS Shortcuts;
LANGID Language;
bool fDisplayShortPop;
} INTERFACEVALUES, *LPINTERFACEVALUES;
#define TAB_CONTROLLER1 0
#define TAB_CONTROLLER2 1
#define TAB_CONTROLLER3 2
#define TAB_CONTROLLER4 3
#define TAB_SHORTCUTS 4
#define TAB_FOLDERS 5
#define TAB_CONTROLLER1 0
#define TAB_CONTROLLER2 1
#define TAB_CONTROLLER3 2
#define TAB_CONTROLLER4 3
#define TAB_SHORTCUTS 4
#define TAB_FOLDERS 5
#define TAB_CONTROLS 0
#define TAB_DEVICES 1
#define TAB_MODIFIERS 2
#define TAB_PAK 3
#define TAB_CONTROLS 0
#define TAB_DEVICES 1
#define TAB_MODIFIERS 2
#define TAB_PAK 3
extern INTERFACEVALUES *g_ivConfig;

View File

@ -1,9 +1,9 @@
/*
N-Rage`s Dinput8 Plugin
N-Rage`s Dinput8 Plugin
(C) 2002, 2006 Norbert Wladyka
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
This program is free software; you can redistribute it and/or modify
@ -41,29 +41,29 @@ BOOL CALLBACK EnumLangProc(HANDLE hModule, LPCTSTR lpszType, LPCTSTR lpszName, W
// "If it ain't broke, don't fix it."
// Loads the satellite DLL specified for the language DesiredLanguage
HMODULE LoadLanguageDLL(LANGID DesiredLanguage)
HMODULE LoadLanguageDLL(LANGID DesiredLanguage)
{
TCHAR SatellitePath[MAX_PATH];
HMODULE hDLL;
TCHAR SatellitePath[MAX_PATH];
HMODULE hDLL;
// First try to load the library with the fully specified language
_stprintf(SatellitePath, _T("NRage-Language-%u.dll"), DesiredLanguage);
hDLL = LoadLibraryEx(SatellitePath, 0, 0);
if( hDLL )
return hDLL;
else
{ // try the primary language ID
DesiredLanguage = PRIMARYLANGID(DesiredLanguage);
_stprintf(SatellitePath, _T("NRage-Language-%u.dll"), DesiredLanguage);
hDLL = LoadLibraryEx(SatellitePath, 0, 0);
if( hDLL )
return hDLL;
else
{
DebugWrite(_T("Couldn't load library: %s\n"), SatellitePath);
return NULL;
}
}
// First try to load the library with the fully specified language
_stprintf(SatellitePath, _T("NRage-Language-%u.dll"), DesiredLanguage);
hDLL = LoadLibraryEx(SatellitePath, 0, 0);
if( hDLL )
return hDLL;
else
{ // try the primary language ID
DesiredLanguage = PRIMARYLANGID(DesiredLanguage);
_stprintf(SatellitePath, _T("NRage-Language-%u.dll"), DesiredLanguage);
hDLL = LoadLibraryEx(SatellitePath, 0, 0);
if( hDLL )
return hDLL;
else
{
DebugWrite(_T("Couldn't load library: %s\n"), SatellitePath);
return NULL;
}
}
}
// The following functions contain code to
@ -71,7 +71,7 @@ HMODULE LoadLanguageDLL(LANGID DesiredLanguage)
// user interface should be displayed
BOOL CALLBACK EnumLangProc(HANDLE hModule, LPCTSTR lpszType, LPCTSTR lpszName,
WORD wIDLanguage, LONG_PTR lParam)
WORD wIDLanguage, LONG_PTR lParam)
{
PLANGINFO LangInfo;
@ -113,7 +113,7 @@ BOOL IsHongKongVersion()
{
HMODULE hMod;
BOOL bRet=FALSE;
typedef BOOL (WINAPI *IMMRELEASECONTEXT)(HWND,HIMC);
typedef BOOL (WINAPI *IMMRELEASECONTEXT)(HWND,HIMC);
IMMRELEASECONTEXT pImmReleaseContext;
hMod = LoadLibrary(_T("imm32.dll"));
@ -133,65 +133,65 @@ BOOL IsHongKongVersion()
LANGID DetectLanguage()
{
#define MAX_KEY_BUFFER 80
#define MAX_KEY_BUFFER 80
OSVERSIONINFO VersionInfo;
LANGID uiLangID = 0;
HKEY hKey;
DWORD Type, BuffLen = MAX_KEY_BUFFER;
TCHAR LangKeyValue[MAX_KEY_BUFFER];
OSVERSIONINFO VersionInfo;
LANGID uiLangID = 0;
HKEY hKey;
DWORD Type, BuffLen = MAX_KEY_BUFFER;
TCHAR LangKeyValue[MAX_KEY_BUFFER];
VersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
if( !GetVersionEx(&VersionInfo) )
return(0);
VersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
if( !GetVersionEx(&VersionInfo) )
return(0);
switch( VersionInfo.dwPlatformId )
{
// On Windows NT, Windows 2000 or higher
case VER_PLATFORM_WIN32_NT:
if( VersionInfo.dwMajorVersion >= 5) // Windows 2000 or higher
{
// we need to dynamically link the GetUserDefaultUILanguage func
HMODULE hmKernDLL = LoadLibrary(_T("kernel32.dll"));
if (hmKernDLL)
{
LANGID (*fpGetLang)() = NULL;
fpGetLang = (LANGID(*)(void))GetProcAddress(hmKernDLL, "GetUserDefaultUILanguage");
uiLangID = fpGetLang();
} // and if we couldn't load kernel32.dll, just fall back to default language
}
else
{ // for NT4 check the language of ntdll.dll
uiLangID = GetNTDLLNativeLangID();
if (uiLangID == 1033)
{ // special processing for Honkong SAR version of NT4
if (IsHongKongVersion())
{
uiLangID = 3076;
}
}
}
break;
// On Windows 95, Windows 98 or Windows ME
case VER_PLATFORM_WIN32_WINDOWS:
// Open the registry key for the UI language
if( RegOpenKeyEx(HKEY_CURRENT_USER,_T("Default\\Control Panel\\Desktop\\ResourceLocale"), 0,
KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS )
{
// Get the type of the default key
if( RegQueryValueEx(hKey, NULL, NULL, &Type, NULL, NULL) == ERROR_SUCCESS
&& Type == REG_SZ )
{ // Read the key value
if( RegQueryValueEx(hKey, NULL, NULL, &Type, (LPBYTE)LangKeyValue, &BuffLen)
== ERROR_SUCCESS )
{
uiLangID = _ttoi(LangKeyValue);
}
}
RegCloseKey(hKey);
}
break;
}
switch( VersionInfo.dwPlatformId )
{
// On Windows NT, Windows 2000 or higher
case VER_PLATFORM_WIN32_NT:
if( VersionInfo.dwMajorVersion >= 5) // Windows 2000 or higher
{
// we need to dynamically link the GetUserDefaultUILanguage func
HMODULE hmKernDLL = LoadLibrary(_T("kernel32.dll"));
if (hmKernDLL)
{
LANGID (*fpGetLang)() = NULL;
fpGetLang = (LANGID(*)(void))GetProcAddress(hmKernDLL, "GetUserDefaultUILanguage");
uiLangID = fpGetLang();
} // and if we couldn't load kernel32.dll, just fall back to default language
}
else
{ // for NT4 check the language of ntdll.dll
uiLangID = GetNTDLLNativeLangID();
if (uiLangID == 1033)
{ // special processing for Honkong SAR version of NT4
if (IsHongKongVersion())
{
uiLangID = 3076;
}
}
}
break;
// On Windows 95, Windows 98 or Windows ME
case VER_PLATFORM_WIN32_WINDOWS:
// Open the registry key for the UI language
if( RegOpenKeyEx(HKEY_CURRENT_USER,_T("Default\\Control Panel\\Desktop\\ResourceLocale"), 0,
KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS )
{
// Get the type of the default key
if( RegQueryValueEx(hKey, NULL, NULL, &Type, NULL, NULL) == ERROR_SUCCESS
&& Type == REG_SZ )
{ // Read the key value
if( RegQueryValueEx(hKey, NULL, NULL, &Type, (LPBYTE)LangKeyValue, &BuffLen)
== ERROR_SUCCESS )
{
uiLangID = _ttoi(LangKeyValue);
}
}
RegCloseKey(hKey);
}
break;
}
if (uiLangID == 0)
{

View File

@ -1,9 +1,9 @@
/*
N-Rage`s Dinput8 Plugin
N-Rage`s Dinput8 Plugin
(C) 2002, 2006 Norbert Wladyka
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
This program is free software; you can redistribute it and/or modify
@ -30,15 +30,15 @@
typedef struct LANGINFO_DEF
{
int Count;
LANGID LangID;
int Count;
LANGID LangID;
} LANGINFO;
typedef LANGINFO *PLANGINFO;
// only export these functions if UNICODE support is enabled
#ifdef _UNICODE
LANGID DetectLanguage();
HMODULE LoadLanguageDLL(LANGID DesiredLanguage);
HMODULE LoadLanguageDLL(LANGID DesiredLanguage);
#endif // #ifdef _UNICODE
#endif // #ifndef _NRINTERNATIONAL_

File diff suppressed because it is too large Load Diff

View File

@ -1,24 +1,24 @@
/*
N-Rage`s Dinput8 Plugin
(C) 2002, 2006 Norbert Wladyka
N-Rage`s Dinput8 Plugin
(C) 2002, 2006 Norbert Wladyka
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _NRAGEPLUGIN_
#define _NRAGEPLUGIN_
@ -30,38 +30,38 @@
/////////////////////////////////////////////////////////////////////////////////
//General Plugin
#define TIMER_MESSAGEWINDOW 123
#define TIMER_MESSAGEWINDOW 123
// maximum number of devices other than SysMouse
#define MAX_DEVICES 32
#define MAX_DEVICES 32
// maximum number of modifiers
#define MAX_MODIFIERS 256
#define MAX_MODIFIERS 256
#define DEFAULT_STICKRANGE 66
#define DEFAULT_DEADZONE 5
#define DEFAULT_RUMBLETYP RUMBLE_EFF1
#define DEFAULT_RUMBLESTRENGTH 80
#define DEFAULT_MOUSESENSIVITY 100
#define DEFAULT_PAKTYPE PAK_MEM
#define DEFAULT_MOUSEMOVE MM_BUFF
#define DEFAULT_STICKRANGE 66
#define DEFAULT_DEADZONE 5
#define DEFAULT_RUMBLETYP RUMBLE_EFF1
#define DEFAULT_RUMBLESTRENGTH 80
#define DEFAULT_MOUSESENSIVITY 100
#define DEFAULT_PAKTYPE PAK_MEM
#define DEFAULT_MOUSEMOVE MM_BUFF
#define PAK_NONE 0
#define PAK_MEM 1
#define PAK_RUMBLE 2
#define PAK_TRANSFER 3
#define PAK_VOICE 4
#define PAK_ADAPTOID 7
#define PAK_NONE 0
#define PAK_MEM 1
#define PAK_RUMBLE 2
#define PAK_TRANSFER 3
#define PAK_VOICE 4
#define PAK_ADAPTOID 7
// just used to display text in GUI
#define PAK_NONRAW 16
#define PAK_NONRAW 16
typedef struct _EMULATOR_INFO
{
bool fInitialisedPlugin;
HWND hMainWindow;
HINSTANCE hinst;
LANGID Language;
bool fDisplayShortPop; // do we display shortcut message popups?
bool fInitialisedPlugin;
HWND hMainWindow;
HINSTANCE hinst;
LANGID Language;
bool fDisplayShortPop; // do we display shortcut message popups?
/*
* 2015.11.09 cxd4
@ -71,152 +71,152 @@ typedef struct _EMULATOR_INFO
*/
CONTROL * controllers;
// BOOL MemoryBswaped; // If this is set to TRUE, then the memory has been pre
// bswap on a dword (32 bits) boundry, only effects header.
// eg. the first 8 bytes are stored like this:
// 4 3 2 1 8 7 6 5
// BYTE * HEADER; // This is the rom header (first 40h bytes of the rom)
// BOOL MemoryBswaped; // If this is set to TRUE, then the memory has been pre
// bswap on a dword (32 bits) boundry, only effects header.
// eg. the first 8 bytes are stored like this:
// 4 3 2 1 8 7 6 5
// BYTE * HEADER; // This is the rom header (first 40h bytes of the rom)
} EMULATOR_INFO, *LPEMULATOR_INFO;
typedef struct _DEVICE
{
LPDIRECTINPUTDEVICE8 didHandle;
TCHAR szProductName[MAX_PATH];
BYTE bProductCounter;
GUID guidInstance;
DWORD dwDevType; // can be DI8DEVTYPE_KEYBOARD, DI8DEVTYPE_MOUSE, etc
BYTE bEffType; // What rumble effects does this device support?
union INPUTSTATE // the last polled data from this device
{
DIJOYSTATE joyState;
DIMOUSESTATE2 mouseState;
BYTE rgbButtons[256]; // keyboard state
} stateAs;
LPDIRECTINPUTDEVICE8 didHandle;
TCHAR szProductName[MAX_PATH];
BYTE bProductCounter;
GUID guidInstance;
DWORD dwDevType; // can be DI8DEVTYPE_KEYBOARD, DI8DEVTYPE_MOUSE, etc
BYTE bEffType; // What rumble effects does this device support?
union INPUTSTATE // the last polled data from this device
{
DIJOYSTATE joyState;
DIMOUSESTATE2 mouseState;
BYTE rgbButtons[256]; // keyboard state
} stateAs;
} DEVICE, *LPDEVICE;
typedef struct _BUTTON
{
bool fPrevPressed; // Was this button pressed last time we checked? (not to be saved in config)
BYTE bOffset; // Offset in the DirectInput data structure
BYTE bAxisID; // Tells which range of the Axe/POV is important (see AI_AXE_P, AI_POV_UP, etc)
BYTE bBtnType; // Type of device/button: Keyboard key, Joystick axis, Joystick button, Mouse axis, etc
LPDEVICE parentDevice; // pointer to the DEVICE this assignment came from
bool fPrevPressed; // Was this button pressed last time we checked? (not to be saved in config)
BYTE bOffset; // Offset in the DirectInput data structure
BYTE bAxisID; // Tells which range of the Axe/POV is important (see AI_AXE_P, AI_POV_UP, etc)
BYTE bBtnType; // Type of device/button: Keyboard key, Joystick axis, Joystick button, Mouse axis, etc
LPDEVICE parentDevice; // pointer to the DEVICE this assignment came from
} BUTTON, *LPBUTTON;
// Modifiers are a feature built into NRage. Emulator turbo buttons, macros, stuff like that.
typedef struct _MODIFIER
{
BUTTON btnButton; // button to associate with
BYTE bModType; // Type of modifier (None, Movement, Macro, Config)
BOOL fToggle; // false if you have to hold the button down to activate, true if the modifier toggles on button press
BOOL fStatus; // if true, control defaults to ACTIVE, and deactivates on button press
DWORD32 dwSpecific; // will be cast to MODSPEC_MOVE, MODSPEC_MACRO, or MODSPEC_CONFIG
BUTTON btnButton; // button to associate with
BYTE bModType; // Type of modifier (None, Movement, Macro, Config)
BOOL fToggle; // false if you have to hold the button down to activate, true if the modifier toggles on button press
BOOL fStatus; // if true, control defaults to ACTIVE, and deactivates on button press
DWORD32 dwSpecific; // will be cast to MODSPEC_MOVE, MODSPEC_MACRO, or MODSPEC_CONFIG
} MODIFIER, *LPMODIFIER;
// bModType (modifiers)
#define MDT_NONE 0
#define MDT_MOVE 1
#define MDT_MACRO 2
#define MDT_CONFIG 3
#define MDT_NONE 0
#define MDT_MOVE 1
#define MDT_MACRO 2
#define MDT_CONFIG 3
// buffered
#define MM_BUFF 0
#define MM_BUFF 0
// absolute
#define MM_ABS 1
#define MM_ABS 1
// deadpan
#define MM_DEAD 2
#define MM_DEAD 2
// Number of analog axes. Standard N64 controller has just 2: X and Y joystick.
#define PF_AXESETS 2
#define PF_AXESETS 2
typedef struct _CONTROLLER // AN N64 CONTROLLER
typedef struct _CONTROLLER // AN N64 CONTROLLER
{
unsigned fPlugged; // is the controller "plugged" (i.e. does the emulator see a controller on this port?)
unsigned fXInput; // is the controller an xInput device?
unsigned fN64Mouse; // is the controller a N64 Mouse (Relative)?
unsigned fRawData; // are we using RAW mode for this controller?
unsigned fIsAdaptoid; // is it an adaptoid?
unsigned fPlugged; // is the controller "plugged" (i.e. does the emulator see a controller on this port?)
unsigned fXInput; // is the controller an xInput device?
unsigned fN64Mouse; // is the controller a N64 Mouse (Relative)?
unsigned fRawData; // are we using RAW mode for this controller?
unsigned fIsAdaptoid; // is it an adaptoid?
unsigned fKeyboard; // does it use a keyboard?
unsigned fMouse; // does it use a mouse?
unsigned fGamePad; // does it use a gamepad/joystick?
unsigned fKeyboard; // does it use a keyboard?
unsigned fMouse; // does it use a mouse?
unsigned fGamePad; // does it use a gamepad/joystick?
unsigned fRealN64Range; // does it have the "Real N64 Range" flag set?
unsigned bAxisSet; // which set of axes are we using? (Control 1, Control 2)
unsigned bMouseMoveX; // does it use buffered/absolute mouse for X? MM_BUFF, MM_ABS, MM_DEAD
unsigned bMouseMoveY; // does it use buffered/absolute mouse for Y?
unsigned fKeyAbsoluteX; // does it use absolute key for X?
unsigned fKeyAbsoluteY; // does it use absolute key for Y?
unsigned fRealN64Range; // does it have the "Real N64 Range" flag set?
unsigned bAxisSet; // which set of axes are we using? (Control 1, Control 2)
unsigned bMouseMoveX; // does it use buffered/absolute mouse for X? MM_BUFF, MM_ABS, MM_DEAD
unsigned bMouseMoveY; // does it use buffered/absolute mouse for Y?
unsigned fKeyAbsoluteX; // does it use absolute key for X?
unsigned fKeyAbsoluteY; // does it use absolute key for Y?
unsigned fPakInitialized; // Has our pak been initialized? Used to make sure we don't try to write to a mempak that doesn't point to anything.
unsigned fPakCRCError; // The ROM sends CRC data when it tries to write to a mempak. Is the CRC incorrect? Usually indicates a bad ROM.
unsigned PakType; // what type of controller pak? mempak? rumble? transfer? etc
unsigned fVisualRumble; // is visual rumble enabled for this controller?
unsigned fPakInitialized; // Has our pak been initialized? Used to make sure we don't try to write to a mempak that doesn't point to anything.
unsigned fPakCRCError; // The ROM sends CRC data when it tries to write to a mempak. Is the CRC incorrect? Usually indicates a bad ROM.
unsigned PakType; // what type of controller pak? mempak? rumble? transfer? etc
unsigned fVisualRumble; // is visual rumble enabled for this controller?
unsigned bBackgroundInput; // allow input while main window isn't focused?
unsigned bBackgroundInput; // allow input while main window isn't focused?
BYTE bRumbleTyp; // what type of rumble effect? none, constant, ramp, or direct?
BYTE bRumbleTyp; // what type of rumble effect? none, constant, ramp, or direct?
GUID guidFFDevice; // GUID of the device that rumble gets sent to
GUID guidFFDevice; // GUID of the device that rumble gets sent to
BYTE bStickRange; // our "range modifier".
BYTE bStickRange; // our "range modifier".
long wAxeBuffer[4]; // makes pseudo-relative Movement possible through keyboard or buttons
// also acts as a mouse buffer
long wAxeBuffer[4]; // makes pseudo-relative Movement possible through keyboard or buttons
// also acts as a mouse buffer
WORD wMouseSensitivityX; // set per N64 controller, that's OK
WORD wMouseSensitivityY;
BYTE bPadDeadZone; // our manual dead zone, set per N64 controller
BYTE bRumbleStrength; // set per N64 controller
unsigned short nModifiers; // number of modifiers
WORD wMouseSensitivityX; // set per N64 controller, that's OK
WORD wMouseSensitivityY;
BYTE bPadDeadZone; // our manual dead zone, set per N64 controller
BYTE bRumbleStrength; // set per N64 controller
unsigned short nModifiers; // number of modifiers
bool bRapidFireEnabled;
BYTE bRapidFireRate;
BYTE bRapidFireCounter;
bool bRapidFireEnabled;
BYTE bRapidFireRate;
BYTE bRapidFireCounter;
TCHAR szMempakFile[MAX_PATH + 1]; // MemPak-FileName
TCHAR szTransferRom[MAX_PATH + 1]; // GameBoyRom-Filename
TCHAR szTransferSave[MAX_PATH + 1]; // GameBoyEEPRom-Filename
TCHAR szMempakFile[MAX_PATH + 1]; // MemPak-FileName
TCHAR szTransferRom[MAX_PATH + 1]; // GameBoyRom-Filename
TCHAR szTransferSave[MAX_PATH + 1]; // GameBoyEEPRom-Filename
BUTTON aButton[14 + PF_AXESETS * 4]; // Ten buttons, 4 d-pad directions times two (for Config 1 and Config 2)
BUTTON aButton[14 + PF_AXESETS * 4]; // Ten buttons, 4 d-pad directions times two (for Config 1 and Config 2)
MODIFIER *pModifiers; // Array of Modifiers
MODIFIER *pModifiers; // Array of Modifiers
void *pPakData; // Pointer to Pak Data (specific): see PakIO.h
// pPakData->bPakType will always be a BYTE indicating what the current pak type is
void *pPakData; // Pointer to Pak Data (specific): see PakIO.h
// pPakData->bPakType will always be a BYTE indicating what the current pak type is
XCONTROLLER xiController; // To handle an XInput enabled controller --tecnicors
XCONTROLLER xiController; // To handle an XInput enabled controller --tecnicors
} CONTROLLER, *LPCONTROLLER;
// This is the Index of WORD PROFILE.Button[X]
// Buttons:
#define PF_DPADR 0
#define PF_DPADL 1
#define PF_DPADD 2
#define PF_DPADU 3
#define PF_START 4
#define PF_TRIGGERZ 5
#define PF_BBUTTON 6
#define PF_ABUTTON 7
#define PF_DPADR 0
#define PF_DPADL 1
#define PF_DPADD 2
#define PF_DPADU 3
#define PF_START 4
#define PF_TRIGGERZ 5
#define PF_BBUTTON 6
#define PF_ABUTTON 7
#define PF_CBUTTONR 8
#define PF_CBUTTONL 9
#define PF_CBUTTONL 9
#define PF_CBUTTOND 10
#define PF_CBUTTONU 11
#define PF_TRIGGERR 12
#define PF_TRIGGERL 13
#define PF_TRIGGERR 12
#define PF_TRIGGERL 13
// Analog Stick
// cause you can assign Buttons to it, I need 4 of 'em
#define PF_APADR 14
#define PF_APADL 15
#define PF_APADD 16
#define PF_APADU 17
#define PF_APADR 14
#define PF_APADL 15
#define PF_APADD 16
#define PF_APADU 17
// second Set
// #define PF_APADR 18
// #define PF_APADL 19
// #define PF_APADD 20
// #define PF_APADU 21
// #define PF_APADR 18
// #define PF_APADL 19
// #define PF_APADD 20
// #define PF_APADU 21
// Data Format of DWORD Controller.Button:
//
@ -226,140 +226,140 @@ typedef struct _CONTROLLER // AN N64 CONTROLLER
// BYTE bOffset : Offset in the DirectInput data structure
// BYTE bBtnType : Determines the Device and general Type of Control
#define DT_UNASSIGNED 0
#define DT_UNASSIGNED 0
// Joystick
#define DT_JOYBUTTON 1
#define DT_JOYAXE 2
#define DT_JOYPOV 3
#define DT_JOYSLIDER 4
#define DT_JOYBUTTON 1
#define DT_JOYAXE 2
#define DT_JOYPOV 3
#define DT_JOYSLIDER 4
// Keyboard
#define DT_KEYBUTTON 5
#define DT_KEYBUTTON 5
// Mouse
#define DT_MOUSEBUTTON 6
#define DT_MOUSEAXE 7
#define DT_MOUSEBUTTON 6
#define DT_MOUSEAXE 7
// BYTE bAxisID : AxeIndentifier, Tells which range of the Axe/POV is important
// Positive Range of an Axe
#define AI_AXE_P 0
#define AI_AXE_P 0
// Negative Range
#define AI_AXE_N 1
#define AI_AXE_N 1
// Applies to POVs obviously
#define AI_POV_UP 0
#define AI_POV_RIGHT 1
#define AI_POV_DOWN 2
#define AI_POV_LEFT 3
#define AI_POV_UP 0
#define AI_POV_RIGHT 1
#define AI_POV_DOWN 2
#define AI_POV_LEFT 3
// BYTE bOffset : Offset in the DirectInput data structure
typedef union _MODSPEC_MOVE
{
DWORD dwValue;
struct
{
short XModification;
short YModification;
};
DWORD dwValue;
struct
{
short XModification;
short YModification;
};
} MODSPEC_MOVE, *LPMODSPEC_MOVE;
typedef union _MODSPEC_MACRO
{
DWORD dwValue;
struct
{
unsigned short aButtons;
unsigned short aFlags;
};
struct
{
unsigned fDigitalRight : 1;
unsigned fDigitalLeft : 1;
unsigned fDigitalDown : 1;
unsigned fDigitalUp : 1;
unsigned fStart : 1;
unsigned fTriggerZ : 1;
unsigned fBButton : 1;
unsigned fAButton : 1;
unsigned fCRight : 1;
unsigned fCLeft : 1;
unsigned fCDown : 1;
unsigned fCUp : 1;
unsigned fTriggerR : 1;
unsigned fTriggerL : 1;
unsigned : 2;
DWORD dwValue;
struct
{
unsigned short aButtons;
unsigned short aFlags;
};
struct
{
unsigned fDigitalRight : 1;
unsigned fDigitalLeft : 1;
unsigned fDigitalDown : 1;
unsigned fDigitalUp : 1;
unsigned fStart : 1;
unsigned fTriggerZ : 1;
unsigned fBButton : 1;
unsigned fAButton : 1;
unsigned fCRight : 1;
unsigned fCLeft : 1;
unsigned fCDown : 1;
unsigned fCUp : 1;
unsigned fTriggerR : 1;
unsigned fTriggerL : 1;
unsigned : 2;
unsigned fAnalogRight : 1;
unsigned fAnalogLeft : 1;
unsigned fAnalogDown : 1;
unsigned fAnalogUp : 1;
unsigned fRapidFire : 1;
unsigned fRapidFireRate : 1;
unsigned fPrevFireState : 1;
unsigned fPrevFireState2 : 1;
};
unsigned fAnalogRight : 1;
unsigned fAnalogLeft : 1;
unsigned fAnalogDown : 1;
unsigned fAnalogUp : 1;
unsigned fRapidFire : 1;
unsigned fRapidFireRate : 1;
unsigned fPrevFireState : 1;
unsigned fPrevFireState2 : 1;
};
} MODSPEC_MACRO, *LPMODSPEC_MACRO;
typedef union _MODSPEC_CONFIG
{
DWORD dwValue;
struct
{
BYTE bAnalogStick;
BYTE bMouse;
BYTE bKeyboard;
};
struct
{
unsigned fChangeAnalogConfig : 1;
unsigned fAnalogStickMode : 7;
unsigned fChangeMouseXAxis : 1;
unsigned fChangeMouseYAxis : 1;
unsigned : 6;
unsigned fChangeKeyboardXAxis : 1;
unsigned fChangeKeyboardYAxis : 1;
unsigned : 6;
};
DWORD dwValue;
struct
{
BYTE bAnalogStick;
BYTE bMouse;
BYTE bKeyboard;
};
struct
{
unsigned fChangeAnalogConfig : 1;
unsigned fAnalogStickMode : 7;
unsigned fChangeMouseXAxis : 1;
unsigned fChangeMouseYAxis : 1;
unsigned : 6;
unsigned fChangeKeyboardXAxis : 1;
unsigned fChangeKeyboardYAxis : 1;
unsigned : 6;
};
} MODSPEC_CONFIG, *LPMODSPEC_CONFIG;
#define SC_NOPAK 0
#define SC_MEMPAK 1
#define SC_RUMBPAK 2
#define SC_TRANSPAK 3
#define SC_VOICEPAK 4
#define SC_ADAPTPAK 5
#define SC_SWMEMRUMB 6
#define SC_SWMEMADAPT 7
#define SC_NOPAK 0
#define SC_MEMPAK 1
#define SC_RUMBPAK 2
#define SC_TRANSPAK 3
#define SC_VOICEPAK 4
#define SC_ADAPTPAK 5
#define SC_SWMEMRUMB 6
#define SC_SWMEMADAPT 7
// total arraysize of aButtons in SHORTCUTSPL;
// make sure you update this if you change the list above
#define SC_TOTAL 8
#define SC_TOTAL 8
typedef struct _SHORTCUTSPL
{
BUTTON aButtons[SC_TOTAL];
//BUTTON NoPakButton;
//BUTTON MemPakButton;
//BUTTON RumblePakButton;
//BUTTON TransferPakButton;
//BUTTON VoicePakButton;
//BUTTON AdaptoidPakButton;
//BUTTON SwMemRumbleButton;
//BUTTON SwMemAdaptoidButton;
BUTTON aButtons[SC_TOTAL];
//BUTTON NoPakButton;
//BUTTON MemPakButton;
//BUTTON RumblePakButton;
//BUTTON TransferPakButton;
//BUTTON VoicePakButton;
//BUTTON AdaptoidPakButton;
//BUTTON SwMemRumbleButton;
//BUTTON SwMemAdaptoidButton;
} SHORTCUTSPL, *LPSHORTCUTSPL;
typedef struct _SHORTCUTS
{
SHORTCUTSPL Player[4];
BUTTON bMouseLock;
SHORTCUTSPL Player[4];
BUTTON bMouseLock;
} SHORTCUTS, *LPSHORTCUTS;
typedef struct _MSHORTCUT {
int iControl;
int iShortcut;
} MSHORTCUT, *LPMSHORTCUT; // shortcut message
int iControl;
int iShortcut;
} MSHORTCUT, *LPMSHORTCUT; // shortcut message
#define CHECK_WHITESPACES( str ) ( str == '\r' || str == '\n' || str == '\t' )

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
/*
N-Rage`s Dinput8 Plugin
N-Rage`s Dinput8 Plugin
(C) 2002, 2006 Norbert Wladyka
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
This program is free software; you can redistribute it and/or modify
@ -54,65 +54,65 @@ void HextoTextA( const unsigned char * Data, LPSTR szText, const int nBytes );
//byte 2 = number of bytes to recieve
//byte 3 = Command Type
// get status
#define RD_GETSTATUS 0x00
// read button values
#define RD_READKEYS 0x01
// read from controllerpak
#define RD_READPAK 0x02
// write to controllerpack
#define RD_WRITEPAK 0x03
// reset controller
#define RD_RESETCONTROLLER 0xff
// read eeprom
#define RD_READEEPROM 0x04
// write eeprom
#define RD_WRITEEPROM 0x05
// get status
#define RD_GETSTATUS 0x00
// read button values
#define RD_READKEYS 0x01
// read from controllerpak
#define RD_READPAK 0x02
// write to controllerpack
#define RD_WRITEPAK 0x03
// reset controller
#define RD_RESETCONTROLLER 0xff
// read eeprom
#define RD_READEEPROM 0x04
// write eeprom
#define RD_WRITEEPROM 0x05
// Codes for retrieving status
// Codes for retrieving status
// 0x010300 - A1B2C3FF
//A1
// Default GamePad
#define RD_ABSOLUTE 0x01
#define RD_RELATIVE 0x02
// Default GamePad
#define RD_GAMEPAD 0x04
//A1
// Default GamePad
#define RD_ABSOLUTE 0x01
#define RD_RELATIVE 0x02
// Default GamePad
#define RD_GAMEPAD 0x04
//B2
#define RD_EEPROM 0x80
#define RD_NOEEPROM 0x00
//B2
#define RD_EEPROM 0x80
#define RD_NOEEPROM 0x00
//C3
// No Plugin in Controller
#define RD_NOPLUGIN 0x00
// Plugin in Controller (Mempack, RumblePack etc)
#define RD_PLUGIN 0x01
// Pak interface was uninitialized before the call
#define RD_NOTINITIALIZED 0x02
// Address of last Pak I/O was invalid
#define RD_ADDRCRCERR 0x04
// eeprom busy
#define RD_EEPROMBUSY 0x80
//C3
// No Plugin in Controller
#define RD_NOPLUGIN 0x00
// Plugin in Controller (Mempack, RumblePack etc)
#define RD_PLUGIN 0x01
// Pak interface was uninitialized before the call
#define RD_NOTINITIALIZED 0x02
// Address of last Pak I/O was invalid
#define RD_ADDRCRCERR 0x04
// eeprom busy
#define RD_EEPROMBUSY 0x80
// The Error values are as follows:
// 0x01ER00 - ........
//ER
// no error, operation successful.
#define RD_OK 0x00
// error, device not present for specified command.
#define RD_ERROR 0x80
// error, unable to send/recieve the number bytes for command type.
#define RD_WRONGSIZE 0x40
//ER
// no error, operation successful.
#define RD_OK 0x00
// error, device not present for specified command.
#define RD_ERROR 0x80
// error, unable to send/recieve the number bytes for command type.
#define RD_WRONGSIZE 0x40
// the address where rumble-commands are sent to
// this is really 0xC01B but our addressing code truncates the last several bits.
#define PAK_IO_RUMBLE 0xC000
// the address where rumble-commands are sent to
// this is really 0xC01B but our addressing code truncates the last several bits.
#define PAK_IO_RUMBLE 0xC000
// 32 KB mempak
#define PAK_MEM_SIZE 32*1024
#define PAK_MEM_DEXOFFSET 0x1040
// 32 KB mempak
#define PAK_MEM_SIZE 32*1024
#define PAK_MEM_DEXOFFSET 0x1040
// Pak Specific Data //
// First BYTE always determines current Paktype
@ -125,49 +125,49 @@ void HextoTextA( const unsigned char * Data, LPSTR szText, const int nBytes );
//PAK_MEM
typedef struct _MEMPAK
{
BYTE bPakType; // set to PAK_MEM
HANDLE hMemPakHandle; // a file mapping handle
bool fDexSave; // true if .n64 file, false if .mpk file
bool fReadonly; // set if we can't open mempak file in "write" mode
LPBYTE aMemPakData; //[PAK_MEM_SIZE];
BYTE aMemPakTemp[0x100]; // some extra on the top for "test" (temporary) data
BYTE bPakType; // set to PAK_MEM
HANDLE hMemPakHandle; // a file mapping handle
bool fDexSave; // true if .n64 file, false if .mpk file
bool fReadonly; // set if we can't open mempak file in "write" mode
LPBYTE aMemPakData; //[PAK_MEM_SIZE];
BYTE aMemPakTemp[0x100]; // some extra on the top for "test" (temporary) data
} MEMPAK, *LPMEMPAK;
//PAK_RUMBLE
typedef struct _RUMBLEPAK
{
BYTE bPakType;
// BYTE bRumbleTyp; // obsolete: use g_pcControllers[i].xyz instead --rabid
// BYTE bRumbleStrength;
// bool fVisualRumble;
bool fLastData; // true if the last data sent to block 0x8000 was nonzero
BYTE bPakType;
// BYTE bRumbleTyp; // obsolete: use g_pcControllers[i].xyz instead --rabid
// BYTE bRumbleStrength;
// bool fVisualRumble;
bool fLastData; // true if the last data sent to block 0x8000 was nonzero
} RUMBLEPAK, *LPRUMBLEPAK;
#include "GBCart.h"
//PAK_TRANSFER
typedef struct _TRANSFERPAK
{
BYTE bPakType;
int iCurrentBankNo;
int iCurrentAccessMode;
int iAccessModeChanged;
bool iEnableState;
bool bPakInserted;
GBCART gbCart;
BYTE bPakType;
int iCurrentBankNo;
int iCurrentAccessMode;
int iAccessModeChanged;
bool iEnableState;
bool bPakInserted;
GBCART gbCart;
} TRANSFERPAK, *LPTRANSFERPAK;
//PAK_VOICE
typedef struct _VOICEPAK //not supported
{
BYTE bPakType;
BYTE bPakType;
} VOICEPAK, *LPVOICEPAK;
//PAK_ADAPTOID
typedef struct _ADAPTOIDPAK
{
BYTE bPakType;
BYTE bIdentifier;
bool fRumblePak;
BYTE bPakType;
BYTE bIdentifier;
bool fRumblePak;
} ADAPTOIDPAK, *LPADAPTOIDPAK;
#endif // #ifndef _PAKIO_H_

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +1,14 @@
/*
XInput Controller support for N-Rage`s Dinput8 Plugin
XInput Controller support for N-Rage`s Dinput8 Plugin
(C) 2002, 2006 Norbert Wladyka - N-Rage`s Dinput8 Plugin
(C) 2009 Daniel Rehren - XInput Controller support
(C) 2009 Daniel Rehren - XInput Controller support
N-Rage`s Dinput8 Plugin:
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
N-Rage`s Dinput8 Plugin:
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
XInput Controller support:
Author's Email: rehren_007@hotmail.com
XInput Controller support:
Author's Email: rehren_007@hotmail.com
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -33,7 +33,7 @@
/* fixes undefined FILE, etc. type errors in MSVC 2010 build -- cxd4 */
#include <stdio.h>
#ifndef SAFE_RELEASE // when Windows Media Device M? is not present
#ifndef SAFE_RELEASE // when Windows Media Device M? is not present
#define SAFE_RELEASE(x) \
if(x != NULL) \
{ \
@ -51,10 +51,10 @@ BOOL IsXInputDevice( const GUID* pGuidProductFromDirectInput );
//END conde from ...
/*
Xinput header for NRage Plugin, by tecnicors.
Xinput header for NRage Plugin, by tecnicors.
XInput Controller is going to take over the N64 control that matches its
number, ie. first XInput controller is first N64 player, etc.
XInput Controller is going to take over the N64 control that matches its
number, ie. first XInput controller is first N64 player, etc.
*/
#include "commonIncludes.h"
@ -68,34 +68,34 @@ BOOL IsXInputDevice( const GUID* pGuidProductFromDirectInput );
//enums
namespace N64_BUTTONS
{
// Whith this we can asign buttons to the xinput struct
enum _N64_BUTTONS { A = 0x0080, B = 0x0040, Z = 0x0020, R = 0x1000, L = 0x2000, XAxis = 0x4000,
Start = 0x0010, DUp = 0x0008, DDown = 0x0004, DLeft = 0x0002, YAxis = 0x8000,
DRight = 0x0001, CUp = 0x0800, CDown = 0x0400, CLeft = 0x0200, CRight = 0x0100,
None = 0x0 };
// Whith this we can asign buttons to the xinput struct
enum _N64_BUTTONS { A = 0x0080, B = 0x0040, Z = 0x0020, R = 0x1000, L = 0x2000, XAxis = 0x4000,
Start = 0x0010, DUp = 0x0008, DDown = 0x0004, DLeft = 0x0002, YAxis = 0x8000,
DRight = 0x0001, CUp = 0x0800, CDown = 0x0400, CLeft = 0x0200, CRight = 0x0100,
None = 0x0 };
}
//structures
typedef struct _XCONTROLLER // XInput controller struct
typedef struct _XCONTROLLER // XInput controller struct
{
int nControl;
bool bConfigured;
int nControl;
bool bConfigured;
struct _N64_BUTTONS // For button configurations
{
int iA, iB;
int iStart;
int iL, iR, iZ;
int iXAxis, iYAxis;
int iDUp, iDDown, iDLeft, iDRight;
int iCUp, iCDown, iCLeft, iCRight;
}stButtons;
struct _N64_BUTTONS // For button configurations
{
int iA, iB;
int iStart;
int iL, iR, iZ;
int iXAxis, iYAxis;
int iDUp, iDDown, iDLeft, iDRight;
int iCUp, iCDown, iCLeft, iCRight;
}stButtons;
struct _XINPUT_ANALOGS // For analog configurations
{
int iLeftTrigger, iRightTrigger;
unsigned int iRXAxis, iRYAxis, iLXAxis, iLYAxis;
}stAnalogs;
struct _XINPUT_ANALOGS // For analog configurations
{
int iLeftTrigger, iRightTrigger;
unsigned int iRXAxis, iRYAxis, iLXAxis, iLYAxis;
}stAnalogs;
}XCONTROLLER;
@ -132,32 +132,32 @@ void StoreXInputControllerKeys( HWND hDlg, LPXCONTROLLER gController );
// Fills N64 button comobox with its buttons.
inline void FillN64ButtonComboBox( HWND hDlg, int ComboBox )
{
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "None" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "A" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "B" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "Z" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "L" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "R" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "Start" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "C-Up" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "C-Left" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "C-Down" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "C-Right" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "D-Up" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "D-Left" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "D-Down" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "D-Right" ));
SendDlgItemMessage( hDlg, ComboBox, CB_SETCURSEL, 0, ( LPARAM )0 );
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "None" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "A" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "B" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "Z" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "L" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "R" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "Start" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "C-Up" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "C-Left" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "C-Down" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "C-Right" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "D-Up" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "D-Left" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "D-Down" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "D-Right" ));
SendDlgItemMessage( hDlg, ComboBox, CB_SETCURSEL, 0, ( LPARAM )0 );
}
inline void FillN64AnalogComboBox( HWND hDlg, int ComboBox )
{
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "None" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "DPad" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "C Buttons" ));
if( ComboBox != IDC_XC_DPAD )
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "Analog Stick" ));
SendDlgItemMessage( hDlg, ComboBox, CB_SETCURSEL, 0, ( LPARAM )0);
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "None" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "DPad" ));
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "C Buttons" ));
if( ComboBox != IDC_XC_DPAD )
SendDlgItemMessage( hDlg, ComboBox, CB_ADDSTRING, 0, ( LPARAM )_T( "Analog Stick" ));
SendDlgItemMessage( hDlg, ComboBox, CB_SETCURSEL, 0, ( LPARAM )0);
}
// Save/Load Keys from own config file

View File

@ -1,9 +1,9 @@
/*
N-Rage`s Dinput8 Plugin
N-Rage`s Dinput8 Plugin
(C) 2002, 2006 Norbert Wladyka
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
This program is free software; you can redistribute it and/or modify
@ -40,7 +40,7 @@
#define P_malloc( size ) HeapAlloc( g_hHeap, 0, size )
#define P_free( memory ) HeapFree( g_hHeap, 0, memory )
#define P_realloc( memory, size ) \
( (memory == NULL) ? P_malloc(size) : HeapReAlloc( g_hHeap, 0, memory, size ) )
( (memory == NULL) ? P_malloc(size) : HeapReAlloc( g_hHeap, 0, memory, size ) )
#ifdef ARRAYSIZE
#undef ARRAYSIZE

View File

@ -2,7 +2,7 @@
// Microsoft Visual C++ generated include file.
// Used by NRagePluginV2.rc
//
#define IDC_STATIC -1
#define IDC_STATIC -1
#define IDC_STOREINDB 3
#define IDC_ERASEFROMDB 4
#define IDC_SAVEPROFILE 5

View File

@ -1,9 +1,9 @@
/*
N-Rage`s Dinput8 Plugin
N-Rage`s Dinput8 Plugin
(C) 2002, 2006 Norbert Wladyka
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
Author`s Email: norbert.wladyka@chello.at
Website: http://go.to/nrage
This program is free software; you can redistribute it and/or modify
@ -44,31 +44,31 @@
#endif // #ifdef __GNUC__
// Our default buffer size for TCHAR arrays (resources get loaded through here)
// MAKE SURE localized resources do not exceed this limit, or they will be cut off.
#define DEFAULT_BUFFER 256
// Our default buffer size for TCHAR arrays (resources get loaded through here)
// MAKE SURE localized resources do not exceed this limit, or they will be cut off.
#define DEFAULT_BUFFER 256
// use default settings for Release and Debugbuild
// use default settings for Release and Debugbuild
#define STDCONFIG
#ifndef STDCONFIG
// ----------------------------------------------------------------------------
// custom (nonstandard) settings here
// workaround for a Adaptoiddriver bug;
// basically if the Adaptoid USB driver doesn't respond that there's a pak, say there is one anyway
// workaround for a Adaptoiddriver bug;
// basically if the Adaptoid USB driver doesn't respond that there's a pak, say there is one anyway
#define ADAPTOIDPAK_RUMBLEFIX
// remove unimplemented Elements of the GUI
// remove unimplemented Elements of the GUI
// #define HIDEUNIMPLEMENTED
// check controllercommands for valid CRC
// check controllercommands for valid CRC
// #define MAKEADRESSCRCCHECK
// display Button for writing Shortcuts binary
// display Button for writing Shortcuts binary
// #define RAWPROFILEWRITE
// enable selection of Transferpak
// enable selection of Transferpak
// #define V_TRANSFERPAK
// enable selection of VoicePak
// enable selection of VoicePak
// #define V_VOICEPAK
// ----------------------------------------------------------------------------
@ -78,20 +78,20 @@
#ifdef _DEBUG
// ----------------------------------------------------------------------------
// Standard Debug Settings
// workaround for a Adaptoiddriver bug
// workaround for a Adaptoiddriver bug
#define ADAPTOIDPAK_RUMBLEFIX
// remove unimplemented Elements of the GUI
// remove unimplemented Elements of the GUI
// #define HIDEUNIMPLEMENTED
// check controllercommands for valid CRC
// check controllercommands for valid CRC
#define MAKEADRESSCRCCHECK
// display Button for writing Shortcuts binary
// display Button for writing Shortcuts binary
#define RAWPROFILEWRITE
// enable selection of Transferpak
// enable selection of Transferpak
#define V_TRANSFERPAK
// enable selection of VoicePak
// enable selection of VoicePak
#define V_VOICEPAK
// spits out loads of extra info for ControllerCommand and ReadController
@ -102,20 +102,20 @@
#else
// ----------------------------------------------------------------------------
// Standard Release Settings
// workaround for a Adaptoiddriver bug
// workaround for a Adaptoiddriver bug
#define ADAPTOIDPAK_RUMBLEFIX
// remove unimplemented Elements of the GUI
// remove unimplemented Elements of the GUI
#define HIDEUNIMPLEMENTED
// check controllercommands for valid CRC
// check controllercommands for valid CRC
// #define MAKEADRESSCRCCHECK
// display Button for writing Shortcuts binary
// display Button for writing Shortcuts binary
// #define RAWPROFILEWRITE
// enable selection of Transferpak
// enable selection of Transferpak
#define V_TRANSFERPAK
// enable selection of VoicePak
// enable selection of VoicePak
// #define V_VOICEPAK
// ----------------------------------------------------------------------------