nJoy: Preparation for fixing the digital pad and the analog triggers
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1928 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
c981d64ee4
commit
4a88f31ddb
|
@ -86,7 +86,9 @@ std::string GetLastErrorAsString()
|
||||||
This is done when Dolphin is started to determine which dlls are good, and before opening
|
This is done when Dolphin is started to determine which dlls are good, and before opening
|
||||||
the Config and Debugging windows from Plugin.cpp and before opening the dll for running
|
the Config and Debugging windows from Plugin.cpp and before opening the dll for running
|
||||||
the emulation in Video_...cpp in Core. Since this is fairly slow, TODO: think about
|
the emulation in Video_...cpp in Core. Since this is fairly slow, TODO: think about
|
||||||
implementing some sort of cache. */
|
implementing some sort of cache.
|
||||||
|
|
||||||
|
Called from: The Dolphin Core */
|
||||||
int DynamicLibrary::Load(const char* filename)
|
int DynamicLibrary::Load(const char* filename)
|
||||||
{
|
{
|
||||||
if (!filename || strlen(filename) == 0)
|
if (!filename || strlen(filename) == 0)
|
||||||
|
|
|
@ -319,8 +319,6 @@ THREAD_RETURN EmuThread(void *pArg)
|
||||||
Callback_PeekMessages = VideoInitialize.pPeekMessages;
|
Callback_PeekMessages = VideoInitialize.pPeekMessages;
|
||||||
g_pUpdateFPSDisplay = VideoInitialize.pUpdateFPSDisplay;
|
g_pUpdateFPSDisplay = VideoInitialize.pUpdateFPSDisplay;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Load and init DSPPlugin
|
// Load and init DSPPlugin
|
||||||
DSPInitialize dspInit;
|
DSPInitialize dspInit;
|
||||||
dspInit.hWnd = g_pWindowHandle;
|
dspInit.hWnd = g_pWindowHandle;
|
||||||
|
@ -427,6 +425,8 @@ THREAD_RETURN EmuThread(void *pArg)
|
||||||
// Returns after game exited
|
// Returns after game exited
|
||||||
cpuThread = NULL;
|
cpuThread = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The hardware is uninitialized
|
||||||
g_bHwInit = false;
|
g_bHwInit = false;
|
||||||
|
|
||||||
Plugins.ShutdownPlugins();
|
Plugins.ShutdownPlugins();
|
||||||
|
|
|
@ -54,12 +54,12 @@ EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolphinWX", "Core\DolphinWX\DolphinWX.vcproj", "{A72606EF-C5C1-4954-90AD-F0F93A8D97D9}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolphinWX", "Core\DolphinWX\DolphinWX.vcproj", "{A72606EF-C5C1-4954-90AD-F0F93A8D97D9}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{48AD7E0A-25B1-4974-A1E3-03F8C438D34F} = {48AD7E0A-25B1-4974-A1E3-03F8C438D34F}
|
{48AD7E0A-25B1-4974-A1E3-03F8C438D34F} = {48AD7E0A-25B1-4974-A1E3-03F8C438D34F}
|
||||||
{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160} = {CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}
|
|
||||||
{0318BA30-EF48-441A-9E10-DC85EFAE39F0} = {0318BA30-EF48-441A-9E10-DC85EFAE39F0}
|
{0318BA30-EF48-441A-9E10-DC85EFAE39F0} = {0318BA30-EF48-441A-9E10-DC85EFAE39F0}
|
||||||
{71B16F46-0B00-4EDA-B253-D6D9D03A215C} = {71B16F46-0B00-4EDA-B253-D6D9D03A215C}
|
{71B16F46-0B00-4EDA-B253-D6D9D03A215C} = {71B16F46-0B00-4EDA-B253-D6D9D03A215C}
|
||||||
{33546D62-7F34-4EA6-A88E-D538B36E16BF} = {33546D62-7F34-4EA6-A88E-D538B36E16BF}
|
{33546D62-7F34-4EA6-A88E-D538B36E16BF} = {33546D62-7F34-4EA6-A88E-D538B36E16BF}
|
||||||
{3E03C179-8251-46E4-81F4-466F114BAC63} = {3E03C179-8251-46E4-81F4-466F114BAC63}
|
{3E03C179-8251-46E4-81F4-466F114BAC63} = {3E03C179-8251-46E4-81F4-466F114BAC63}
|
||||||
{95CCAABC-7062-47C4-B8C1-A064DD5F16FF} = {95CCAABC-7062-47C4-B8C1-A064DD5F16FF}
|
{95CCAABC-7062-47C4-B8C1-A064DD5F16FF} = {95CCAABC-7062-47C4-B8C1-A064DD5F16FF}
|
||||||
|
{521498BE-6089-4780-8223-E67C22F4E068} = {521498BE-6089-4780-8223-E67C22F4E068}
|
||||||
{29C2ABC1-ADA5-42CD-A5FC-96022D52A510} = {29C2ABC1-ADA5-42CD-A5FC-96022D52A510}
|
{29C2ABC1-ADA5-42CD-A5FC-96022D52A510} = {29C2ABC1-ADA5-42CD-A5FC-96022D52A510}
|
||||||
{4D3CD4C5-412B-4B49-9B1B-A68A2A129C77} = {4D3CD4C5-412B-4B49-9B1B-A68A2A129C77}
|
{4D3CD4C5-412B-4B49-9B1B-A68A2A129C77} = {4D3CD4C5-412B-4B49-9B1B-A68A2A129C77}
|
||||||
{F0B874CB-4476-4199-9315-8343D05AE684} = {F0B874CB-4476-4199-9315-8343D05AE684}
|
{F0B874CB-4476-4199-9315-8343D05AE684} = {F0B874CB-4476-4199-9315-8343D05AE684}
|
||||||
|
@ -155,6 +155,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Main", "..\Branches\MusicMo
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InputCommon", "Core\InputCommon\InputCommon.vcproj", "{C7E5D50A-2916-464B-86A7-E10B3CC88ADA}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InputCommon", "Core\InputCommon\InputCommon.vcproj", "{C7E5D50A-2916-464B-86A7-E10B3CC88ADA}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL", "..\Externals\SDL\SDL\SDL.vcproj", "{B6C1A81F-99A5-42F5-8C31-E86A6AEF4DCA}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Win32 = Debug|Win32
|
Debug|Win32 = Debug|Win32
|
||||||
|
@ -236,7 +238,6 @@ Global
|
||||||
{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}.DebugFast|Win32.Build.0 = DebugFast|Win32
|
{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}.DebugFast|Win32.Build.0 = DebugFast|Win32
|
||||||
{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}.DebugFast|x64.ActiveCfg = DebugFast|x64
|
{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}.DebugFast|x64.ActiveCfg = DebugFast|x64
|
||||||
{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}.Release|Win32.ActiveCfg = Release|Win32
|
{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}.Release|x64.ActiveCfg = Release|x64
|
{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}.Release|x64.ActiveCfg = Release|x64
|
||||||
{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}.Release|x64.Build.0 = Release|x64
|
{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}.Release|x64.Build.0 = Release|x64
|
||||||
{C573CAF7-EE6A-458E-8049-16C0BF34C2E9}.Debug|Win32.ActiveCfg = Debug|Win32
|
{C573CAF7-EE6A-458E-8049-16C0BF34C2E9}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
@ -320,7 +321,6 @@ Global
|
||||||
{8D612734-FAA5-4B8A-804F-4DEA2367D495}.DebugFast|Win32.ActiveCfg = DebugFast|Win32
|
{8D612734-FAA5-4B8A-804F-4DEA2367D495}.DebugFast|Win32.ActiveCfg = DebugFast|Win32
|
||||||
{8D612734-FAA5-4B8A-804F-4DEA2367D495}.DebugFast|x64.ActiveCfg = DebugFast|x64
|
{8D612734-FAA5-4B8A-804F-4DEA2367D495}.DebugFast|x64.ActiveCfg = DebugFast|x64
|
||||||
{8D612734-FAA5-4B8A-804F-4DEA2367D495}.Release|Win32.ActiveCfg = Release|Win32
|
{8D612734-FAA5-4B8A-804F-4DEA2367D495}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{8D612734-FAA5-4B8A-804F-4DEA2367D495}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{8D612734-FAA5-4B8A-804F-4DEA2367D495}.Release|x64.ActiveCfg = Release|x64
|
{8D612734-FAA5-4B8A-804F-4DEA2367D495}.Release|x64.ActiveCfg = Release|x64
|
||||||
{8D612734-FAA5-4B8A-804F-4DEA2367D495}.Release|x64.Build.0 = Release|x64
|
{8D612734-FAA5-4B8A-804F-4DEA2367D495}.Release|x64.Build.0 = Release|x64
|
||||||
{C6CC7A52-0FDD-433A-B2CF-9C6F187DA807}.Debug|Win32.ActiveCfg = Debug|Win32
|
{C6CC7A52-0FDD-433A-B2CF-9C6F187DA807}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
@ -354,6 +354,7 @@ Global
|
||||||
{521498BE-6089-4780-8223-E67C22F4E068}.DebugFast|x64.ActiveCfg = DebugFast|x64
|
{521498BE-6089-4780-8223-E67C22F4E068}.DebugFast|x64.ActiveCfg = DebugFast|x64
|
||||||
{521498BE-6089-4780-8223-E67C22F4E068}.DebugFast|x64.Build.0 = DebugFast|x64
|
{521498BE-6089-4780-8223-E67C22F4E068}.DebugFast|x64.Build.0 = DebugFast|x64
|
||||||
{521498BE-6089-4780-8223-E67C22F4E068}.Release|Win32.ActiveCfg = Release|Win32
|
{521498BE-6089-4780-8223-E67C22F4E068}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{521498BE-6089-4780-8223-E67C22F4E068}.Release|Win32.Build.0 = Release|Win32
|
||||||
{521498BE-6089-4780-8223-E67C22F4E068}.Release|x64.ActiveCfg = Release|x64
|
{521498BE-6089-4780-8223-E67C22F4E068}.Release|x64.ActiveCfg = Release|x64
|
||||||
{521498BE-6089-4780-8223-E67C22F4E068}.Release|x64.Build.0 = Release|x64
|
{521498BE-6089-4780-8223-E67C22F4E068}.Release|x64.Build.0 = Release|x64
|
||||||
{0B72B5D6-5D72-4391-84A7-9CCA5392668A}.Debug|Win32.ActiveCfg = Debug|Win32
|
{0B72B5D6-5D72-4391-84A7-9CCA5392668A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
@ -410,6 +411,15 @@ Global
|
||||||
{C7E5D50A-2916-464B-86A7-E10B3CC88ADA}.Release|Win32.Build.0 = Release|Win32
|
{C7E5D50A-2916-464B-86A7-E10B3CC88ADA}.Release|Win32.Build.0 = Release|Win32
|
||||||
{C7E5D50A-2916-464B-86A7-E10B3CC88ADA}.Release|x64.ActiveCfg = Release|x64
|
{C7E5D50A-2916-464B-86A7-E10B3CC88ADA}.Release|x64.ActiveCfg = Release|x64
|
||||||
{C7E5D50A-2916-464B-86A7-E10B3CC88ADA}.Release|x64.Build.0 = Release|x64
|
{C7E5D50A-2916-464B-86A7-E10B3CC88ADA}.Release|x64.Build.0 = Release|x64
|
||||||
|
{B6C1A81F-99A5-42F5-8C31-E86A6AEF4DCA}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{B6C1A81F-99A5-42F5-8C31-E86A6AEF4DCA}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{B6C1A81F-99A5-42F5-8C31-E86A6AEF4DCA}.Debug|x64.ActiveCfg = Debug|Win32
|
||||||
|
{B6C1A81F-99A5-42F5-8C31-E86A6AEF4DCA}.DebugFast|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{B6C1A81F-99A5-42F5-8C31-E86A6AEF4DCA}.DebugFast|Win32.Build.0 = Debug|Win32
|
||||||
|
{B6C1A81F-99A5-42F5-8C31-E86A6AEF4DCA}.DebugFast|x64.ActiveCfg = Debug|Win32
|
||||||
|
{B6C1A81F-99A5-42F5-8C31-E86A6AEF4DCA}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{B6C1A81F-99A5-42F5-8C31-E86A6AEF4DCA}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{B6C1A81F-99A5-42F5-8C31-E86A6AEF4DCA}.Release|x64.ActiveCfg = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
@ -437,6 +447,7 @@ Global
|
||||||
{33546D62-7F34-4EA6-A88E-D538B36E16BF} = {4F427D1B-8C90-4D9C-B23D-A51493A1C471}
|
{33546D62-7F34-4EA6-A88E-D538B36E16BF} = {4F427D1B-8C90-4D9C-B23D-A51493A1C471}
|
||||||
{71B16F46-0B00-4EDA-B253-D6D9D03A215C} = {4F427D1B-8C90-4D9C-B23D-A51493A1C471}
|
{71B16F46-0B00-4EDA-B253-D6D9D03A215C} = {4F427D1B-8C90-4D9C-B23D-A51493A1C471}
|
||||||
{29C2ABC1-ADA5-42CD-A5FC-96022D52A510} = {4F427D1B-8C90-4D9C-B23D-A51493A1C471}
|
{29C2ABC1-ADA5-42CD-A5FC-96022D52A510} = {4F427D1B-8C90-4D9C-B23D-A51493A1C471}
|
||||||
|
{B6C1A81F-99A5-42F5-8C31-E86A6AEF4DCA} = {4F427D1B-8C90-4D9C-B23D-A51493A1C471}
|
||||||
{0B72B5D6-5D72-4391-84A7-9CCA5392668A} = {77CF6E34-3038-4B23-A2E7-90AD17801609}
|
{0B72B5D6-5D72-4391-84A7-9CCA5392668A} = {77CF6E34-3038-4B23-A2E7-90AD17801609}
|
||||||
{0D14F1E9-490B-4A2D-A4EF-0535E8B3C718} = {77CF6E34-3038-4B23-A2E7-90AD17801609}
|
{0D14F1E9-490B-4A2D-A4EF-0535E8B3C718} = {77CF6E34-3038-4B23-A2E7-90AD17801609}
|
||||||
{DE7C596C-CBC4-4278-8909-146D63990803} = {77CF6E34-3038-4B23-A2E7-90AD17801609}
|
{DE7C596C-CBC4-4278-8909-146D63990803} = {77CF6E34-3038-4B23-A2E7-90AD17801609}
|
||||||
|
|
|
@ -65,7 +65,7 @@
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalDependencies="rpcrt4.lib"
|
AdditionalDependencies="SDL.lib comctl32.lib rpcrt4.lib"
|
||||||
OutputFile="..\..\..\Binary\Win32\Plugins\$(ProjectName)D.dll"
|
OutputFile="..\..\..\Binary\Win32\Plugins\$(ProjectName)D.dll"
|
||||||
LinkIncremental="2"
|
LinkIncremental="2"
|
||||||
AdditionalLibraryDirectories="..\..\..\Externals\SDL\win32"
|
AdditionalLibraryDirectories="..\..\..\Externals\SDL\win32"
|
||||||
|
@ -124,7 +124,7 @@
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories="..\..\PluginSpecs;..\..\..\Externals\SDL\include;..\..\Core\Common\Src;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc"
|
AdditionalIncludeDirectories="..\..\PluginSpecs;..\..\..\Externals\SDL\Include_1.2;..\..\Core\Common\Src;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc"
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PLUGIN_NJOY_SDL_EXPORTS;_SECURE_SCL=0"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PLUGIN_NJOY_SDL_EXPORTS;_SECURE_SCL=0"
|
||||||
MinimalRebuild="true"
|
MinimalRebuild="true"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
|
@ -221,6 +221,7 @@
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="SDL.lib comctl32.lib"
|
||||||
OutputFile="..\..\..\Binary\Win32\Plugins\$(ProjectName).dll"
|
OutputFile="..\..\..\Binary\Win32\Plugins\$(ProjectName).dll"
|
||||||
LinkIncremental="1"
|
LinkIncremental="1"
|
||||||
AdditionalLibraryDirectories="..\..\..\Externals\SDL\win32"
|
AdditionalLibraryDirectories="..\..\..\Externals\SDL\win32"
|
||||||
|
@ -281,7 +282,7 @@
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalIncludeDirectories="..\..\PluginSpecs;..\..\..\Externals\SDL\include;..\..\Core\Common\Src;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc"
|
AdditionalIncludeDirectories="..\..\PluginSpecs;..\..\..\Externals\SDL\Include_1.2;..\..\Core\Common\Src;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc"
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PLUGIN_NJOY_SDL_EXPORTS;_SECURE_SCL=0"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PLUGIN_NJOY_SDL_EXPORTS;_SECURE_SCL=0"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
|
@ -299,7 +300,7 @@
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalDependencies="rpcrt4.lib"
|
AdditionalDependencies="SDL.lib comctl32.lib rpcrt4.lib"
|
||||||
OutputFile="..\..\..\Binary\x64\Plugins\$(ProjectName).dll"
|
OutputFile="..\..\..\Binary\x64\Plugins\$(ProjectName).dll"
|
||||||
LinkIncremental="1"
|
LinkIncremental="1"
|
||||||
AdditionalLibraryDirectories="..\..\..\Externals\SDL\x64"
|
AdditionalLibraryDirectories="..\..\..\Externals\SDL\x64"
|
||||||
|
@ -378,7 +379,7 @@
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalDependencies="rpcrt4.lib"
|
AdditionalDependencies="SDL.lib comctl32.lib rpcrt4.lib"
|
||||||
OutputFile="..\..\..\Binary\Win32\Plugins\$(ProjectName)DF.dll"
|
OutputFile="..\..\..\Binary\Win32\Plugins\$(ProjectName)DF.dll"
|
||||||
LinkIncremental="1"
|
LinkIncremental="1"
|
||||||
AdditionalLibraryDirectories="..\..\..\Externals\SDL\win32"
|
AdditionalLibraryDirectories="..\..\..\Externals\SDL\win32"
|
||||||
|
@ -439,7 +440,7 @@
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalIncludeDirectories="..\..\PluginSpecs;..\..\..\Externals\SDL\include;..\..\Core\Common\Src;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc"
|
AdditionalIncludeDirectories="..\..\PluginSpecs;..\..\..\Externals\SDL\Include_1.2;..\..\Core\Common\Src;..\..\..\Externals\wxWidgets\Include;..\..\..\Externals\wxWidgets\Include\msvc"
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;DEBUGFAST;_WINDOWS;_USRDLL;PLUGIN_NJOY_SDL_EXPORTS;_SECURE_SCL=0"
|
PreprocessorDefinitions="WIN32;NDEBUG;DEBUGFAST;_WINDOWS;_USRDLL;PLUGIN_NJOY_SDL_EXPORTS;_SECURE_SCL=0"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
|
|
|
@ -220,7 +220,7 @@ void Config::Save(bool CheckedForDuplicates)
|
||||||
file.Set(SectionName.c_str(), "deadzone", joysticks[i].deadzone);
|
file.Set(SectionName.c_str(), "deadzone", joysticks[i].deadzone);
|
||||||
file.Set(SectionName.c_str(), "halfpress", joysticks[i].halfpress);
|
file.Set(SectionName.c_str(), "halfpress", joysticks[i].halfpress);
|
||||||
|
|
||||||
file.Set(SectionName.c_str(), "controllertype", joysticks[i].controllertype);
|
//file.Set(SectionName.c_str(), "controllertype", joysticks[i].controllertype);
|
||||||
file.Set(SectionName.c_str(), "eventnum", joysticks[i].eventnum);
|
file.Set(SectionName.c_str(), "eventnum", joysticks[i].eventnum);
|
||||||
|
|
||||||
file.Set(SectionName.c_str(), "Diagonal", g_Config.SDiagonal);
|
file.Set(SectionName.c_str(), "Diagonal", g_Config.SDiagonal);
|
||||||
|
@ -293,7 +293,7 @@ void Config::Load(bool config)
|
||||||
file.Get(SectionName.c_str(), "sub_y", &joysticks[i].axis[CTL_SUB_Y], 3);
|
file.Get(SectionName.c_str(), "sub_y", &joysticks[i].axis[CTL_SUB_Y], 3);
|
||||||
file.Get(SectionName.c_str(), "deadzone", &joysticks[i].deadzone, 9);
|
file.Get(SectionName.c_str(), "deadzone", &joysticks[i].deadzone, 9);
|
||||||
file.Get(SectionName.c_str(), "halfpress", &joysticks[i].halfpress, 6);
|
file.Get(SectionName.c_str(), "halfpress", &joysticks[i].halfpress, 6);
|
||||||
file.Get(SectionName.c_str(), "controllertype", &joysticks[i].controllertype, 0);
|
//file.Get(SectionName.c_str(), "controllertype", &joysticks[i].controllertype, 0);
|
||||||
file.Get(SectionName.c_str(), "eventnum", &joysticks[i].eventnum, 0);
|
file.Get(SectionName.c_str(), "eventnum", &joysticks[i].eventnum, 0);
|
||||||
|
|
||||||
file.Get(SectionName.c_str(), "Diagonal", &g_Config.SDiagonal, "100%");
|
file.Get(SectionName.c_str(), "Diagonal", &g_Config.SDiagonal, "100%");
|
||||||
|
|
|
@ -128,6 +128,43 @@ void ConfigBox::PadGetStatus()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Show the current pad status
|
||||||
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
|
std::string ShowStatus()
|
||||||
|
{
|
||||||
|
SDL_Joystick *joy = SDL_JoystickOpen(0);
|
||||||
|
int axes = SDL_JoystickNumAxes(joy);
|
||||||
|
int hats = SDL_JoystickNumHats(joy);
|
||||||
|
int but = SDL_JoystickNumButtons(joy);
|
||||||
|
std::string StrAxes, StrHats, StrBut;
|
||||||
|
int value;
|
||||||
|
|
||||||
|
// Go through all axes and read out their values
|
||||||
|
SDL_JoystickUpdate();
|
||||||
|
for(int i = 0; i < axes; i++)
|
||||||
|
{
|
||||||
|
value = SDL_JoystickGetAxis(joy, i);
|
||||||
|
StrAxes += StringFromFormat(" %i:%05i", i, value);
|
||||||
|
}
|
||||||
|
for(int i = 0;i < hats; i++)
|
||||||
|
{
|
||||||
|
value = SDL_JoystickGetHat(joy, i);
|
||||||
|
StrHats += StringFromFormat(" %i:%i", i, value);
|
||||||
|
}
|
||||||
|
for(int i = 0;i < but; i++)
|
||||||
|
{
|
||||||
|
value = SDL_JoystickGetButton(joy, i);
|
||||||
|
StrBut += StringFromFormat(" %i:%i", i+1, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return StringFromFormat(
|
||||||
|
"Axes: %s\nHats: %s\nBut: %s\nDevice: Ax: %i Balls:%i But:%i Hats:%i",
|
||||||
|
StrAxes.c_str(), StrHats.c_str(), StrBut.c_str(),
|
||||||
|
joyinfo[joysticks[0].ID].NumAxes, joyinfo[joysticks[0].ID].NumBalls,
|
||||||
|
joyinfo[joysticks[0].ID].NumButtons, joyinfo[joysticks[0].ID].NumHats
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Populate the advanced tab
|
// Populate the advanced tab
|
||||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
void ConfigBox::Update()
|
void ConfigBox::Update()
|
||||||
|
@ -135,11 +172,11 @@ void ConfigBox::Update()
|
||||||
if(StrangeHack) PadGetStatus();
|
if(StrangeHack) PadGetStatus();
|
||||||
if(!g_Config.bShowAdvanced) StrangeHack = false; else StrangeHack = true;
|
if(!g_Config.bShowAdvanced) StrangeHack = false; else StrangeHack = true;
|
||||||
|
|
||||||
/*
|
// Show the current status
|
||||||
|
/**/
|
||||||
m_pStatusBar->SetLabel(wxString::Format(
|
m_pStatusBar->SetLabel(wxString::Format(
|
||||||
"Id: %i",
|
"%s", ShowStatus().c_str()
|
||||||
joysticks[0].ID
|
));
|
||||||
));*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ extern bool emulator_running;
|
||||||
|
|
||||||
static const char* ControllerType[] =
|
static const char* ControllerType[] =
|
||||||
{
|
{
|
||||||
"Joystick (default)",
|
"Joystick (with hat)",
|
||||||
"Joystick (no hat)",
|
"Joystick (no hat)",
|
||||||
// "Joytstick (xbox360)", // Shoulder buttons -> axis
|
// "Joytstick (xbox360)", // Shoulder buttons -> axis
|
||||||
// "Keyboard" // Not supported yet, sorry F|RES ;( ...
|
// "Keyboard" // Not supported yet, sorry F|RES ;( ...
|
||||||
|
@ -85,11 +85,10 @@ BEGIN_EVENT_TABLE(ConfigBox,wxDialog)
|
||||||
EVT_BUTTON(IDB_DPAD_DOWN, ConfigBox::GetButtons)
|
EVT_BUTTON(IDB_DPAD_DOWN, ConfigBox::GetButtons)
|
||||||
EVT_BUTTON(IDB_DPAD_LEFT, ConfigBox::GetButtons)
|
EVT_BUTTON(IDB_DPAD_LEFT, ConfigBox::GetButtons)
|
||||||
EVT_BUTTON(IDB_DPAD_RIGHT, ConfigBox::GetButtons)
|
EVT_BUTTON(IDB_DPAD_RIGHT, ConfigBox::GetButtons)
|
||||||
|
EVT_BUTTON(IDB_ANALOG_MAIN_X, ConfigBox::GetButtons)
|
||||||
EVT_BUTTON(IDB_ANALOG_MAIN_X, ConfigBox::GetAxis)
|
EVT_BUTTON(IDB_ANALOG_MAIN_Y, ConfigBox::GetButtons)
|
||||||
EVT_BUTTON(IDB_ANALOG_MAIN_Y, ConfigBox::GetAxis)
|
EVT_BUTTON(IDB_ANALOG_SUB_X, ConfigBox::GetButtons)
|
||||||
EVT_BUTTON(IDB_ANALOG_SUB_X, ConfigBox::GetAxis)
|
EVT_BUTTON(IDB_ANALOG_SUB_Y, ConfigBox::GetButtons)
|
||||||
EVT_BUTTON(IDB_ANALOG_SUB_Y, ConfigBox::GetAxis)
|
|
||||||
|
|
||||||
#if wxUSE_TIMER
|
#if wxUSE_TIMER
|
||||||
EVT_TIMER(wxID_ANY, ConfigBox::OnTimer)
|
EVT_TIMER(wxID_ANY, ConfigBox::OnTimer)
|
||||||
|
@ -238,26 +237,30 @@ void ConfigBox::EnableDisable(wxCommandEvent& event)
|
||||||
g_Config.Save();
|
g_Config.Save();
|
||||||
|
|
||||||
// Update the enable / disable status
|
// Update the enable / disable status
|
||||||
DoEnableDisable(notebookpage);
|
UpdateGUI(notebookpage);
|
||||||
|
|
||||||
}
|
}
|
||||||
void ConfigBox::DoEnableDisable(int _notebookpage)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
// Update GUI
|
||||||
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
|
// Called from: SetControllerAll(), ChangeControllertype()
|
||||||
|
void ConfigBox::UpdateGUI(int _notebookpage)
|
||||||
|
{
|
||||||
// Update the enable / disable status
|
// Update the enable / disable status
|
||||||
joysticks[_notebookpage].enabled = m_Joyattach[_notebookpage]->GetValue();
|
joysticks[_notebookpage].enabled = m_Joyattach[_notebookpage]->GetValue();
|
||||||
|
|
||||||
#ifdef _WIN32 // There is no FindItem in linux so this doesn't work
|
// Controller type settings
|
||||||
// Enable or disable all buttons
|
bool HasHat = (joysticks[_notebookpage].controllertype == CTL_TYPE_JOYSTICK);
|
||||||
for(int i = IDB_SHOULDER_L; i < (IDB_SHOULDER_L + 13 + 4); i++)
|
m_JoyDpadDown[_notebookpage]->Show(HasHat);
|
||||||
{
|
m_JoyDpadLeft[_notebookpage]->Show(HasHat);
|
||||||
m_Controller[_notebookpage]->FindItem(i)->Enable(joysticks[_notebookpage].enabled);
|
m_JoyDpadRight[_notebookpage]->Show(HasHat);
|
||||||
}
|
m_bJoyDpadDown[_notebookpage]->Show(HasHat);
|
||||||
|
m_bJoyDpadLeft[_notebookpage]->Show(HasHat);
|
||||||
// Enable or disable settings controls
|
m_bJoyDpadRight[_notebookpage]->Show(HasHat);
|
||||||
m_Controller[_notebookpage]->FindItem(IDC_DEADZONE)->Enable(joysticks[_notebookpage].enabled);
|
m_textDpadUp[_notebookpage]->Show(HasHat);
|
||||||
m_Controller[_notebookpage]->FindItem(IDC_CONTROLTYPE)->Enable(joysticks[_notebookpage].enabled);
|
m_textDpadDown[_notebookpage]->Show(HasHat);
|
||||||
#endif
|
m_textDpadLeft[_notebookpage]->Show(HasHat);
|
||||||
|
m_textDpadRight[_notebookpage]->Show(HasHat);
|
||||||
|
|
||||||
// General settings
|
// General settings
|
||||||
m_CBSaveByID[_notebookpage]->SetValue(g_Config.bSaveByID.at(_notebookpage));
|
m_CBSaveByID[_notebookpage]->SetValue(g_Config.bSaveByID.at(_notebookpage));
|
||||||
|
@ -268,8 +271,22 @@ void ConfigBox::DoEnableDisable(int _notebookpage)
|
||||||
m_CoBDiagonal[_notebookpage]->SetValue(wxString::FromAscii(g_Config.SDiagonal.c_str()));
|
m_CoBDiagonal[_notebookpage]->SetValue(wxString::FromAscii(g_Config.SDiagonal.c_str()));
|
||||||
m_CBS_to_C[_notebookpage]->SetValue(g_Config.bSquareToCircle.at(_notebookpage));
|
m_CBS_to_C[_notebookpage]->SetValue(g_Config.bSquareToCircle.at(_notebookpage));
|
||||||
|
|
||||||
m_Controller[_notebookpage]->Refresh(); // Repaint the background
|
// There is no FindItem in linux so this doesn't work
|
||||||
|
#ifdef _WIN32
|
||||||
|
// Enable or disable all buttons
|
||||||
|
for(int i = IDB_ANALOG_MAIN_X; i < (IDB_ANALOG_MAIN_X + 13 + 4); i++)
|
||||||
|
{
|
||||||
|
m_Controller[_notebookpage]->FindItem(i)->Enable(joysticks[_notebookpage].enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Controller type settings
|
||||||
|
m_Controller[_notebookpage]->FindItem(IDC_DEADZONE)->Enable(joysticks[_notebookpage].enabled);
|
||||||
|
//m_Controller[_notebookpage]->FindItem(IDC_CONTROLTYPE)->Enable(joysticks[_notebookpage].enabled);
|
||||||
|
#endif
|
||||||
|
m_Controltype[_notebookpage]->SetSelection(HasHat ? 0 : 1);
|
||||||
|
|
||||||
|
// Repaint the background
|
||||||
|
m_Controller[_notebookpage]->Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -281,14 +298,16 @@ void ConfigBox::NotebookPageChanged(wxNotebookEvent& event)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Change Joystick. Load saved settings.
|
// Change Joystick.
|
||||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
|
/* Function: When changing the joystick we save and load the settings and update the joysticks
|
||||||
|
and joystate array */
|
||||||
void ConfigBox::ChangeJoystick(wxCommandEvent& event)
|
void ConfigBox::ChangeJoystick(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
// Save potential changes to support SaveByID
|
// Before chaning the pad we save potential changes (to support SaveByID)
|
||||||
int Tmp = joysticks[notebookpage].ID; // Don't update the ID
|
int TmpID = joysticks[notebookpage].ID; // Don't update the ID
|
||||||
GetControllerAll(notebookpage);
|
GetControllerAll(notebookpage);
|
||||||
joysticks[notebookpage].ID = Tmp;
|
joysticks[notebookpage].ID = TmpID;
|
||||||
g_Config.Save();
|
g_Config.Save();
|
||||||
|
|
||||||
//PanicAlert("%i", m_Joyname[notebookpage]->GetSelection());
|
//PanicAlert("%i", m_Joyname[notebookpage]->GetSelection());
|
||||||
|
@ -296,14 +315,18 @@ void ConfigBox::ChangeJoystick(wxCommandEvent& event)
|
||||||
// Update the ID for the virtual device to a new physical device
|
// Update the ID for the virtual device to a new physical device
|
||||||
joysticks[notebookpage].ID = m_Joyname[notebookpage]->GetSelection();
|
joysticks[notebookpage].ID = m_Joyname[notebookpage]->GetSelection();
|
||||||
|
|
||||||
|
// Update the controller type
|
||||||
|
if(joyinfo[joysticks[notebookpage].ID].NumHats > 0)
|
||||||
|
joysticks[notebookpage].controllertype = CTL_TYPE_JOYSTICK;
|
||||||
|
|
||||||
//PanicAlert("%i %i", joysticks[notebookpage].ID, notebookpage);
|
//PanicAlert("%i %i", joysticks[notebookpage].ID, notebookpage);
|
||||||
|
|
||||||
// Load device settings to support SaveByID
|
// Load device settings to support SaveByID
|
||||||
g_Config.Load(true); // Then load the current
|
g_Config.Load(true); // Then load the current
|
||||||
SetControllerAll(notebookpage); // Update joystick dialog items
|
SetControllerAll(notebookpage); // Update joystick dialog items
|
||||||
DoEnableDisable(notebookpage); // Update other dialog items
|
UpdateGUI(notebookpage); // Update other dialog items
|
||||||
|
|
||||||
// Remap the controller to
|
// Remap the controller
|
||||||
if (joysticks[notebookpage].enabled)
|
if (joysticks[notebookpage].enabled)
|
||||||
{
|
{
|
||||||
if (SDL_JoystickOpened(notebookpage)) SDL_JoystickClose(joystate[notebookpage].joy);
|
if (SDL_JoystickOpened(notebookpage)) SDL_JoystickClose(joystate[notebookpage].joy);
|
||||||
|
@ -455,10 +478,13 @@ void ConfigBox::CreateGUIControls()
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
// Keys objects
|
// Keys objects
|
||||||
// -----------------------------
|
// -----------------------------
|
||||||
// Left shoulder
|
// Left and right shoulder buttons
|
||||||
m_JoyShoulderL[i] = new wxTextCtrl(m_pKeys[i], ID_SHOULDER_L, wxT("0"), wxPoint(l + 6, t + 80), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
m_JoyShoulderL[i] = new wxTextCtrl(m_pKeys[i], ID_SHOULDER_L, wxT("0"), wxPoint(l + 6, t + 80), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
||||||
m_JoyShoulderL[i]->Enable(false);
|
m_JoyShoulderL[i]->Enable(false);
|
||||||
m_bJoyShoulderL[i] = new wxButton(m_pKeys[i], IDB_SHOULDER_L, wxEmptyString, wxPoint(l + 70, t + 82), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
m_bJoyShoulderL[i] = new wxButton(m_pKeys[i], IDB_SHOULDER_L, wxEmptyString, wxPoint(l + 70, t + 82), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
||||||
|
m_JoyShoulderR[i] = new wxTextCtrl(m_pKeys[i], ID_SHOULDER_R, wxT("0"), wxPoint(l + 552, t + 106), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
||||||
|
m_JoyShoulderR[i]->Enable(false);
|
||||||
|
m_bJoyShoulderR[i] = new wxButton(m_pKeys[i], IDB_SHOULDER_R, wxEmptyString, wxPoint(l + 526, t + 108), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
||||||
|
|
||||||
// Left analog
|
// Left analog
|
||||||
int ALt = 170; int ALw = ALt + 14; int ALb = ALw + 2; // Set offset
|
int ALt = 170; int ALw = ALt + 14; int ALb = ALw + 2; // Set offset
|
||||||
|
@ -473,13 +499,13 @@ void ConfigBox::CreateGUIControls()
|
||||||
|
|
||||||
// D-Pad
|
// D-Pad
|
||||||
int DPt = 255; int DPw = DPt + 14; int DPb = DPw + 2; // Set offset
|
int DPt = 255; int DPw = DPt + 14; int DPb = DPw + 2; // Set offset
|
||||||
m_JoyDpadUp[i] = new wxTextCtrl(m_pKeys[i], ID_DPAD_UP, wxT("0"), wxPoint(l + 6, t + DPw), wxSize(59, t + 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
m_JoyDpadUp[i] = new wxTextCtrl(m_pKeys[i], ID_DPAD_UP, wxT("0"), wxPoint(l + 6, t + DPw), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
||||||
|
m_JoyDpadDown[i] = new wxTextCtrl(m_pKeys[i], ID_DPAD_DOWN, wxT("0"), wxPoint(l + 6, t + DPw + 36*1), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
||||||
|
m_JoyDpadLeft[i] = new wxTextCtrl(m_pKeys[i], ID_DPAD_LEFT, wxT("0"), wxPoint(l + 6, t + DPw + 36*2), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
||||||
|
m_JoyDpadRight[i] = new wxTextCtrl(m_pKeys[i], ID_DPAD_RIGHT, wxT("0"), wxPoint(l + 6, t + DPw + 36*3), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
||||||
m_JoyDpadUp[i]->Enable(false);
|
m_JoyDpadUp[i]->Enable(false);
|
||||||
m_JoyDpadDown[i] = new wxTextCtrl(m_pKeys[i], ID_DPAD_DOWN, wxT("0"), wxPoint(l + 6, t + DPw + 36*1), wxSize(59, t + 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
|
||||||
m_JoyDpadDown[i]->Enable(false);
|
m_JoyDpadDown[i]->Enable(false);
|
||||||
m_JoyDpadLeft[i] = new wxTextCtrl(m_pKeys[i], ID_DPAD_LEFT, wxT("0"), wxPoint(l + 6, t + DPw + 36*2), wxSize(59, t + 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
|
||||||
m_JoyDpadLeft[i]->Enable(false);
|
m_JoyDpadLeft[i]->Enable(false);
|
||||||
m_JoyDpadRight[i] = new wxTextCtrl(m_pKeys[i], ID_DPAD_RIGHT, wxT("0"), wxPoint(l + 6, t + DPw + 36*3), wxSize(59, t + 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
|
||||||
m_JoyDpadRight[i]->Enable(false);
|
m_JoyDpadRight[i]->Enable(false);
|
||||||
m_bJoyDpadUp[i] = new wxButton(m_pKeys[i], IDB_DPAD_UP, wxEmptyString, wxPoint(l + 70, t + DPb + 36*0), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
m_bJoyDpadUp[i] = new wxButton(m_pKeys[i], IDB_DPAD_UP, wxEmptyString, wxPoint(l + 70, t + DPb + 36*0), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
||||||
m_bJoyDpadDown[i] = new wxButton(m_pKeys[i], IDB_DPAD_DOWN, wxEmptyString, wxPoint(l + 70, t + DPb + 36*1), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
m_bJoyDpadDown[i] = new wxButton(m_pKeys[i], IDB_DPAD_DOWN, wxEmptyString, wxPoint(l + 70, t + DPb + 36*1), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
||||||
|
@ -490,9 +516,7 @@ void ConfigBox::CreateGUIControls()
|
||||||
m_textDpadLeft[i] = new wxStaticText(m_pKeys[i], IDT_DPAD_LEFT, wxT("Left"), wxPoint(l + 6, t + DPt + 36*2), wxDefaultSize, 0, wxT("Left"));
|
m_textDpadLeft[i] = new wxStaticText(m_pKeys[i], IDT_DPAD_LEFT, wxT("Left"), wxPoint(l + 6, t + DPt + 36*2), wxDefaultSize, 0, wxT("Left"));
|
||||||
m_textDpadRight[i] = new wxStaticText(m_pKeys[i], IDT_DPAD_RIGHT, wxT("Right"), wxPoint(l + 6, t + DPt + 36*3), wxDefaultSize, 0, wxT("Right"));
|
m_textDpadRight[i] = new wxStaticText(m_pKeys[i], IDT_DPAD_RIGHT, wxT("Right"), wxPoint(l + 6, t + DPt + 36*3), wxDefaultSize, 0, wxT("Right"));
|
||||||
|
|
||||||
// Right side buttons
|
// Buttons
|
||||||
m_JoyShoulderR[i] = new wxTextCtrl(m_pKeys[i], ID_SHOULDER_R, wxT("0"), wxPoint(l + 552, t + 106), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
|
||||||
m_JoyShoulderR[i]->Enable(false);
|
|
||||||
m_JoyButtonA[i] = new wxTextCtrl(m_pKeys[i], ID_BUTTON_A, wxT("0"), wxPoint(l + 552, t + 280), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
m_JoyButtonA[i] = new wxTextCtrl(m_pKeys[i], ID_BUTTON_A, wxT("0"), wxPoint(l + 552, t + 280), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
||||||
m_JoyButtonA[i]->Enable(false);
|
m_JoyButtonA[i]->Enable(false);
|
||||||
m_JoyButtonB[i] = new wxTextCtrl(m_pKeys[i], ID_BUTTON_B, wxT("0"), wxPoint(l + 552, t + 80), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
m_JoyButtonB[i] = new wxTextCtrl(m_pKeys[i], ID_BUTTON_B, wxT("0"), wxPoint(l + 552, t + 80), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
||||||
|
@ -503,7 +527,6 @@ void ConfigBox::CreateGUIControls()
|
||||||
m_JoyButtonY[i]->Enable(false);
|
m_JoyButtonY[i]->Enable(false);
|
||||||
m_JoyButtonZ[i] = new wxTextCtrl(m_pKeys[i], ID_BUTTON_Z, wxT("0"), wxPoint(l + 552, t + 145), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
m_JoyButtonZ[i] = new wxTextCtrl(m_pKeys[i], ID_BUTTON_Z, wxT("0"), wxPoint(l + 552, t + 145), wxSize(59, 19), wxTE_READONLY | wxTE_CENTRE, wxDefaultValidator, wxT("0"));
|
||||||
m_JoyButtonZ[i]->Enable(false);
|
m_JoyButtonZ[i]->Enable(false);
|
||||||
m_bJoyShoulderR[i] = new wxButton(m_pKeys[i], IDB_SHOULDER_R, wxEmptyString, wxPoint(l + 526, t + 108), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
|
||||||
m_bJoyButtonA[i] = new wxButton(m_pKeys[i], IDB_BUTTON_A, wxEmptyString, wxPoint(l + 526, t + 282), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
m_bJoyButtonA[i] = new wxButton(m_pKeys[i], IDB_BUTTON_A, wxEmptyString, wxPoint(l + 526, t + 282), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
||||||
m_bJoyButtonB[i] = new wxButton(m_pKeys[i], IDB_BUTTON_B, wxEmptyString, wxPoint(l + 526, t + 82), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
m_bJoyButtonB[i] = new wxButton(m_pKeys[i], IDB_BUTTON_B, wxEmptyString, wxPoint(l + 526, t + 82), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
||||||
m_bJoyButtonX[i] = new wxButton(m_pKeys[i], IDB_BUTTON_X, wxEmptyString, wxPoint(l + 526, t + 244), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
m_bJoyButtonX[i] = new wxButton(m_pKeys[i], IDB_BUTTON_X, wxEmptyString, wxPoint(l + 526, t + 244), wxSize(21, 14), 0, wxDefaultValidator, wxEmptyString);
|
||||||
|
@ -581,10 +604,14 @@ void ConfigBox::CreateGUIControls()
|
||||||
m_gGBExtrasettings[i]->Add(m_bJoyButtonHalfpress[i], wxGBPosition(1, 2), wxGBSpan(1, 1), (wxLEFT | wxTOP), 2);
|
m_gGBExtrasettings[i]->Add(m_bJoyButtonHalfpress[i], wxGBPosition(1, 2), wxGBSpan(1, 1), (wxLEFT | wxTOP), 2);
|
||||||
m_gExtrasettings[i]->Add(m_gGBExtrasettings[i], 0, wxEXPAND | wxALL, 3);
|
m_gExtrasettings[i]->Add(m_gGBExtrasettings[i], 0, wxEXPAND | wxALL, 3);
|
||||||
|
|
||||||
|
|
||||||
|
// Why is there a setting for this? Is it to replaced the analog stick with the digital pad?
|
||||||
|
|
||||||
// Populate controller typ
|
// Populate controller typ
|
||||||
m_gControllertype[i] = new wxStaticBoxSizer( wxVERTICAL, m_Controller[i], wxT("Controller type"));
|
m_gControllertype[i] = new wxStaticBoxSizer( wxVERTICAL, m_Controller[i], wxT("Controller type"));
|
||||||
m_Controltype[i] = new wxComboBox(m_Controller[i], IDC_CONTROLTYPE, arrayStringFor_Controltype[0], wxDefaultPosition, wxDefaultSize, arrayStringFor_Controltype, wxCB_READONLY);
|
m_Controltype[i] = new wxComboBox(m_Controller[i], IDC_CONTROLTYPE, arrayStringFor_Controltype[0], wxDefaultPosition, wxDefaultSize, arrayStringFor_Controltype, wxCB_READONLY);
|
||||||
m_gControllertype[i]->Add(m_Controltype[i], 0, wxEXPAND | wxALL, 3);
|
m_gControllertype[i]->Add(m_Controltype[i], 0, wxEXPAND | wxALL, 3);
|
||||||
|
m_Controltype[i]->Enable(false);
|
||||||
|
|
||||||
// Create objects for general settings
|
// Create objects for general settings
|
||||||
m_gGenSettings[i] = new wxStaticBoxSizer( wxVERTICAL, m_Controller[i], wxT("Settings") );
|
m_gGenSettings[i] = new wxStaticBoxSizer( wxVERTICAL, m_Controller[i], wxT("Settings") );
|
||||||
|
@ -711,7 +738,7 @@ void ConfigBox::CreateGUIControls()
|
||||||
SetControllerAll(i);
|
SetControllerAll(i);
|
||||||
|
|
||||||
// Update GUI
|
// Update GUI
|
||||||
DoEnableDisable(i);
|
UpdateGUI(i);
|
||||||
} // end of loop
|
} // end of loop
|
||||||
|
|
||||||
|
|
||||||
|
@ -736,7 +763,7 @@ void ConfigBox::CreateGUIControls()
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
// Debugging
|
// Debugging
|
||||||
// -----------------------------
|
// -----------------------------
|
||||||
//m_pStatusBar = new wxStaticText(this, IDT_DEBUGGING, wxT("Debugging"), wxPoint(100, 510), wxDefaultSize);
|
m_pStatusBar = new wxStaticText(this, IDT_DEBUGGING, wxT("Debugging"), wxPoint(100, 490), wxDefaultSize);
|
||||||
//m_pStatusBar2 = new wxStaticText(this, IDT_DEBUGGING2, wxT("Debugging2"), wxPoint(100, 530), wxDefaultSize);
|
//m_pStatusBar2 = new wxStaticText(this, IDT_DEBUGGING2, wxT("Debugging2"), wxPoint(100, 530), wxDefaultSize);
|
||||||
//m_pStatusBar->SetLabel(wxString::Format("Debugging text"));
|
//m_pStatusBar->SetLabel(wxString::Format("Debugging text"));
|
||||||
|
|
||||||
|
|
|
@ -235,28 +235,28 @@ class ConfigBox : public wxDialog
|
||||||
ID_DPAD_LEFT,
|
ID_DPAD_LEFT,
|
||||||
ID_DPAD_RIGHT,
|
ID_DPAD_RIGHT,
|
||||||
|
|
||||||
// Buttons controls
|
// Buttons controls (it's important that they are placed in this order)
|
||||||
IDB_SHOULDER_L = 3000,
|
IDB_ANALOG_MAIN_X = 3000,
|
||||||
|
IDB_ANALOG_MAIN_Y,
|
||||||
|
IDB_ANALOG_SUB_X,
|
||||||
|
IDB_ANALOG_SUB_Y,
|
||||||
|
IDB_SHOULDER_L,
|
||||||
IDB_SHOULDER_R,
|
IDB_SHOULDER_R,
|
||||||
|
|
||||||
|
IDB_DPAD_UP,
|
||||||
|
IDB_DPAD_DOWN,
|
||||||
|
IDB_DPAD_LEFT,
|
||||||
|
IDB_DPAD_RIGHT,
|
||||||
|
|
||||||
IDB_BUTTON_A,
|
IDB_BUTTON_A,
|
||||||
IDB_BUTTON_B,
|
IDB_BUTTON_B,
|
||||||
IDB_BUTTON_X,
|
IDB_BUTTON_X,
|
||||||
IDB_BUTTON_Y,
|
IDB_BUTTON_Y,
|
||||||
IDB_BUTTON_Z,
|
IDB_BUTTON_Z,
|
||||||
IDB_BUTTONSTART,
|
IDB_BUTTONSTART,
|
||||||
|
|
||||||
IDB_BUTTONHALFPRESS,
|
IDB_BUTTONHALFPRESS,
|
||||||
|
|
||||||
IDB_ANALOG_MAIN_X,
|
|
||||||
IDB_ANALOG_MAIN_Y,
|
|
||||||
IDB_ANALOG_SUB_X,
|
|
||||||
IDB_ANALOG_SUB_Y,
|
|
||||||
|
|
||||||
IDB_DPAD_UP,
|
|
||||||
IDB_DPAD_DOWN,
|
|
||||||
IDB_DPAD_LEFT,
|
|
||||||
IDB_DPAD_RIGHT,
|
|
||||||
|
|
||||||
// Text controls
|
// Text controls
|
||||||
IDT_ANALOG_MAIN_X = 4000,
|
IDT_ANALOG_MAIN_X = 4000,
|
||||||
IDT_ANALOG_MAIN_Y,
|
IDT_ANALOG_MAIN_Y,
|
||||||
|
@ -281,7 +281,7 @@ class ConfigBox : public wxDialog
|
||||||
|
|
||||||
void ChangeJoystick(wxCommandEvent& event);
|
void ChangeJoystick(wxCommandEvent& event);
|
||||||
void ChangeControllertype(wxCommandEvent& event);
|
void ChangeControllertype(wxCommandEvent& event);
|
||||||
void EnableDisable(wxCommandEvent& event); void DoEnableDisable(int _notebookpage);
|
void EnableDisable(wxCommandEvent& event); void UpdateGUI(int _notebookpage);
|
||||||
|
|
||||||
void ChangeSettings(wxCommandEvent& event); // Settings
|
void ChangeSettings(wxCommandEvent& event); // Settings
|
||||||
void ComboChange(wxCommandEvent& event);
|
void ComboChange(wxCommandEvent& event);
|
||||||
|
@ -293,7 +293,6 @@ class ConfigBox : public wxDialog
|
||||||
void PadGetStatus(); void Update();
|
void PadGetStatus(); void Update();
|
||||||
|
|
||||||
void SetControllerAll(int controller);
|
void SetControllerAll(int controller);
|
||||||
void UpdateVisibleItems(int controller);
|
|
||||||
void GetControllerAll(int controller);
|
void GetControllerAll(int controller);
|
||||||
|
|
||||||
void NotebookPageChanged(wxNotebookEvent& event);
|
void NotebookPageChanged(wxNotebookEvent& event);
|
||||||
|
|
|
@ -76,10 +76,11 @@ void ConfigBox::SetControllerAll(int controller)
|
||||||
else
|
else
|
||||||
m_Joyattach[controller]->SetValue(FALSE);
|
m_Joyattach[controller]->SetValue(FALSE);
|
||||||
|
|
||||||
|
// Update the deadzone and controller type controls
|
||||||
m_Controltype[controller]->SetSelection(joysticks[controller].controllertype);
|
m_Controltype[controller]->SetSelection(joysticks[controller].controllertype);
|
||||||
m_Deadzone[controller]->SetSelection(joysticks[controller].deadzone);
|
m_Deadzone[controller]->SetSelection(joysticks[controller].deadzone);
|
||||||
|
|
||||||
UpdateVisibleItems(controller);
|
UpdateGUI(controller);
|
||||||
|
|
||||||
if(joysticks[controller].controllertype == CTL_TYPE_JOYSTICK)
|
if(joysticks[controller].controllertype == CTL_TYPE_JOYSTICK)
|
||||||
{
|
{
|
||||||
|
@ -103,6 +104,7 @@ void ConfigBox::GetControllerAll(int controller)
|
||||||
long value;
|
long value;
|
||||||
|
|
||||||
joysticks[controller].ID = m_Joyname[controller]->GetSelection();
|
joysticks[controller].ID = m_Joyname[controller]->GetSelection();
|
||||||
|
if(joyinfo[joysticks[controller].ID].NumHats > 0) joysticks[controller].controllertype = CTL_TYPE_JOYSTICK;
|
||||||
|
|
||||||
m_JoyShoulderL[controller]->GetValue().ToLong(&value); joysticks[controller].buttons[CTL_L_SHOULDER] = value; tmp.clear();
|
m_JoyShoulderL[controller]->GetValue().ToLong(&value); joysticks[controller].buttons[CTL_L_SHOULDER] = value; tmp.clear();
|
||||||
m_JoyShoulderR[controller]->GetValue().ToLong(&value); joysticks[controller].buttons[CTL_R_SHOULDER] = value; tmp.clear();
|
m_JoyShoulderR[controller]->GetValue().ToLong(&value); joysticks[controller].buttons[CTL_R_SHOULDER] = value; tmp.clear();
|
||||||
|
@ -140,41 +142,6 @@ void ConfigBox::GetControllerAll(int controller)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ConfigBox::UpdateVisibleItems(int controller)
|
|
||||||
{
|
|
||||||
if(joysticks[controller].controllertype)
|
|
||||||
{
|
|
||||||
m_JoyDpadDown[controller]->Show(TRUE);
|
|
||||||
m_JoyDpadLeft[controller]->Show(TRUE);
|
|
||||||
m_JoyDpadRight[controller]->Show(TRUE);
|
|
||||||
|
|
||||||
m_bJoyDpadDown[controller]->Show(TRUE);
|
|
||||||
m_bJoyDpadLeft[controller]->Show(TRUE);
|
|
||||||
m_bJoyDpadRight[controller]->Show(TRUE);
|
|
||||||
|
|
||||||
m_textDpadUp[controller]->Show(TRUE);
|
|
||||||
m_textDpadDown[controller]->Show(TRUE);
|
|
||||||
m_textDpadLeft[controller]->Show(TRUE);
|
|
||||||
m_textDpadRight[controller]->Show(TRUE);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_JoyDpadDown[controller]->Show(FALSE);
|
|
||||||
m_JoyDpadLeft[controller]->Show(FALSE);
|
|
||||||
m_JoyDpadRight[controller]->Show(FALSE);
|
|
||||||
|
|
||||||
m_bJoyDpadDown[controller]->Show(FALSE);
|
|
||||||
m_bJoyDpadLeft[controller]->Show(FALSE);
|
|
||||||
m_bJoyDpadRight[controller]->Show(FALSE);
|
|
||||||
|
|
||||||
m_textDpadUp[controller]->Show(FALSE);
|
|
||||||
m_textDpadDown[controller]->Show(FALSE);
|
|
||||||
m_textDpadLeft[controller]->Show(FALSE);
|
|
||||||
m_textDpadRight[controller]->Show(FALSE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Change controller type
|
// Change controller type
|
||||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
void ConfigBox::ChangeControllertype(wxCommandEvent& event)
|
void ConfigBox::ChangeControllertype(wxCommandEvent& event)
|
||||||
|
@ -184,7 +151,7 @@ void ConfigBox::ChangeControllertype(wxCommandEvent& event)
|
||||||
joysticks[2].controllertype = m_Controltype[2]->GetSelection();
|
joysticks[2].controllertype = m_Controltype[2]->GetSelection();
|
||||||
joysticks[3].controllertype = m_Controltype[3]->GetSelection();
|
joysticks[3].controllertype = m_Controltype[3]->GetSelection();
|
||||||
|
|
||||||
for(int i=0; i<4 ;i++) UpdateVisibleItems(i);
|
for(int i=0; i<4 ;i++) UpdateGUI(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -195,22 +162,13 @@ void ConfigBox::SetButtonText(int id, char text[128])
|
||||||
switch(id)
|
switch(id)
|
||||||
{
|
{
|
||||||
case IDB_SHOULDER_L:
|
case IDB_SHOULDER_L:
|
||||||
{
|
m_JoyShoulderL[controller]->SetValue(wxString::FromAscii(text)); break;
|
||||||
m_JoyShoulderL[controller]->SetValue(wxString::FromAscii(text));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDB_SHOULDER_R:
|
case IDB_SHOULDER_R:
|
||||||
{
|
m_JoyShoulderR[controller]->SetValue(wxString::FromAscii(text)); break;
|
||||||
m_JoyShoulderR[controller]->SetValue(wxString::FromAscii(text));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDB_BUTTON_A:
|
case IDB_BUTTON_A:
|
||||||
{
|
m_JoyButtonA[controller]->SetValue(wxString::FromAscii(text)); break;
|
||||||
m_JoyButtonA[controller]->SetValue(wxString::FromAscii(text));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDB_BUTTON_B:
|
case IDB_BUTTON_B:
|
||||||
{
|
{
|
||||||
|
@ -225,16 +183,10 @@ void ConfigBox::SetButtonText(int id, char text[128])
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDB_BUTTON_Y:
|
case IDB_BUTTON_Y:
|
||||||
{
|
m_JoyButtonY[controller]->SetValue(wxString::FromAscii(text)); break;
|
||||||
m_JoyButtonY[controller]->SetValue(wxString::FromAscii(text));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDB_BUTTON_Z:
|
case IDB_BUTTON_Z:
|
||||||
{
|
m_JoyButtonZ[controller]->SetValue(wxString::FromAscii(text)); break;
|
||||||
m_JoyButtonZ[controller]->SetValue(wxString::FromAscii(text));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDB_BUTTONSTART:
|
case IDB_BUTTONSTART:
|
||||||
{
|
{
|
||||||
|
@ -267,34 +219,19 @@ void ConfigBox::SetButtonText(int id, char text[128])
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDB_DPAD_RIGHT:
|
case IDB_DPAD_RIGHT:
|
||||||
{
|
m_JoyDpadRight[controller]->SetValue(wxString::FromAscii(text)); break;
|
||||||
m_JoyDpadRight[controller]->SetValue(wxString::FromAscii(text));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDB_ANALOG_MAIN_X:
|
case IDB_ANALOG_MAIN_X:
|
||||||
{
|
m_JoyAnalogMainX[controller]->SetValue(wxString::FromAscii(text)); break;
|
||||||
m_JoyAnalogMainX[controller]->SetValue(wxString::FromAscii(text));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDB_ANALOG_MAIN_Y:
|
case IDB_ANALOG_MAIN_Y:
|
||||||
{
|
m_JoyAnalogMainY[controller]->SetValue(wxString::FromAscii(text)); break;
|
||||||
m_JoyAnalogMainY[controller]->SetValue(wxString::FromAscii(text));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDB_ANALOG_SUB_X:
|
case IDB_ANALOG_SUB_X:
|
||||||
{
|
m_JoyAnalogSubX[controller]->SetValue(wxString::FromAscii(text)); break;
|
||||||
m_JoyAnalogSubX[controller]->SetValue(wxString::FromAscii(text));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDB_ANALOG_SUB_Y:
|
case IDB_ANALOG_SUB_Y:
|
||||||
{
|
m_JoyAnalogSubY[controller]->SetValue(wxString::FromAscii(text)); break;
|
||||||
m_JoyAnalogSubY[controller]->SetValue(wxString::FromAscii(text));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -302,6 +239,26 @@ void ConfigBox::SetButtonText(int id, char text[128])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Condifigure button mapping
|
||||||
|
// ¯¯¯¯¯¯¯¯¯¯
|
||||||
|
|
||||||
|
|
||||||
|
// Avoid extreme axis values
|
||||||
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
|
/* Function: We have to avoid very big values to becuse some triggers are -0x8000 in the
|
||||||
|
unpressed state (and then go from -0x8000 to 0x8000 as they are fully pressed) */
|
||||||
|
bool AvoidValues(int value)
|
||||||
|
{
|
||||||
|
// Avoid detecting very small or very big (for triggers) values
|
||||||
|
if( (value > -0x1000 && value < 0x1000) // Small values
|
||||||
|
|| (value < -0x7000 || value > 0x7000)) // Big values
|
||||||
|
return true; // Avoid
|
||||||
|
else
|
||||||
|
return false; // Keep
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Wait for button press
|
// Wait for button press
|
||||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
void ConfigBox::GetButtons(wxCommandEvent& event)
|
void ConfigBox::GetButtons(wxCommandEvent& event)
|
||||||
|
@ -312,43 +269,84 @@ void ConfigBox::GetButtons(wxCommandEvent& event)
|
||||||
// Get the ID for the wxWidgets button that was pressed
|
// Get the ID for the wxWidgets button that was pressed
|
||||||
int ID = event.GetId();
|
int ID = event.GetId();
|
||||||
|
|
||||||
// DPAD type check
|
// Collect the accepted buttons for this slot
|
||||||
if(ID == IDB_DPAD_UP)
|
bool Axis = (event.GetId() >= IDB_ANALOG_MAIN_X && event.GetId() <= IDB_SHOULDER_R);
|
||||||
if(joysticks[controller].controllertype == 0)
|
bool Button = (event.GetId() >= IDB_BUTTON_A && event.GetId() <= IDB_BUTTONSTART)
|
||||||
{
|
|| (event.GetId() == IDB_SHOULDER_L || event.GetId() == IDB_SHOULDER_R);
|
||||||
GetHats(ID);
|
bool Hat = (event.GetId() >= IDB_DPAD_UP && event.GetId() <= IDB_DPAD_RIGHT);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Open a new joystick. Joysticks[controller].ID is the system ID of the physicaljoystick
|
/* Open a new joystick. Joysticks[controller].ID is the system ID of the physical joystick
|
||||||
that is mapped to controller, for example 0, 1, 2, 3 for the first four joysticks */
|
that is mapped to controller, for example 0, 1, 2, 3 for the first four joysticks */
|
||||||
SDL_Joystick *joy = SDL_JoystickOpen(joysticks[controller].ID);
|
SDL_Joystick *joy = SDL_JoystickOpen(joysticks[controller].ID);
|
||||||
|
|
||||||
|
// Get the number of axes, hats and buttons
|
||||||
|
int buttons = SDL_JoystickNumButtons(joy);
|
||||||
|
int axes = SDL_JoystickNumAxes(joy);
|
||||||
|
int hats = SDL_JoystickNumHats(joy);
|
||||||
|
|
||||||
// Declare values
|
// Declare values
|
||||||
char format[128];
|
char format[128];
|
||||||
int buttons = SDL_JoystickNumButtons(joy); // Get number of buttons
|
int value; // Axis value
|
||||||
bool waiting = true;
|
bool waiting = true;
|
||||||
bool succeed = false;
|
bool succeed = false;
|
||||||
int pressed = 0;
|
int pressed = 0;
|
||||||
int counter1 = 0; // Waiting limits
|
int counter1 = 0; // Waiting limits
|
||||||
int counter2 = 30; // Iterations to wait for
|
int counter2 = 30; // Iterations to wait for
|
||||||
|
|
||||||
|
// Update the text box
|
||||||
sprintf(format, "[%d]", counter2);
|
sprintf(format, "[%d]", counter2);
|
||||||
SetButtonText(ID, format);
|
SetButtonText(ID, format);
|
||||||
wxWindow::Update(); // win only? doesnt seem to work in linux...
|
wxWindow::Update(); // Win only? doesnt seem to work in linux...
|
||||||
|
|
||||||
while(waiting)
|
while(waiting)
|
||||||
{
|
{
|
||||||
// Go through all axes and read out their values
|
// Update the internal status
|
||||||
SDL_JoystickUpdate();
|
SDL_JoystickUpdate();
|
||||||
for(int b = 0; b < buttons; b++)
|
|
||||||
|
// For the triggers we accept both a digital or an analog button
|
||||||
|
if(Axis)
|
||||||
{
|
{
|
||||||
if(SDL_JoystickGetButton(joy, b))
|
for(int i = 0; i < axes; i++)
|
||||||
{
|
{
|
||||||
pressed = b;
|
value = SDL_JoystickGetAxis(joy, i);
|
||||||
|
|
||||||
|
if(AvoidValues(value)) continue; // Avoid values
|
||||||
|
|
||||||
|
pressed = i;
|
||||||
waiting = false;
|
waiting = false;
|
||||||
succeed = true;
|
succeed = true;
|
||||||
break;
|
break; // Stop this loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for a hat
|
||||||
|
if(Hat)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < hats; i++)
|
||||||
|
{
|
||||||
|
value = SDL_JoystickGetHat(joy, i);
|
||||||
|
if(value)
|
||||||
|
{
|
||||||
|
pressed = value;
|
||||||
|
waiting = false;
|
||||||
|
succeed = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for a button
|
||||||
|
if(Button)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < buttons; i++)
|
||||||
|
{
|
||||||
|
if(SDL_JoystickGetButton(joy, i))
|
||||||
|
{
|
||||||
|
pressed = i;
|
||||||
|
waiting = false;
|
||||||
|
succeed = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -409,22 +407,92 @@ void ConfigBox::GetButtons(wxCommandEvent& event)
|
||||||
sprintf(format, "%d", succeed ? pressed : -1);
|
sprintf(format, "%d", succeed ? pressed : -1);
|
||||||
SetButtonText(ID, format);
|
SetButtonText(ID, format);
|
||||||
|
|
||||||
// We don't need this any more
|
// We don't need thisgamepad handle any more
|
||||||
if(SDL_JoystickOpened(joysticks[controller].ID)) SDL_JoystickClose(joy);
|
if(SDL_JoystickOpened(joysticks[controller].ID)) SDL_JoystickClose(joy);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Wait for Analog
|
||||||
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
|
void ConfigBox::GetAxis(wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
int ID = event.GetId();
|
||||||
|
int controller = notebookpage;
|
||||||
|
|
||||||
|
SDL_Joystick *joy = SDL_JoystickOpen(joysticks[controller].ID);
|
||||||
|
|
||||||
|
char format[128];
|
||||||
|
int axes = SDL_JoystickNumAxes(joy); // Get number of axes
|
||||||
|
bool waiting = true;
|
||||||
|
bool succeed = false;
|
||||||
|
int pressed = 0;
|
||||||
|
Sint16 value;
|
||||||
|
|
||||||
|
int counter1 = 0;
|
||||||
|
int counter2 = 10;
|
||||||
|
|
||||||
|
sprintf(format, "[%d]", counter2);
|
||||||
|
SetButtonText(ID, format);
|
||||||
|
wxWindow::Update(); // Win only? doesnt seem to work in linux...
|
||||||
|
|
||||||
|
while(waiting)
|
||||||
|
{
|
||||||
|
// Go through all axes and read out their values
|
||||||
|
SDL_JoystickUpdate();
|
||||||
|
for(int i = 0; i < axes; i++)
|
||||||
|
{
|
||||||
|
value = SDL_JoystickGetAxis(joy, i);
|
||||||
|
|
||||||
|
if(AvoidValues(value)) continue; // Avoid values
|
||||||
|
|
||||||
|
pressed = i;
|
||||||
|
waiting = false;
|
||||||
|
succeed = true;
|
||||||
|
break; // Stop this loop
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stop waiting for a button
|
||||||
|
counter1++;
|
||||||
|
if(counter1 == 100)
|
||||||
|
{
|
||||||
|
counter1 = 0;
|
||||||
|
counter2--;
|
||||||
|
|
||||||
|
sprintf(format, "[%d]", counter2);
|
||||||
|
SetButtonText(ID, format);
|
||||||
|
wxWindow::Update(); // win only? doesnt seem to work in linux...
|
||||||
|
wxYieldIfNeeded(); // Let through debugging events
|
||||||
|
|
||||||
|
if(counter2<0)
|
||||||
|
waiting = false;
|
||||||
|
}
|
||||||
|
SLEEP(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf(format, "%d", succeed ? pressed : -1); // Update the status text box
|
||||||
|
SetButtonText(ID, format);
|
||||||
|
|
||||||
|
if(SDL_JoystickOpened(joysticks[controller].ID)) // Close the handle
|
||||||
|
SDL_JoystickClose(joy);
|
||||||
|
|
||||||
|
// Update the axises for the advanced settings status
|
||||||
|
GetControllerAll(controller);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Wait for D-Pad
|
// Wait for D-Pad
|
||||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
void ConfigBox::GetHats(int ID)
|
void ConfigBox::GetHats(int ID)
|
||||||
{
|
{
|
||||||
|
// Get the active controller
|
||||||
int controller = notebookpage;
|
int controller = notebookpage;
|
||||||
|
|
||||||
SDL_Joystick *joy;
|
/* Open a new joystick. Joysticks[controller].ID is the system ID of the physical joystick
|
||||||
joy = SDL_JoystickOpen(joysticks[controller].ID);
|
that is mapped to controller, for example 0, 1, 2, 3 for the first four joysticks */
|
||||||
|
SDL_Joystick *joy = SDL_JoystickOpen(joysticks[controller].ID);
|
||||||
|
|
||||||
char format[128];
|
char format[128];
|
||||||
int hats = SDL_JoystickNumHats(joy);
|
int hats = SDL_JoystickNumHats(joy); // Get the number of sticks
|
||||||
bool waiting = true;
|
bool waiting = true;
|
||||||
bool succeed = false;
|
bool succeed = false;
|
||||||
int pressed = 0;
|
int pressed = 0;
|
||||||
|
@ -439,16 +507,6 @@ void ConfigBox::GetHats(int ID)
|
||||||
while(waiting)
|
while(waiting)
|
||||||
{
|
{
|
||||||
SDL_JoystickUpdate();
|
SDL_JoystickUpdate();
|
||||||
for(int b = 0; b < hats; b++)
|
|
||||||
{
|
|
||||||
if(SDL_JoystickGetHat(joy, b))
|
|
||||||
{
|
|
||||||
pressed = b;
|
|
||||||
waiting = false;
|
|
||||||
succeed = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
counter1++;
|
counter1++;
|
||||||
if(counter1==100)
|
if(counter1==100)
|
||||||
|
@ -473,69 +531,4 @@ void ConfigBox::GetHats(int ID)
|
||||||
SDL_JoystickClose(joy);
|
SDL_JoystickClose(joy);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wait for Analog
|
/////////////////////////////////////////////////////////// Configure button mapping
|
||||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
|
||||||
void ConfigBox::GetAxis(wxCommandEvent& event)
|
|
||||||
{
|
|
||||||
int ID = event.GetId();
|
|
||||||
int controller = notebookpage;
|
|
||||||
|
|
||||||
SDL_Joystick *joy;
|
|
||||||
joy=SDL_JoystickOpen(joysticks[controller].ID);
|
|
||||||
|
|
||||||
char format[128];
|
|
||||||
int axes = SDL_JoystickNumAxes(joy);
|
|
||||||
bool waiting = true;
|
|
||||||
bool succeed = false;
|
|
||||||
int pressed = 0;
|
|
||||||
Sint16 value;
|
|
||||||
|
|
||||||
int counter1 = 0;
|
|
||||||
int counter2 = 10;
|
|
||||||
|
|
||||||
sprintf(format, "[%d]", counter2);
|
|
||||||
SetButtonText(ID, format);
|
|
||||||
wxWindow::Update(); // win only? doesnt seem to work in linux...
|
|
||||||
|
|
||||||
while(waiting)
|
|
||||||
{
|
|
||||||
// Go through all axes and read out their values
|
|
||||||
SDL_JoystickUpdate();
|
|
||||||
for(int b = 0; b < axes; b++)
|
|
||||||
{
|
|
||||||
value = SDL_JoystickGetAxis(joy, b);
|
|
||||||
if(value < -10000 || value > 10000) // Avoid detecting small values
|
|
||||||
{
|
|
||||||
pressed = b;
|
|
||||||
waiting = false;
|
|
||||||
succeed = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stop waiting for a button
|
|
||||||
counter1++;
|
|
||||||
if(counter1 == 100)
|
|
||||||
{
|
|
||||||
counter1=0;
|
|
||||||
counter2--;
|
|
||||||
|
|
||||||
sprintf(format, "[%d]", counter2);
|
|
||||||
SetButtonText(ID, format);
|
|
||||||
wxWindow::Update(); // win only? doesnt seem to work in linux...
|
|
||||||
|
|
||||||
if(counter2<0)
|
|
||||||
waiting = false;
|
|
||||||
}
|
|
||||||
SLEEP(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
sprintf(format, "%d", succeed ? pressed : -1); // Update the status text box
|
|
||||||
SetButtonText(ID, format);
|
|
||||||
|
|
||||||
if(SDL_JoystickOpened(joysticks[controller].ID)) // Close the handle
|
|
||||||
SDL_JoystickClose(joy);
|
|
||||||
|
|
||||||
// Update the axises for the advanced settings status
|
|
||||||
GetControllerAll(controller);
|
|
||||||
}
|
|
|
@ -47,14 +47,18 @@
|
||||||
// Variables guide
|
// Variables guide
|
||||||
/* ¯¯¯¯¯¯¯¯¯
|
/* ¯¯¯¯¯¯¯¯¯
|
||||||
|
|
||||||
The arrays joysticks[] and joystate[] are numbered 0 to 3 for the four different virtual
|
Joyinfo: A hardcoded struct of with gamepad info that is populate by Search_Devices()
|
||||||
controllers. Joysticks[].ID will have the number of the inputs device mapped to that controller,
|
Joysticks: A custom struct with the button mapping
|
||||||
this value can be between 0 and the total number of connected physical devices. The mapping
|
Joystate: A custom struct with the current button states
|
||||||
is initially done by PAD_Initialize(), but for the configuration we can remap them, like in
|
|
||||||
ConfigBox::ChangeJoystick().
|
|
||||||
|
|
||||||
The joyinfo[] array is for a certain physical device. It's therefore used as
|
The arrays joysticks[] and joystate[] are numbered 0 to 3 for the four different virtual
|
||||||
joyinfo[joysticks[controller].ID].
|
controllers. Joysticks[].ID will have the number of the physical input device mapped to that
|
||||||
|
controller (this value range between 0 and the total number of connected physical devices). The
|
||||||
|
mapping of a certain physical device to joystate[].joy is initially done by Initialize(), but
|
||||||
|
for the configuration we can remap that, like in ConfigBox::ChangeJoystick().
|
||||||
|
|
||||||
|
The joyinfo[] array holds the physical gamepad info for a certain physical device. It's therefore
|
||||||
|
used as joyinfo[joysticks[controller].ID] if we want to get the joyinfo for a certain joystick.
|
||||||
|
|
||||||
////////////////////////*/
|
////////////////////////*/
|
||||||
|
|
||||||
|
@ -181,11 +185,6 @@ void SetDllGlobals(PLUGIN_GLOBALS* _pPluginGlobals) {
|
||||||
void DllConfig(HWND _hParent)
|
void DllConfig(HWND _hParent)
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if (SDL_Init(SDL_INIT_JOYSTICK ) < 0)
|
|
||||||
{
|
|
||||||
MessageBox(NULL, SDL_GetError(), "Could not initialize SDL!", MB_ICONERROR);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start the pads so we can use them in the configuration and advanced controls
|
// Start the pads so we can use them in the configuration and advanced controls
|
||||||
if(!emulator_running)
|
if(!emulator_running)
|
||||||
|
@ -234,17 +233,19 @@ void DllDebugger(HWND _hParent, bool Show) {
|
||||||
void Initialize(void *init)
|
void Initialize(void *init)
|
||||||
{
|
{
|
||||||
SPADInitialize _PADInitialize = *(SPADInitialize*)init;
|
SPADInitialize _PADInitialize = *(SPADInitialize*)init;
|
||||||
emulator_running = TRUE;
|
emulator_running = true;
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
DEBUG_INIT();
|
DEBUG_INIT();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (SDL_Init(SDL_INIT_JOYSTICK) < 0)
|
/* SDL 1.3 use DirectInput instead of the old Microsoft Multimeda API, and with this we need
|
||||||
|
the SDL_INIT_VIDEO flag to */
|
||||||
|
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0)
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
MessageBox(NULL, SDL_GetError(), "Could not initialize SDL!", MB_ICONERROR);
|
MessageBox(NULL, SDL_GetError(), "Could not initialize SDL!", MB_ICONERROR);
|
||||||
#else
|
#else
|
||||||
printf("Could not initialize SDL! (%s)\n", SDL_GetError());
|
printf("Could not initialize SDL! (%s)\n", SDL_GetError());
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -333,15 +334,18 @@ int Search_Devices()
|
||||||
|
|
||||||
// Shutdown PAD (stop emulation)
|
// Shutdown PAD (stop emulation)
|
||||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
|
// Called from: The Dolphin Core
|
||||||
void Shutdown()
|
void Shutdown()
|
||||||
{
|
{
|
||||||
if (joysticks[0].enabled)
|
//if(!emulator_running) return;
|
||||||
|
|
||||||
|
if (joysticks[0].enabled && SDL_JoystickOpened(joysticks[0].ID))
|
||||||
SDL_JoystickClose(joystate[0].joy);
|
SDL_JoystickClose(joystate[0].joy);
|
||||||
if (joysticks[1].enabled)
|
if (joysticks[1].enabled && SDL_JoystickOpened(joysticks[1].ID))
|
||||||
SDL_JoystickClose(joystate[1].joy);
|
SDL_JoystickClose(joystate[1].joy);
|
||||||
if (joysticks[2].enabled)
|
if (joysticks[2].enabled && SDL_JoystickOpened(joysticks[2].ID))
|
||||||
SDL_JoystickClose(joystate[2].joy);
|
SDL_JoystickClose(joystate[2].joy);
|
||||||
if (joysticks[3].enabled)
|
if (joysticks[3].enabled && SDL_JoystickOpened(joysticks[3].ID))
|
||||||
SDL_JoystickClose(joystate[3].joy);
|
SDL_JoystickClose(joystate[3].joy);
|
||||||
|
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
|
@ -352,7 +356,7 @@ void Shutdown()
|
||||||
|
|
||||||
delete [] joyinfo;
|
delete [] joyinfo;
|
||||||
|
|
||||||
emulator_running = FALSE;
|
emulator_running = false;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#ifdef USE_RUMBLE_DINPUT_HACK
|
#ifdef USE_RUMBLE_DINPUT_HACK
|
||||||
|
@ -383,8 +387,10 @@ void PAD_Input(u8 _Key, u8 _UpDown)
|
||||||
void DoState(unsigned char **ptr, int mode) {
|
void DoState(unsigned char **ptr, int mode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set PAD status. This is called from SerialInterface_Devices.cpp
|
// Set PAD status.
|
||||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
|
// Called from: SerialInterface_Devices.cpp
|
||||||
|
// Function: Gives the current pad status to the Core
|
||||||
void PAD_GetStatus(u8 _numPAD, SPADStatus* _pPADStatus)
|
void PAD_GetStatus(u8 _numPAD, SPADStatus* _pPADStatus)
|
||||||
{
|
{
|
||||||
if (!joysticks[_numPAD].enabled)
|
if (!joysticks[_numPAD].enabled)
|
||||||
|
@ -456,12 +462,12 @@ void PAD_GetStatus(u8 _numPAD, SPADStatus* _pPADStatus)
|
||||||
|
|
||||||
if (joystate[_numPAD].buttons[CTL_A_BUTTON])
|
if (joystate[_numPAD].buttons[CTL_A_BUTTON])
|
||||||
{
|
{
|
||||||
_pPADStatus->button|=PAD_BUTTON_A;
|
_pPADStatus->button |= PAD_BUTTON_A;
|
||||||
_pPADStatus->analogA = 255; // Perhaps support pressure?
|
_pPADStatus->analogA = 255; // Perhaps support pressure?
|
||||||
}
|
}
|
||||||
if (joystate[_numPAD].buttons[CTL_B_BUTTON])
|
if (joystate[_numPAD].buttons[CTL_B_BUTTON])
|
||||||
{
|
{
|
||||||
_pPADStatus->button|=PAD_BUTTON_B;
|
_pPADStatus->button |= PAD_BUTTON_B;
|
||||||
_pPADStatus->analogB = 255; // Perhaps support pressure?
|
_pPADStatus->analogB = 255; // Perhaps support pressure?
|
||||||
}
|
}
|
||||||
if (joystate[_numPAD].buttons[CTL_X_BUTTON]) _pPADStatus->button|=PAD_BUTTON_X;
|
if (joystate[_numPAD].buttons[CTL_X_BUTTON]) _pPADStatus->button|=PAD_BUTTON_X;
|
||||||
|
@ -640,8 +646,11 @@ void ReadButton(int controller, int button)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Request joystick state. The input value "controller" is for a virtual controller 0 to 3.
|
// Request joystick state.
|
||||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
|
// Called from: PAD_GetStatus()
|
||||||
|
/* Function: Updates the joystate struct with the current pad status. The input value "controller" is
|
||||||
|
for a virtual controller 0 to 3. */
|
||||||
void GetJoyState(int controller)
|
void GetJoyState(int controller)
|
||||||
{
|
{
|
||||||
SDL_JoystickUpdate();
|
SDL_JoystickUpdate();
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#include "Common.h" // Common
|
#include "Common.h" // Common
|
||||||
#include "pluginspecs_pad.h"
|
#include "pluginspecs_pad.h"
|
||||||
#include "IniFile.h"
|
#include "IniFile.h"
|
||||||
|
//#include "ConsoleWindow.h"
|
||||||
|
|
||||||
#include "Config.h" // Local
|
#include "Config.h" // Local
|
||||||
|
|
||||||
|
@ -51,8 +52,6 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#pragma comment(lib, "SDL.lib")
|
|
||||||
#pragma comment(lib, "comctl32.lib")
|
|
||||||
#include <tchar.h>
|
#include <tchar.h>
|
||||||
#define _CRT_SECURE_NO_WARNINGS
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
#define DIRECTINPUT_VERSION 0x0800
|
#define DIRECTINPUT_VERSION 0x0800
|
||||||
|
@ -117,7 +116,7 @@ struct CONTROLLER_MAPPING{ // GC PAD MAPPING
|
||||||
int deadzone; // Deadzone... what else?
|
int deadzone; // Deadzone... what else?
|
||||||
int halfpress; // Halfpress... you know, like not fully pressed ;)...
|
int halfpress; // Halfpress... you know, like not fully pressed ;)...
|
||||||
int ID; // SDL joystick device ID
|
int ID; // SDL joystick device ID
|
||||||
int controllertype; // Joystick, Joystick no hat or a keyboard (perhaps a mouse later)
|
int controllertype; // Joystick, Joystick with no hat or a keyboard (perhaps a mouse later)
|
||||||
int eventnum; // Linux Event Number, Can't be found dynamically yet
|
int eventnum; // Linux Event Number, Can't be found dynamically yet
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -401,6 +401,7 @@ void PAD_GetStatus(u8 _numPAD, SPADStatus* _pPADStatus)
|
||||||
{
|
{
|
||||||
int TriggerValue = 0;
|
int TriggerValue = 0;
|
||||||
|
|
||||||
|
|
||||||
if(joysticks[_numPAD].buttons[a].c_str()[1] == '+')
|
if(joysticks[_numPAD].buttons[a].c_str()[1] == '+')
|
||||||
{
|
{
|
||||||
if(joystate[_numPAD].buttons[a] >= 0)
|
if(joystate[_numPAD].buttons[a] >= 0)
|
||||||
|
@ -411,6 +412,8 @@ void PAD_GetStatus(u8 _numPAD, SPADStatus* _pPADStatus)
|
||||||
if(joystate[_numPAD].buttons[a] <= 0)
|
if(joystate[_numPAD].buttons[a] <= 0)
|
||||||
TriggerValue = abs((255.0f / joysticks[_numPAD].sData[JoyNum].Min) * joystate[_numPAD].buttons[a]);
|
TriggerValue = abs((255.0f / joysticks[_numPAD].sData[JoyNum].Min) * joystate[_numPAD].buttons[a]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Analog L and R
|
// Analog L and R
|
||||||
if(a == CTL_L_SHOULDER)
|
if(a == CTL_L_SHOULDER)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue