diff --git a/AutoSetup.cmd b/AutoSetup.cmd index 20ade77..172d6e5 100644 --- a/AutoSetup.cmd +++ b/AutoSetup.cmd @@ -42,6 +42,9 @@ cd.. cd Aliens Extermination rename dinput8.dll opengl32.dll cd.. +cd Arctic Thunder +rename dinput8.dll d3d9.dll +cd.. cd Batman rename dinput8.dll d3d11.dll cd.. diff --git a/Config/FFBPlugin.ini b/Config/FFBPlugin.ini index fc1fdc4..1089f1f 100644 --- a/Config/FFBPlugin.ini +++ b/Config/FFBPlugin.ini @@ -779,6 +779,15 @@ DoubleConstant=0 DoubleSpring=0 DoubleFriction=0 +[Arctic Thunder] +GameId=75 +FeedbackLength=500 +EnableDamper=0 +DamperStrength=100 +PowerMode=1 +EnableForceSpringEffect = 1; +ForceSpringStrength = 100; + [WMMT5] GameId=9 DefaultCentering=0 diff --git a/DInput8Wrapper.aps b/DInput8Wrapper.aps index 1fe3d31..cdfa4fb 100644 Binary files a/DInput8Wrapper.aps and b/DInput8Wrapper.aps differ diff --git a/DInput8Wrapper.rc b/DInput8Wrapper.rc index 3891c03..b83fc24 100644 Binary files a/DInput8Wrapper.rc and b/DInput8Wrapper.rc differ diff --git a/Dinput8Wrapper.vcxproj b/Dinput8Wrapper.vcxproj index c5adaec..d4964c7 100644 --- a/Dinput8Wrapper.vcxproj +++ b/Dinput8Wrapper.vcxproj @@ -24,6 +24,7 @@ + @@ -83,6 +84,7 @@ + diff --git a/Dinput8Wrapper.vcxproj.filters b/Dinput8Wrapper.vcxproj.filters index c545365..36df76a 100644 --- a/Dinput8Wrapper.vcxproj.filters +++ b/Dinput8Wrapper.vcxproj.filters @@ -159,6 +159,7 @@ + @@ -399,6 +400,9 @@ Common Header Files + + Common Header Files + diff --git a/DllMain.cpp b/DllMain.cpp index d8e0952..b3196aa 100644 --- a/DllMain.cpp +++ b/DllMain.cpp @@ -102,6 +102,7 @@ along with FFB Arcade Plugin.If not, see < https://www.gnu.org/licenses/>. #include "Game Files/Transformers.h" #include "Game Files/H2Overdrive.h" #include "Game Files/StormRacerG.h" +#include "Game Files/ArcticThunder.h" // typedefs typedef unsigned char U8; @@ -1066,6 +1067,7 @@ const int GRID_Custom = 71; const int MARIO_KART_GPDX_118_CUSTOM = 72; const int SEGA_SHOWDOWN = 73; const int SPRING_EFFECT = 74; +const int ARCTIC_THUNDER = 75; HINSTANCE Get_hInstance() { @@ -2590,6 +2592,9 @@ DWORD WINAPI FFBLoop(LPVOID lpParam) case SPRING_EFFECT: game = new SpringEffect; break; + case ARCTIC_THUNDER: + game = new ArcticThunder; + break; case TEST_GAME_CONST: case TEST_GAME_FRICTION: case TEST_GAME_SINE: diff --git a/Game Files/ArcticThunder.cpp b/Game Files/ArcticThunder.cpp new file mode 100644 index 0000000..85284c0 --- /dev/null +++ b/Game Files/ArcticThunder.cpp @@ -0,0 +1,56 @@ +/*This file is part of FFB Arcade Plugin. +FFB Arcade Plugin 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 3 of the License, or +(at your option) any later version. +FFB Arcade Plugin 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 FFB Arcade Plugin.If not, see < https://www.gnu.org/licenses/>. +*/ + +#include +#include "ArcticThunder.h" + +extern int EnableDamper; +extern int DamperStrength; +extern int EnableForceSpringEffect; +extern int ForceSpringStrength; + +void ArcticThunder::FFBLoop(EffectConstants* constants, Helpers* helpers, EffectTriggers* triggers) { + + if (EnableDamper) + triggers->Damper(DamperStrength / 100.0); + + if (EnableForceSpringEffect) + triggers->Springi(ForceSpringStrength / 100.0); + + if (GetTeknoParrotFFB2() != 0xFF && GetTeknoParrotFFB2()) + { + float FFBSine = (GetTeknoParrotFFB2() / 255.0); + triggers->Sine(50, 0, FFBSine); + triggers->Rumble(0, FFBSine, 100.0); + } + + int FFB = GetTeknoParrotFFB3(); + + if (FFB) + { + if (FFB > 0x80) + { + double percentForce = ((FFB - 128.0) / 127.0); + + triggers->Rumble(0, percentForce, 100.0); + triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); + } + else if (FFB < 0x80) + { + double percentForce = ((128.0 - FFB) / 127.0); + + triggers->Rumble(percentForce, 0, 100.0); + triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); + } + } +} \ No newline at end of file diff --git a/Game Files/ArcticThunder.h b/Game Files/ArcticThunder.h new file mode 100644 index 0000000..b9ed554 --- /dev/null +++ b/Game Files/ArcticThunder.h @@ -0,0 +1,21 @@ +/*This file is part of FFB Arcade Plugin. +FFB Arcade Plugin 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 3 of the License, or +(at your option) any later version. +FFB Arcade Plugin 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 FFB Arcade Plugin.If not, see < https://www.gnu.org/licenses/>. +*/ + +#pragma once +#include "../Common Files/TeknoParrotGame.h" + +class ArcticThunder : public TeknoParrotGame { +public: + ArcticThunder() : TeknoParrotGame() { } + void FFBLoop(EffectConstants* constants, Helpers* helpers, EffectTriggers* triggers); +}; \ No newline at end of file diff --git a/Version.txt b/Version.txt index 1821384..580ff66 100644 --- a/Version.txt +++ b/Version.txt @@ -1 +1 @@ -v2.0.0.37 \ No newline at end of file +v2.0.0.38 \ No newline at end of file