summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2013-09-08 13:54:05 -0400
committerJasper St. Pierre <jstpierre@mecheye.net>2013-09-08 13:54:05 -0400
commit92c846de458150d516ce623147e1c8ff0bbb6551 (patch)
tree6ad3ac0de1400138d3b72e827a26d1081352693f /Source
parentba0c52b104c34755b5d7c27655b75816b98052aa (diff)
NetPlay: Use the correct pad mappings for rumble
Rename the functions around so we don't get confused again, too.
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/Src/HW/SI_DeviceDanceMat.cpp2
-rw-r--r--Source/Core/Core/Src/HW/SI_DeviceDanceMat.h2
-rw-r--r--Source/Core/Core/Src/HW/SI_DeviceGCController.cpp2
-rw-r--r--Source/Core/Core/Src/HW/SI_DeviceGCController.h2
-rw-r--r--Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.cpp4
-rw-r--r--Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.h2
-rw-r--r--Source/Core/Core/Src/NetPlayClient.cpp37
-rw-r--r--Source/Core/Core/Src/NetPlayClient.h3
8 files changed, 36 insertions, 18 deletions
diff --git a/Source/Core/Core/Src/HW/SI_DeviceDanceMat.cpp b/Source/Core/Core/Src/HW/SI_DeviceDanceMat.cpp
index 30237286e6..d21371fe36 100644
--- a/Source/Core/Core/Src/HW/SI_DeviceDanceMat.cpp
+++ b/Source/Core/Core/Src/HW/SI_DeviceDanceMat.cpp
@@ -231,7 +231,7 @@ void CSIDevice_DanceMat::SendCommand(u32 _Cmd, u8 _Poll)
unsigned int uStrength = command.Parameter2;
// get the correct pad number that should rumble locally when using netplay
- const u8 numPAD = NetPlay_GetPadNum(ISIDevice::m_iDeviceNumber);
+ const u8 numPAD = NetPlay_InGamePadToLocalPad(ISIDevice::m_iDeviceNumber);
if (numPAD < 4)
Pad::Rumble(numPAD, uType, uStrength);
diff --git a/Source/Core/Core/Src/HW/SI_DeviceDanceMat.h b/Source/Core/Core/Src/HW/SI_DeviceDanceMat.h
index b30c107847..7c413026ec 100644
--- a/Source/Core/Core/Src/HW/SI_DeviceDanceMat.h
+++ b/Source/Core/Core/Src/HW/SI_DeviceDanceMat.h
@@ -90,7 +90,7 @@ public:
// Send and Receive pad input from network
static bool NetPlay_GetInput(u8 numPAD, SPADStatus status, u32 *PADStatus);
- static u8 NetPlay_GetPadNum(u8 numPAD);
+ static u8 NetPlay_InGamePadToLocalPad(u8 numPAD);
// Return true on new data
virtual bool GetData(u32& _Hi, u32& _Low);
diff --git a/Source/Core/Core/Src/HW/SI_DeviceGCController.cpp b/Source/Core/Core/Src/HW/SI_DeviceGCController.cpp
index f6e0846b51..0c4bf48dcb 100644
--- a/Source/Core/Core/Src/HW/SI_DeviceGCController.cpp
+++ b/Source/Core/Core/Src/HW/SI_DeviceGCController.cpp
@@ -249,7 +249,7 @@ void CSIDevice_GCController::SendCommand(u32 _Cmd, u8 _Poll)
unsigned int uStrength = command.Parameter2;
// get the correct pad number that should rumble locally when using netplay
- const u8 numPAD = NetPlay_GetPadNum(ISIDevice::m_iDeviceNumber);
+ const u8 numPAD = NetPlay_InGamePadToLocalPad(ISIDevice::m_iDeviceNumber);
if (numPAD < 4)
Pad::Rumble(numPAD, uType, uStrength);
diff --git a/Source/Core/Core/Src/HW/SI_DeviceGCController.h b/Source/Core/Core/Src/HW/SI_DeviceGCController.h
index a43e5027ce..9673041c6f 100644
--- a/Source/Core/Core/Src/HW/SI_DeviceGCController.h
+++ b/Source/Core/Core/Src/HW/SI_DeviceGCController.h
@@ -90,7 +90,7 @@ public:
// Send and Receive pad input from network
static bool NetPlay_GetInput(u8 numPAD, SPADStatus status, u32 *PADStatus);
- static u8 NetPlay_GetPadNum(u8 numPAD);
+ static u8 NetPlay_InGamePadToLocalPad(u8 numPAD);
// Return true on new data
virtual bool GetData(u32& _Hi, u32& _Low);
diff --git a/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.cpp b/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.cpp
index 562a450422..4102d29193 100644
--- a/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.cpp
+++ b/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.cpp
@@ -254,7 +254,7 @@ void CSIDevice_GCSteeringWheel::SendCommand(u32 _Cmd, u8 _Poll)
unsigned int uType = command.Parameter2; // 06 = motor on, 04 = motor off
// get the correct pad number that should rumble locally when using netplay
- const u8 numPAD = NetPlay_GetPadNum(ISIDevice::m_iDeviceNumber);
+ const u8 numPAD = NetPlay_InGamePadToLocalPad(ISIDevice::m_iDeviceNumber);
if (numPAD < 4)
Pad::Motor(numPAD, uType, uStrength);
@@ -273,7 +273,7 @@ void CSIDevice_GCSteeringWheel::SendCommand(u32 _Cmd, u8 _Poll)
unsigned int uStrength = command.Parameter2;
// get the correct pad number that should rumble locally when using netplay
- const u8 numPAD = NetPlay_GetPadNum(ISIDevice::m_iDeviceNumber);
+ const u8 numPAD = NetPlay_InGamePadToLocalPad(ISIDevice::m_iDeviceNumber);
if (numPAD < 4)
Pad::Rumble(numPAD, uType, uStrength);
diff --git a/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.h b/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.h
index 2c539e56d4..2398b8f321 100644
--- a/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.h
+++ b/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.h
@@ -91,7 +91,7 @@ public:
// Send and Receive pad input from network
static bool NetPlay_GetInput(u8 numPAD, SPADStatus status, u32 *PADStatus);
- static u8 NetPlay_GetPadNum(u8 numPAD);
+ static u8 NetPlay_InGamePadToLocalPad(u8 numPAD);
// Return true on new data
virtual bool GetData(u32& _Hi, u32& _Low);
diff --git a/Source/Core/Core/Src/NetPlayClient.cpp b/Source/Core/Core/Src/NetPlayClient.cpp
index 7a3febe030..be259ae8af 100644
--- a/Source/Core/Core/Src/NetPlayClient.cpp
+++ b/Source/Core/Core/Src/NetPlayClient.cpp
@@ -515,7 +515,7 @@ bool NetPlayClient::GetNetPads(const u8 pad_nb, const SPADStatus* const pad_stat
// We should add this split between "in-game" pads and "local"
// pads higher up.
- int in_game_num = GetPadNum(pad_nb);
+ int in_game_num = InGamePadToLocalPad(pad_nb);
// If this in-game pad is one of ours, then update from the
// information given.
@@ -623,8 +623,25 @@ void NetPlayClient::Stop()
}
}
-// called from ---CPU--- thread
-u8 NetPlayClient::GetPadNum(u8 numPAD)
+u8 NetPlayClient::InGamePadToLocalPad(u8 ingame_pad)
+{
+ // not our pad
+ if (m_pad_map[ingame_pad] != m_local_player->pid)
+ return 4;
+
+ int local_pad = 0;
+ int pad = 0;
+
+ for (; pad < ingame_pad; pad++)
+ {
+ if (m_pad_map[pad] == m_local_player->pid)
+ local_pad++;
+ }
+
+ return local_pad;
+}
+
+u8 NetPlayClient::LocalPadToInGamePad(u8 local_pad)
{
// Figure out which in-game pad maps to which local pad.
// The logic we have here is that the local slots always
@@ -636,7 +653,7 @@ u8 NetPlayClient::GetPadNum(u8 numPAD)
if (m_pad_map[ingame_pad] == m_local_player->pid)
local_pad_count++;
- if (local_pad_count == numPAD)
+ if (local_pad_count == local_pad)
break;
}
@@ -681,24 +698,24 @@ u32 CEXIIPL::NetPlay_GetGCTime()
// called from ---CPU--- thread
// return the local pad num that should rumble given a ingame pad num
-u8 CSIDevice_GCController::NetPlay_GetPadNum(u8 numPAD)
+u8 CSIDevice_GCController::NetPlay_InGamePadToLocalPad(u8 numPAD)
{
std::lock_guard<std::mutex> lk(crit_netplay_client);
if (netplay_client)
- return netplay_client->GetPadNum(numPAD);
+ return netplay_client->InGamePadToLocalPad(numPAD);
else
return numPAD;
}
-u8 CSIDevice_GCSteeringWheel::NetPlay_GetPadNum(u8 numPAD)
+u8 CSIDevice_GCSteeringWheel::NetPlay_InGamePadToLocalPad(u8 numPAD)
{
- return CSIDevice_GCController::NetPlay_GetPadNum(numPAD);
+ return CSIDevice_GCController::NetPlay_InGamePadToLocalPad(numPAD);
}
-u8 CSIDevice_DanceMat::NetPlay_GetPadNum(u8 numPAD)
+u8 CSIDevice_DanceMat::NetPlay_InGamePadToLocalPad(u8 numPAD)
{
- return CSIDevice_GCController::NetPlay_GetPadNum(numPAD);
+ return CSIDevice_GCController::NetPlay_InGamePadToLocalPad(numPAD);
}
// called from ---CPU--- thread
diff --git a/Source/Core/Core/Src/NetPlayClient.h b/Source/Core/Core/Src/NetPlayClient.h
index d6b121a18d..fa53154b7e 100644
--- a/Source/Core/Core/Src/NetPlayClient.h
+++ b/Source/Core/Core/Src/NetPlayClient.h
@@ -82,7 +82,8 @@ public:
void WiimoteUpdate(int _number);
bool GetNetPads(const u8 pad_nb, const SPADStatus* const, NetPad* const netvalues);
- u8 GetPadNum(u8 numPAD);
+ u8 LocalPadToInGamePad(u8 localPad);
+ u8 InGamePadToLocalPad(u8 localPad);
protected:
void ClearBuffers();