X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fplugins.c;h=87b574d442a7895dcf08ae3954ab412b28484496;hb=6fe8a1d4501485790b5a58f1a4c62130dd70afb4;hp=8d99be2d471cf2d3e66d7260a61a41ee3b925f66;hpb=a5e7ffa71b24529cc1d63f0bb85454c78dc112c8;p=pcsx_rearmed.git diff --git a/libpcsxcore/plugins.c b/libpcsxcore/plugins.c index 8d99be2d..87b574d4 100644 --- a/libpcsxcore/plugins.c +++ b/libpcsxcore/plugins.c @@ -630,6 +630,7 @@ void _PADstartPoll(PadDataS *pad) { switch (pad->controllerType) { case PSE_PAD_TYPE_MOUSE: stdpar[0] = 0x12; + stdpar[1] = 0x5a; stdpar[2] = pad->buttonStatus & 0xff; stdpar[3] = pad->buttonStatus >> 8; stdpar[4] = pad->moveX; @@ -639,6 +640,7 @@ void _PADstartPoll(PadDataS *pad) { break; case PSE_PAD_TYPE_NEGCON: // npc101/npc104(slph00001/slph00069) stdpar[0] = 0x23; + stdpar[1] = 0x5a; stdpar[2] = pad->buttonStatus & 0xff; stdpar[3] = pad->buttonStatus >> 8; stdpar[4] = pad->rightJoyX; @@ -691,6 +693,7 @@ void _PADstartPoll(PadDataS *pad) { break; case PSE_PAD_TYPE_ANALOGPAD: // scph1150 stdpar[0] = 0x73; + stdpar[1] = 0x5a; stdpar[2] = pad->buttonStatus & 0xff; stdpar[3] = pad->buttonStatus >> 8; stdpar[4] = pad->rightJoyX; @@ -702,6 +705,7 @@ void _PADstartPoll(PadDataS *pad) { break; case PSE_PAD_TYPE_ANALOGJOY: // scph1110 stdpar[0] = 0x53; + stdpar[1] = 0x5a; stdpar[2] = pad->buttonStatus & 0xff; stdpar[3] = pad->buttonStatus >> 8; stdpar[4] = pad->rightJoyX; @@ -712,8 +716,8 @@ void _PADstartPoll(PadDataS *pad) { respSize = 8; break; case PSE_PAD_TYPE_STANDARD: - default: stdpar[0] = 0x41; + stdpar[1] = 0x5a; stdpar[2] = pad->buttonStatus & 0xff; stdpar[3] = pad->buttonStatus >> 8; //avoid analog value in multitap mode if change pad type in game. @@ -723,6 +727,19 @@ void _PADstartPoll(PadDataS *pad) { stdpar[7] = 0xff; memcpy(buf, stdpar, 8); respSize = 8; + break; + default: + stdpar[0] = 0xff; + stdpar[1] = 0xff; + stdpar[2] = 0xff; + stdpar[3] = 0xff; + stdpar[4] = 0xff; + stdpar[5] = 0xff; + stdpar[6] = 0xff; + stdpar[7] = 0xff; + memcpy(buf, stdpar, 8); + respSize = 8; + break; } } @@ -759,7 +776,9 @@ unsigned char _PADpoll(int port, unsigned char value) { } //if no new request the pad return 0xff, for signaling connected - if (reqPos >= respSize) return 0xff; + if (reqPos >= respSize + && writeok + ) return 0xff; switch(reqPos){ case 2: @@ -774,8 +793,7 @@ unsigned char _PADpoll(int port, unsigned char value) { //mem the vibration value for Large motor; pad[port].Vib[1] = value; - if (in_type[port] == PSE_PAD_TYPE_STANDARD && - in_type[port] == PSE_PAD_TYPE_NEGCON) + if (in_type[port] != PSE_PAD_TYPE_ANALOGPAD) break; //vibration