diff --git a/Config/FFBPlugin.ini b/Config/FFBPlugin.ini index 31912a5..3c8717c 100644 --- a/Config/FFBPlugin.ini +++ b/Config/FFBPlugin.ini @@ -520,6 +520,12 @@ Gear4=99 Gear5=99 Gear6=99 +[Daytona Championship USA NSE] +GameId=59 +FeedbackLength=80 +EnableDamper=0 +DamperStrength=100 + [WMMT5] GameId=9 DefaultCentering=0 diff --git a/Dinput8Wrapper.vcxproj b/Dinput8Wrapper.vcxproj index 7484976..2a67e4a 100644 --- a/Dinput8Wrapper.vcxproj +++ b/Dinput8Wrapper.vcxproj @@ -26,6 +26,7 @@ + @@ -70,6 +71,7 @@ + diff --git a/Dinput8Wrapper.vcxproj.filters b/Dinput8Wrapper.vcxproj.filters index e84dfe7..25749e2 100644 --- a/Dinput8Wrapper.vcxproj.filters +++ b/Dinput8Wrapper.vcxproj.filters @@ -144,6 +144,7 @@ + @@ -336,6 +337,9 @@ Common Header Files + + Common Header Files + diff --git a/DllMain.cpp b/DllMain.cpp index 616f86c..a5ea08e 100644 --- a/DllMain.cpp +++ b/DllMain.cpp @@ -38,6 +38,7 @@ along with FFB Arcade Plugin.If not, see < https://www.gnu.org/licenses/>. #include "Game Files/CrazyTaxi.h" #include "Game Files/D1GP.h" #include "Game Files/Daytona3.h" +#include "Game Files/Daytona3NSE.h" #include "Game Files/DirtyDrivin.h" #include "Game Files/FordRacing.h" #include "Game Files/FordRacingOther.h" @@ -1023,6 +1024,7 @@ const int D1_GP = 55; const int WMMT_5DXPlus = 56; const int WMMT_5DX = 57; const int Crazy_Taxi = 58; +const int DAYTONA_3_NSE = 59; HINSTANCE Get_hInstance() { @@ -2316,6 +2318,9 @@ DWORD WINAPI FFBLoop(LPVOID lpParam) case DAYTONA_3: game = new Daytona3; break; + case DAYTONA_3_NSE: + game = new Daytona3NSE; + break; case SUPERMODEL_: game = new MAMESupermodel; break; diff --git a/Game Files/Daytona3NSE.cpp b/Game Files/Daytona3NSE.cpp new file mode 100644 index 0000000..1df6cea --- /dev/null +++ b/Game Files/Daytona3NSE.cpp @@ -0,0 +1,66 @@ +/*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 "Daytona3NSE.h" +extern int EnableDamper; +extern int DamperStrength; + +void Daytona3NSE::FFBLoop(EffectConstants* constants, Helpers* helpers, EffectTriggers* triggers) { + + UINT8 FFB = helpers->ReadByte(0x1334061, true); + + if (FFB >= 0xF8 && FFB <= 0xFF) + { + double percentForce = (256 - FFB) / 8.0; + triggers->Springi(percentForce); + } + + if (FFB >= 0xC4 && FFB <= 0xC7) + { + double percentForce = ((199 - FFB) / 4.0) / 6.0; + double percentLength = 100.0; + triggers->Sine(35, 0, percentForce); + triggers->Rumble(percentForce, percentForce, percentLength); + } + + if (FFB >= 0xD8 && FFB <= 0xDF) + { + double percentForce = (224 - FFB) / 8.0; + triggers->Friction(percentForce); + } + + if (FFB == 0xBD || FFB == 0xCD) + { + double percentForce = 0.35; + double percentLength = 100.0; + triggers->Sine(140, 0, percentForce); + triggers->Rumble(percentForce, percentForce, percentLength); + } + + if (FFB >= 0xA8 && FFB <= 0xAF) // Roll Left + { + double percentForce = (176 - FFB) / 8.0; + double percentLength = 100.0; + triggers->Rumble(0, percentForce, percentLength); + triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); + } + + if (FFB >= 0x98 && FFB <= 0x9F) // Roll Right + { + double percentForce = (160 - FFB) / 8.0; + double percentLength = 100.0; + triggers->Rumble(percentForce, 0, percentLength); + triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); + } +} \ No newline at end of file diff --git a/Game Files/Daytona3NSE.h b/Game Files/Daytona3NSE.h new file mode 100644 index 0000000..bc563a1 --- /dev/null +++ b/Game Files/Daytona3NSE.h @@ -0,0 +1,20 @@ +/*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/Game.h" +class Daytona3NSE : public Game { + +public: + void FFBLoop(EffectConstants* constants, Helpers* helpers, EffectTriggers* triggers); +}; \ No newline at end of file