Cleaned up previous button binding MR for A & B buttons, added audible feedback for camera view changes.

This commit is contained in:
mark wallace
2025-03-25 00:05:28 +00:00
parent bcba2f1eae
commit 2fb88c56ef

View File

@@ -1669,54 +1669,54 @@ void CPad::AffectFromXinput(uint32 pad)
void CPad::UpdatePads(void) void CPad::UpdatePads(void)
{ {
bool bUpdate = true; bool bUpdate = true;
GetPad(0)->UpdateMouse(); GetPad(0)->UpdateMouse();
#ifdef XINPUT #ifdef XINPUT
GetPad(0)->AffectFromXinput(m_bMapPadOneToPadTwo ? 1 : 0); GetPad(0)->AffectFromXinput(m_bMapPadOneToPadTwo ? 1 : 0);
GetPad(1)->AffectFromXinput(m_bMapPadOneToPadTwo ? 0 : 1); GetPad(1)->AffectFromXinput(m_bMapPadOneToPadTwo ? 0 : 1);
#else #else
CapturePad(0); CapturePad(0);
#endif #endif
// Improve keyboard input latency part 1 // Improve keyboard input latency part 1
#ifdef FIX_BUGS #ifdef FIX_BUGS
OldKeyState = NewKeyState; OldKeyState = NewKeyState;
NewKeyState = TempKeyState; NewKeyState = TempKeyState;
#endif #endif
#ifdef DETECT_PAD_INPUT_SWITCH #ifdef DETECT_PAD_INPUT_SWITCH
if (GetPad(0)->PCTempJoyState.CheckForInput()) if (GetPad(0)->PCTempJoyState.CheckForInput())
IsAffectedByController = true; IsAffectedByController = true;
else { else {
#endif #endif
ControlsManager.ClearSimButtonPressCheckers(); ControlsManager.ClearSimButtonPressCheckers();
ControlsManager.AffectPadFromKeyBoard(); ControlsManager.AffectPadFromKeyBoard();
ControlsManager.AffectPadFromMouse(); ControlsManager.AffectPadFromMouse();
#ifdef DETECT_PAD_INPUT_SWITCH #ifdef DETECT_PAD_INPUT_SWITCH
} }
if (IsAffectedByController && (GetPad(0)->PCTempKeyState.CheckForInput() || GetPad(0)->PCTempMouseState.CheckForInput())) if (IsAffectedByController && (GetPad(0)->PCTempKeyState.CheckForInput() || GetPad(0)->PCTempMouseState.CheckForInput()))
IsAffectedByController = false; IsAffectedByController = false;
#endif #endif
if ( CReplay::IsPlayingBackFromFile() && !FrontEndMenuManager.m_bMenuActive ) if ( CReplay::IsPlayingBackFromFile() && !FrontEndMenuManager.m_bMenuActive )
bUpdate = false; bUpdate = false;
if ( bUpdate ) if ( bUpdate )
GetPad(0)->Update(0); GetPad(0)->Update(0);
#ifndef MASTER #ifndef MASTER
GetPad(1)->Update(1); GetPad(1)->Update(1);
#else #else
GetPad(1)->NewState.Clear(); GetPad(1)->NewState.Clear();
GetPad(1)->OldState.Clear(); GetPad(1)->OldState.Clear();
#endif #endif
// Improve keyboard input latency part 2 // Improve keyboard input latency part 2
#ifndef FIX_BUGS #ifndef FIX_BUGS
OldKeyState = NewKeyState; OldKeyState = NewKeyState;
NewKeyState = TempKeyState; NewKeyState = TempKeyState;
#endif #endif
} }
@@ -1727,391 +1727,430 @@ void CPad::ProcessPCSpecificStuff(void)
void CPad::Update(int16 pad) void CPad::Update(int16 pad)
{ {
OldState = NewState; OldState = NewState;
#ifdef GTA_PS2 #ifdef GTA_PS2
bObsoleteControllerMessage = false; bObsoleteControllerMessage = false;
int id; //int iPressureBtn;
int ext_id=0; int id;
int state; int ext_id=0;
int rterm_id = 0; int state;
unsigned short paddata, tpad; int rterm_id = 0;
unsigned char rdata[32]; unsigned short paddata, tpad;
unsigned char rdata[32];
state = scePadGetState(pad, 0); state = scePadGetState(pad, 0);
switch(Phase) switch(Phase)
{ {
case 0: case 0:
if (state != scePadStateStable && state != scePadStateFindCTP1) if (state != scePadStateStable && state != scePadStateFindCTP1)
break; break;
id = scePadInfoMode(pad, 0, InfoModeCurID, 0); id = scePadInfoMode(pad, 0, InfoModeCurID, 0);
if (id==0) break; if (id==0) break;
ext_id = scePadInfoMode(pad, 0, InfoModeCurExID, 0); ext_id = scePadInfoMode(pad, 0, InfoModeCurExID, 0);
if (ext_id>0) id = ext_id; if (ext_id>0) id = ext_id;
switch(id) switch(id)
{ {
case 4: // Digital controller case 4: // Digital controller
Phase = 40; // Try for analog(dualshock) Phase = 40; // Try for analog(dualshock)
break; break;
case 7: // Dualshock2 controller case 7: // Dualshock2 controller
Phase = 50; Phase = 50;
break; break;
default: default:
Phase = 99; Phase = 99;
break; break;
} }
break; break;
// Analog Controller (old dualshock) // Analog Controller (old dualshock)
case 40: // Analog Contoller check valid (otherwise fail phase) case 40: // Analog Contoller check valid (otherwise fail phase)
if (scePadInfoMode(pad, 0, InfoModeIdTable, -1)==0) if (scePadInfoMode(pad, 0, InfoModeIdTable, -1)==0)
{ {
Phase = 99; Phase = 99;
break; break;
} }
Phase++; Phase++;
case 41: // Analog controller: Request Lock analog mode (asynchronous) case 41: // Analog controller: Request Lock analog mode (asynchronous)
if (scePadSetMainMode(pad, 0, 1, 3)==1) Phase++; if (scePadSetMainMode(pad, 0, 1, 3)==1) Phase++;
break; break;
case 42: // Analog controller: Check state of previous request case 42: // Analog controller: Check state of previous request
if (scePadGetReqState(pad, 0)==scePadReqStateFaild) if (scePadGetReqState(pad, 0)==scePadReqStateFaild)
{ {
Phase--; Phase--;
} }
if (scePadGetReqState(pad, 0)==scePadReqStateComplete) if (scePadGetReqState(pad, 0)==scePadReqStateComplete)
{ {
// Lock mode complete // Lock mode complete
Phase=0; // Accept normal dualshock Phase=0; // Accept normal dualshock
} }
break; break;
// DualShock 2 Controller // DualShock 2 Controller
case 50: // Analog Contoller check valid (otherwise fail phase) case 50: // Analog Contoller check valid (otherwise fail phase)
if (scePadInfoMode(pad, 0, InfoModeIdTable, -1)==0) if (scePadInfoMode(pad, 0, InfoModeIdTable, -1)==0)
{ {
Phase = 99; Phase = 99;
break; break;
} }
Phase++; Phase++;
case 51: // Analog controller: Request Lock analog mode (asynchronous) case 51: // Analog controller: Request Lock analog mode (asynchronous)
if (scePadSetMainMode(pad, 0, 1, 3)==1) Phase++; if (scePadSetMainMode(pad, 0, 1, 3)==1) Phase++;
break; break;
case 52: // Analog controller: Check state of previous request case 52: // Analog controller: Check state of previous request
if (scePadGetReqState(pad, 0)==scePadReqStateFaild) if (scePadGetReqState(pad, 0)==scePadReqStateFaild)
{ {
Phase--; Phase--;
} }
if (scePadGetReqState(pad, 0)==scePadReqStateComplete) if (scePadGetReqState(pad, 0)==scePadReqStateComplete)
{ {
// Lock mode complete // Lock mode complete
Phase=0; // Accept normal dualshock Phase=0; // Accept normal dualshock
} }
break; break;
case 70: // DualShock 2 check pressure sensitive possible case 70: // DualShock 2 check pressure sensitive possible
if (scePadInfoPressMode(pad, 0)==1) if (scePadInfoPressMode(pad, 0)==1)
{ {
Phase = 76; Phase = 76;
break; break;
} }
Phase = 99; Phase = 99;
break; break;
case 76: // DualShock2 enable pressure sensitive mode (asynchronous function) case 76: // DualShock2 enable pressure sensitive mode (asynchronous function)
if (scePadEnterPressMode(pad, 0)==1) Phase++; if (scePadEnterPressMode(pad, 0)==1) Phase++;
break; break;
case 77: // Dualshock2 check status of request pressure sensitive mode case 77: // Dualshock2 check status of request pressure sensitive mode
if (scePadGetReqState(pad, 0)==scePadReqStateFaild) Phase--; if (scePadGetReqState(pad, 0)==scePadReqStateFaild) Phase--;
if (scePadGetReqState(pad, 0)==scePadReqStateComplete) if (scePadGetReqState(pad, 0)==scePadReqStateComplete)
{ {
Phase=80; Phase=80;
} }
break; break;
// DualShock 2 Controller // DualShock 2 Controller
case 80: // Set motors case 80: // Set motors
if (scePadInfoAct(pad, 0, -1, 0)==0) if (scePadInfoAct(pad, 0, -1, 0)==0)
{ {
Phase = 99; Phase = 99;
} }
act_align[0] = 0; // Offset 0 for motor0 act_align[0] = 0; // Offset 0 for motor0
act_align[1] = 1; // Offset 1 for motor1 act_align[1] = 1; // Offset 1 for motor1
act_align[2] = 0xff; act_align[2] = 0xff;
act_align[3] = 0xff; act_align[3] = 0xff;
act_align[4] = 0xff; act_align[4] = 0xff;
act_align[5] = 0xff; act_align[5] = 0xff;
// Asynchronous function // Asynchronous function
if (scePadSetActAlign(pad, 0, act_align)==0) break; if (scePadSetActAlign(pad, 0, act_align)==0) break;
Phase++; Phase++;
break; break;
case 81:
if ( scePadGetState(pad, 0) != scePadStateExecCmd )
{
Phase = 99;
}
break;
default: case 81:
if ( state == scePadStateError ) break; if ( scePadGetState(pad, 0) != scePadStateExecCmd )
{
Phase = 99;
}
if ( state == scePadStateStable || state == scePadStateFindCTP1 ) break;
{
if ( ShakeDur )
{
ShakeDur = Max(ShakeDur - (int32)CTimer::GetTimeStepInMilliseconds(), 0);
if ( ShakeDur == 0 ) default:
{ if ( state == scePadStateError ) break;
act_direct[0] = 0;
act_direct[1] = 0;
scePadSetActDirect(pad, 0, act_direct);
}
else
{
act_direct[0] = 0;
act_direct[1] = (unsigned char) ShakeFreq;
scePadSetActDirect(pad, 0, act_direct);
}
}
if (scePadRead( pad, 0, rdata )==0) if ( state == scePadStateStable || state == scePadStateFindCTP1 )
{ {
NewState.Clear(); if ( ShakeDur )
break; {
} ShakeDur = Max(ShakeDur - (int32)CTimer::GetTimeStepInMilliseconds(), 0);
if ((rdata[0] == 0)) if ( ShakeDur == 0 )
{ {
paddata = (unsigned short) ( 0xffff ^ ((rdata[2]<<8)|rdata[3]) ); act_direct[0] = 0;
rterm_id = (rdata[1]); act_direct[1] = 0;
scePadSetActDirect(pad, 0, act_direct);
}
else
{
act_direct[0] = 0;
act_direct[1] = (unsigned char) ShakeFreq;
scePadSetActDirect(pad, 0, act_direct);
}
}
if ( (rterm_id>>4) == 7 ) // DUALSHOCK if (scePadRead( pad, 0, rdata )==0)
{ {
if (!CRecordDataForGame::IsPlayingBack() && !CRecordDataForChase::ShouldThisPadBeLeftAlone(pad)) NewState.Clear();
{ break;
tpad = paddata; }
NewState.DPadUp = ( tpad & SCE_PADLup ) ? 255 : 0; if ((rdata[0] == 0))
NewState.DPadDown = ( tpad & SCE_PADLdown ) ? 255 : 0; {
NewState.DPadLeft = ( tpad & SCE_PADLleft ) ? 255 : 0; paddata = (unsigned short) ( 0xffff ^ ((rdata[2]<<8)|rdata[3]) );
NewState.DPadRight = ( tpad & SCE_PADLright ) ? 255 : 0; rterm_id = (rdata[1]);
NewState.Triangle = ( tpad & SCE_PADRup ) ? 255 : 0;
NewState.Cross = ( tpad & SCE_PADRdown ) ? 255 : 0;
NewState.Square = ( tpad & SCE_PADRleft ) ? 255 : 0;
NewState.Circle = ( tpad & SCE_PADRright ) ? 255 : 0;
NewState.Start = ( tpad & SCE_PADstart ) ? 255 : 0;
NewState.Select = ( tpad & SCE_PADselect ) ? 255 : 0;
NewState.LeftShoulder1 = ( tpad & SCE_PADL1 ) ? 255 : 0;
NewState.LeftShoulder2 = ( tpad & SCE_PADL2 ) ? 255 : 0;
NewState.RightShoulder1 = ( tpad & SCE_PADR1 ) ? 255 : 0;
NewState.RightShoulder2 = ( tpad & SCE_PADR2 ) ? 255 : 0;
NewState.LeftShock = ( tpad & SCE_PADi ) ? 255 : 0;
NewState.RightShock = ( tpad & SCE_PADj ) ? 255 : 0;
NewState.RightStickX = (short)rdata[4];
NewState.RightStickY = (short)rdata[5];
NewState.LeftStickX = (short)rdata[6];
NewState.LeftStickY = (short)rdata[7];
#define CLAMP_AXIS(x) (((x) < 43 && (x) >= -42) ? 0 : (((x) > 0) ? (Max((x)-42, 0)*127/85) : Min((x)+42, 0)*127/85)) if ( (rterm_id>>4) == 7 ) // DUALSHOCK
#define FIX_AXIS(x) CLAMP_AXIS((x)-128) {
if (!CRecordDataForGame::IsPlayingBack() && !CRecordDataForChase::ShouldThisPadBeLeftAlone(pad))
{
tpad = paddata;
NewState.RightStickX = FIX_AXIS(NewState.RightStickX); NewState.DPadUp = ( tpad & SCE_PADLup ) ? 255 : 0;
NewState.RightStickY = FIX_AXIS(NewState.RightStickY); NewState.DPadDown = ( tpad & SCE_PADLdown ) ? 255 : 0;
NewState.LeftStickX = FIX_AXIS(NewState.LeftStickX); NewState.DPadLeft = ( tpad & SCE_PADLleft ) ? 255 : 0;
NewState.LeftStickY = FIX_AXIS(NewState.LeftStickY); NewState.DPadRight = ( tpad & SCE_PADLright ) ? 255 : 0;
NewState.Triangle = ( tpad & SCE_PADRup ) ? 255 : 0;
NewState.Cross = ( tpad & SCE_PADRdown ) ? 255 : 0;
NewState.Square = ( tpad & SCE_PADRleft ) ? 255 : 0;
NewState.Circle = ( tpad & SCE_PADRright ) ? 255 : 0;
NewState.Start = ( tpad & SCE_PADstart ) ? 255 : 0;
NewState.Select = ( tpad & SCE_PADselect ) ? 255 : 0;
NewState.LeftShoulder1 = ( tpad & SCE_PADL1 ) ? 255 : 0;
NewState.LeftShoulder2 = ( tpad & SCE_PADL2 ) ? 255 : 0;
NewState.RightShoulder1 = ( tpad & SCE_PADR1 ) ? 255 : 0;
NewState.RightShoulder2 = ( tpad & SCE_PADR2 ) ? 255 : 0;
NewState.LeftShock = ( tpad & SCE_PADi ) ? 255 : 0;
NewState.RightShock = ( tpad & SCE_PADj ) ? 255 : 0;
NewState.RightStickX = (short)rdata[4];
NewState.RightStickY = (short)rdata[5];
NewState.LeftStickX = (short)rdata[6];
NewState.LeftStickY = (short)rdata[7];
#undef FIX_AXIS #define CLAMP_AXIS(x) (((x) < 43 && (x) >= -42) ? 0 : (((x) > 0) ? (Max((x)-42, 0)*127/85) : Min((x)+42, 0)*127/85))
#undef CLAMP_AXIS #define FIX_AXIS(x) CLAMP_AXIS((x)-128)
}
}
else if ( (rterm_id>>4) == 4 ) // Controller (digital)
{
if ( pad == 0 )
bObsoleteControllerMessage = true;
NewState.Clear();
}
if ( NewState.IsAnyButtonPressed() ) NewState.RightStickX = FIX_AXIS(NewState.RightStickX);
LastTimeTouched = CTimer::GetTimeInMilliseconds(); NewState.RightStickY = FIX_AXIS(NewState.RightStickY);
NewState.LeftStickX = FIX_AXIS(NewState.LeftStickX);
NewState.LeftStickY = FIX_AXIS(NewState.LeftStickY);
break; #undef FIX_AXIS
} #undef CLAMP_AXIS
}
}
else if ( (rterm_id>>4) == 4 ) // Controller (digital)
{
if ( pad == 0 )
bObsoleteControllerMessage = true;
NewState.Clear();
}
if ( ++iCurrHornHistory >= HORNHISTORY_SIZE ) if ( NewState.IsAnyButtonPressed() )
iCurrHornHistory = 0; LastTimeTouched = CTimer::GetTimeInMilliseconds();
bHornHistory[iCurrHornHistory] = GetHorn(); break;
NewState.Clear(); }
return;
}
break;
}
if ( pad == 0 ) if ( ++iCurrHornHistory >= HORNHISTORY_SIZE )
{ iCurrHornHistory = 0;
bOldDisplayNoControllerMessage = bDisplayNoControllerMessage;
if ( state == scePadStateDiscon )
{
bDisplayNoControllerMessage = true;
Phase = 0;
}
else
bDisplayNoControllerMessage = false;
}
if ( ++iCurrHornHistory >= HORNHISTORY_SIZE ) bHornHistory[iCurrHornHistory] = GetHorn();
iCurrHornHistory = 0; NewState.Clear();
return;
}
break;
}
bHornHistory[iCurrHornHistory] = GetHorn(); if ( pad == 0 )
{
bOldDisplayNoControllerMessage = bDisplayNoControllerMessage;
if ( state == scePadStateDiscon )
{
bDisplayNoControllerMessage = true;
Phase = 0;
}
else
bDisplayNoControllerMessage = false;
}
if ( !bDisplayNoControllerMessage ) if ( ++iCurrHornHistory >= HORNHISTORY_SIZE )
CGame::bDemoMode = false; iCurrHornHistory = 0;
bHornHistory[iCurrHornHistory] = GetHorn();
if ( !bDisplayNoControllerMessage )
CGame::bDemoMode = false;
#endif #endif
#if (defined GTA_PS2 || defined FIX_BUGS) #if (defined GTA_PS2 || defined FIX_BUGS)
if (!CRecordDataForGame::IsPlayingBack() && !CRecordDataForChase::ShouldThisPadBeLeftAlone(pad)) if (!CRecordDataForGame::IsPlayingBack() && !CRecordDataForChase::ShouldThisPadBeLeftAlone(pad))
#endif #endif
{ {
#ifdef RW_DC #ifdef RW_DC
if (((NewState.RightStickY > 64 && OldState.RightStickY > 64)) || ((NewState.RightStickY) < -64 && (OldState.RightStickY < -64))) if (((NewState.RightStickY > 64 && OldState.RightStickY > 64)) || ((NewState.RightStickY) < -64 && (OldState.RightStickY < -64)))
{ {
CPad::GetPad(0)->IsDualAnalog = true; // if (contMaple == nullptr)
} // CPad::GetPad(0)->IsDualAnalog = false;
// else
CPad::GetPad(0)->IsDualAnalog = true;
}
if (pad == 0) //CPad::IsDualAnalog = cont_has_capabilities(contMaple, CONT_CAPABILITIES_DUAL_ANALOG); //Query controller about Dual analog capabilities
{
if (contMaple == NULL) if (pad == 0)
{ {
CPad::GetPad(0)->IsDualAnalog = false; if (contMaple == NULL)
NewState.DPadUp = 0; {
NewState.DPadDown = 0; CPad::GetPad(0)->IsDualAnalog = false;
NewState.DPadLeft = 0; NewState.DPadUp = 0;
NewState.DPadRight = 0; NewState.DPadDown = 0;
NewState.A = 0; NewState.DPadLeft = 0;
NewState.B = 0; NewState.DPadRight = 0;
NewState.C = 0; NewState.A = 0;
NewState.D = 0; NewState.B = 0;
NewState.X = 0; NewState.C = 0;
NewState.Y = 0; NewState.D = 0;
NewState.Z = 0; NewState.X = 0;
NewState.Start = 0; NewState.Y = 0;
NewState.RightTrigger = 0; NewState.Z = 0;
NewState.LeftTrigger = 0; NewState.Start = 0;
NewState.LeftStickX = 0; NewState.RightTrigger = 0;
NewState.LeftStickY = 0; NewState.LeftTrigger = 0;
NewState.RightStickX = 0; NewState.LeftStickX = 0;
NewState.RightStickY = 0; NewState.LeftStickY = 0;
NewState.RightShock = 0; NewState.RightStickX = 0;
NewState.LeftShoulder1 = 0; NewState.RightStickY = 0;
NewState.Cross = 0; // Added for safety NewState.RightShock = 0;
NewState.LeftShoulder1 = 0;
NewState.Cross = 0; // Added for safety
NewState.Triangle = 0; // Added for safety NewState.Triangle = 0; // Added for safety
NewState.Circle = 0; // Added for safety NewState.Circle = 0; // Added for safety
NewState.Square = 0; // Added for safety NewState.Square = 0; // Added for safety
} }
else else
{ {
NewState.DPadUp = state->dpad_up; NewState.DPadUp = state->dpad_up; //This part could be inside a compiler directive to preserve the old code and just use this block if compil
NewState.DPadDown = state->dpad_down; NewState.DPadDown = state->dpad_down; //I also changed CControllerState inside Pad.h and created these values for DC controllers
NewState.DPadLeft = state->dpad_left; NewState.DPadLeft = state->dpad_left;
NewState.DPadRight = state->dpad_right; NewState.DPadRight = state->dpad_right;
NewState.A = state->a; NewState.A = state->a;
NewState.B = state->b; NewState.B = state->b;
NewState.C = state->c; NewState.C = state->c;
NewState.D = state->d; NewState.D = state->d;
NewState.X = state->x; NewState.X = state->x;
NewState.Y = state->y; NewState.Y = state->y;
NewState.Z = state->z; NewState.Z = state->z;
NewState.Start = state->start; NewState.Start = state->start;
NewState.RightTrigger = state->rtrig; NewState.RightTrigger = state->rtrig;
NewState.LeftTrigger = state->ltrig; NewState.LeftTrigger = state->ltrig;
NewState.LeftStickX = state->joyx; NewState.LeftStickX = state->joyx;
NewState.LeftStickY = state->joyy; NewState.LeftStickY = state->joyy;
NewState.RightStickX = state->joy2x; NewState.RightStickX = state->joy2x;
NewState.RightStickY = state->joy2y; NewState.RightStickY = state->joy2y;
NewState.RightShock = state->dpad_left; NewState.RightShock = state->dpad_left;
NewState.LeftShoulder1 = (state->rtrig > 128 && state->ltrig > 128) ? 255 : 0; NewState.LeftShoulder1 = (state->rtrig > 128 && state->ltrig > 128) ? 255 : 0;
// Add PS2-style A and B mappings, This may be the only solution for purchase items issue ?... // Add PS2-style A and B mappings, This may be the only solution for purchase items issue ?...
//Further more we can add other PS2 specific mapping here as certain `bool CPad::` functions are not available for mapping down below. //Further more we can add other PS2 specific mapping here as certain `bool CPad::` functions are not available for mapping down below.
NewState.Cross = NewState.A; // A -> Cross (accept/purchase) NewState.Cross = NewState.A; // A -> Cross (accept/purchase)
NewState.Triangle = NewState.B; // B -> Triangle (exit) NewState.Triangle = NewState.B; // B -> Triangle (exit)
NewState.Circle = NewState.X; // Optional: X -> Circle NewState.Circle = NewState.X; // Optional: X -> Circle
NewState.Square = NewState.Y; // Optional: Y -> Square NewState.Square = NewState.Y; // Optional: Y -> Square
} }
}
else }
{
NewState.DPadUp = 0; else
NewState.DPadDown = 0; {
NewState.DPadLeft = 0; NewState.DPadUp = 0;
NewState.DPadRight = 0; NewState.DPadDown = 0;
NewState.A = 0; NewState.DPadLeft = 0;
NewState.B = 0; NewState.DPadRight = 0;
NewState.C = 0; NewState.A = 0;
NewState.D = 0; NewState.B = 0;
NewState.X = 0; NewState.C = 0;
NewState.Y = 0; NewState.D = 0;
NewState.Z = 0; NewState.X = 0;
NewState.Start = 0; NewState.Y = 0;
NewState.RightTrigger = 0; NewState.Z = 0;
NewState.LeftTrigger = 0; NewState.Start = 0;
NewState.LeftStickX = 0; NewState.RightTrigger = 0;
NewState.LeftStickY = 0; NewState.LeftTrigger = 0;
NewState.RightStickX = 0; NewState.LeftStickX = 0;
NewState.RightStickY = 0; NewState.LeftStickY = 0;
NewState.RightShock = 0; NewState.RightStickX = 0;
NewState.LeftShoulder1 = 0; NewState.RightStickY = 0;
NewState.Cross = 0; // Added for safety NewState.RightShock = 0;
NewState.Triangle = 0; // Added for safety NewState.LeftShoulder1 = 0;
NewState.Circle = 0; // Added for safety NewState.Cross = 0; // Added for safety
NewState.Square = 0; // Added for safety NewState.Triangle = 0; // Added for safety
} NewState.Circle = 0; // Added for safety
NewState.Square = 0; // Added for safety
}
// if (old_contMaple == nullptr && contMaple != nullptr)
// {
// CPad::GetPad(0)->IsDualAnalog = false;
// NewState.DPadUp = 0;
// NewState.DPadDown = 0;
// NewState.DPadLeft = 0;
// NewState.DPadRight = 0;
// NewState.A = 0;
// NewState.B = 0;
// NewState.C = 0;
// NewState.D = 0;
// NewState.X = 0;
// NewState.Y = 0;
// NewState.Z = 0;
// NewState.Start = 0;
// NewState.RightTrigger = 0;
// NewState.LeftTrigger = 0;
// NewState.LeftStickX = 0;
// NewState.LeftStickY = 0;
// NewState.RightStickX = 0;
// NewState.RightStickY = 0;
// NewState.RightShock = 0;
// }
#else #else
NewState = ReconcileTwoControllersInput(PCTempKeyState, PCTempJoyState); NewState = ReconcileTwoControllersInput(PCTempKeyState, PCTempJoyState);
NewState = ReconcileTwoControllersInput(PCTempMouseState, NewState); NewState = ReconcileTwoControllersInput(PCTempMouseState, NewState);
#endif #endif
} }
PCTempJoyState.Clear(); PCTempJoyState.Clear();
PCTempKeyState.Clear(); PCTempKeyState.Clear();
PCTempMouseState.Clear(); PCTempMouseState.Clear();
ProcessPCSpecificStuff(); ProcessPCSpecificStuff();
if (NewState.CheckForInput()) if (NewState.CheckForInput())
LastTimeTouched = CTimer::GetTimeInMilliseconds(); LastTimeTouched = CTimer::GetTimeInMilliseconds();
if ( ++iCurrHornHistory >= HORNHISTORY_SIZE ) if ( ++iCurrHornHistory >= HORNHISTORY_SIZE )
iCurrHornHistory = 0; iCurrHornHistory = 0;
bHornHistory[iCurrHornHistory] = GetHorn(); bHornHistory[iCurrHornHistory] = GetHorn();
for (int32 i = DRUNK_STEERING_BUFFER_SIZE - 2; i >= 0; i--) { for (int32 i = DRUNK_STEERING_BUFFER_SIZE - 2; i >= 0; i--) {
SteeringLeftRightBuffer[i + 1] = SteeringLeftRightBuffer[i]; SteeringLeftRightBuffer[i + 1] = SteeringLeftRightBuffer[i];
} }
if ( !bDisplayNoControllerMessage ) if ( !bDisplayNoControllerMessage )
CGame::bDemoMode = false; CGame::bDemoMode = false;
if ( JustOutOfFrontend != 0 ) if ( JustOutOfFrontend != 0 )
--JustOutOfFrontend; --JustOutOfFrontend;
//auto old_contMaple = contMaple;
//auto n_dev = maple_enum_count();
contMaple = maple_enum_type(0, MAPLE_FUNC_CONTROLLER);
state = (cont_state_t *)maple_dev_status(contMaple);
contMaple = maple_enum_type(0, MAPLE_FUNC_CONTROLLER);
state = (cont_state_t *)maple_dev_status(contMaple);
} }
void CPad::DoCheats(void) void CPad::DoCheats(void)
@@ -3492,7 +3531,7 @@ bool CPad::CycleCameraModeJustDown(void)
case 0: //audible feedback when changing camera ? case 0: //audible feedback when changing camera ?
{ {
return !!(NewState.DPadUp && !OldState.DPadUp); result = !!(NewState.DPadUp && !OldState.DPadUp);
break; break;
} }
@@ -3514,7 +3553,7 @@ bool CPad::CycleCameraModeJustDown(void)
{ {
switch (CURMODE) switch (CURMODE)
{ {
case 1: case 1: //audible feedback when changing camera ?
{ {
result = !!(NewState.DPadUp && !OldState.DPadUp); result = !!(NewState.DPadUp && !OldState.DPadUp);
break; break;