mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
GC Controller: Added analog mode 0 for Luigi's Mansion
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3324 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
4f057ecb0b
commit
47c69e5f5a
@ -44,6 +44,8 @@ CSIDevice_GCController::CSIDevice_GCController(int _iDeviceNumber) :
|
|||||||
m_origin.uSubStickStickY = 0x80;
|
m_origin.uSubStickStickY = 0x80;
|
||||||
m_origin.uTrigger_L = 0x1F; // 0-30 is the lower deadzone
|
m_origin.uTrigger_L = 0x1F; // 0-30 is the lower deadzone
|
||||||
m_origin.uTrigger_R = 0x1F;
|
m_origin.uTrigger_R = 0x1F;
|
||||||
|
// I'm borrowing this variable for the PadAnalogMode
|
||||||
|
m_origin.unk_1 = 3; // Mode 3 as default
|
||||||
}
|
}
|
||||||
|
|
||||||
int CSIDevice_GCController::RunBuffer(u8* _pBuffer, int _iLength)
|
int CSIDevice_GCController::RunBuffer(u8* _pBuffer, int _iLength)
|
||||||
@ -148,10 +150,25 @@ CSIDevice_GCController::GetData(u32& _Hi, u32& _Low)
|
|||||||
_Hi |= 0x00800000; // F|RES: means that the pad must be "combined" with the origin to match the "final" OSPad-Struct
|
_Hi |= 0x00800000; // F|RES: means that the pad must be "combined" with the origin to match the "final" OSPad-Struct
|
||||||
//_Hi |= 0x20000000; // ?
|
//_Hi |= 0x20000000; // ?
|
||||||
|
|
||||||
|
if (m_origin.unk_1 == 0)
|
||||||
|
{
|
||||||
|
// Mode 0, 5, 6, 7
|
||||||
|
_Low = (u8)(PadStatus.analogB >> 4);
|
||||||
|
_Low |= (u32)((u8)(PadStatus.analogA >> 4) << 4);
|
||||||
|
_Low |= (u32)((u8)(PadStatus.triggerRight >> 4) << 8);
|
||||||
|
_Low |= (u32)((u8)(PadStatus.triggerLeft >> 4) << 12);
|
||||||
|
_Low |= (u32)((u8)(PadStatus.substickY) << 16);
|
||||||
|
_Low |= (u32)((u8)(PadStatus.substickX) << 24);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Mode 3
|
||||||
_Low = (u8)PadStatus.triggerRight;
|
_Low = (u8)PadStatus.triggerRight;
|
||||||
_Low |= (u32)((u8)PadStatus.triggerLeft << 8);
|
_Low |= (u32)((u8)PadStatus.triggerLeft << 8);
|
||||||
_Low |= (u32)((u8)PadStatus.substickY << 16);
|
_Low |= (u32)((u8)PadStatus.substickY << 16);
|
||||||
_Low |= (u32)((u8)PadStatus.substickX << 24);
|
_Low |= (u32)((u8)PadStatus.substickX << 24);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SetMic(PadStatus.MicButton); // This is dumb and should not be here
|
SetMic(PadStatus.MicButton); // This is dumb and should not be here
|
||||||
|
|
||||||
@ -179,6 +196,11 @@ CSIDevice_GCController::SendCommand(u32 _Cmd)
|
|||||||
unsigned int uStrength = command.Parameter2;
|
unsigned int uStrength = command.Parameter2;
|
||||||
if (pad->PAD_Rumble)
|
if (pad->PAD_Rumble)
|
||||||
pad->PAD_Rumble(ISIDevice::m_iDeviceNumber, uType, uStrength);
|
pad->PAD_Rumble(ISIDevice::m_iDeviceNumber, uType, uStrength);
|
||||||
|
|
||||||
|
// Set PadAnalogMode. Hopefully this will not be confused with rumble messages. Most games
|
||||||
|
// seems to always use uStrength = 3 for all rumble messages.
|
||||||
|
if (command.Parameter1 == 0 && command.Parameter2 == 0)
|
||||||
|
m_origin.unk_1 = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user