X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=plugins%2Fdfinput%2Fpad.c;h=9a09563f965e2f6f92c957455492cb63c70ed955;hp=c52211717d8be24bc06b50a60f818625fad8eca9;hb=19e57cbf170d1ce49f00097f3cc3a4ed96d77374;hpb=384f5f43a20879e2553acd17b76e82059092fafb diff --git a/plugins/dfinput/pad.c b/plugins/dfinput/pad.c index c5221171..9a09563f 100644 --- a/plugins/dfinput/pad.c +++ b/plugins/dfinput/pad.c @@ -44,6 +44,7 @@ enum { static struct { uint8_t PadMode; uint8_t PadID; + uint8_t ConfigMode; PadDataS pad; } padstate[2]; @@ -111,11 +112,6 @@ static uint8_t do_cmd(void) CmdLen = 8; switch (CurCmd) { - case CMD_CONFIG_MODE: - buf = stdcfg[pad_num]; - if (stdcfg[pad_num][3] == 0xFF) return 0xF3; - else return padstate[pad_num].PadID; - case CMD_SET_MODE_AND_LOCK: buf = stdmode[pad_num]; return 0xF3; @@ -141,6 +137,13 @@ static uint8_t do_cmd(void) buf = unk4d[pad_num]; return 0xF3; + case CMD_CONFIG_MODE: + if (padstate[pad_num].ConfigMode) { + buf = stdcfg[pad_num]; + return 0xF3; + } + // else FALLTHROUGH + case CMD_READ_DATA_AND_VIBRATE: default: buf = stdpar[pad_num]; @@ -165,17 +168,7 @@ static void do_cmd2(unsigned char value) { switch (CurCmd) { case CMD_CONFIG_MODE: - switch (value) { - case 0: - buf[2] = 0; - buf[3] = 0; - break; - - case 1: - buf[2] = 0xFF; - buf[3] = 0xFF; - break; - } + padstate[CurPad].ConfigMode = value; break; case CMD_SET_MODE_AND_LOCK: @@ -230,17 +223,21 @@ static unsigned char PADpoll_(unsigned char value) { do_cmd2(value); if (CurByte >= CmdLen) - return 0; + return 0xff; // verified return buf[CurByte++]; } +#if 0 #include static unsigned char PADpoll(unsigned char value) { unsigned char b = CurByte, r = PADpoll_(value); printf("poll[%d] %02x %02x\n", b, value, r); return r; } +#else +#define PADpoll PADpoll_ +#endif /* hack.. */ extern long (*PAD1_readPort1)(PadDataS *pad);