aboutsummaryrefslogtreecommitdiff
path: root/plugins/dfinput
diff options
context:
space:
mode:
authornotaz2011-02-11 00:37:25 +0200
committernotaz2011-02-12 00:08:22 +0200
commitcdd215d36888fae919ebdf9fe9bd6580d807b8b6 (patch)
tree2165273cf9486132d180ea99cf2dd486c2e1e772 /plugins/dfinput
parent45d45c1e22620ef51023d0b8e09e85db9cb9380c (diff)
downloadpcsx_rearmed-cdd215d36888fae919ebdf9fe9bd6580d807b8b6.tar.gz
pcsx_rearmed-cdd215d36888fae919ebdf9fe9bd6580d807b8b6.tar.bz2
pcsx_rearmed-cdd215d36888fae919ebdf9fe9bd6580d807b8b6.zip
dfinput: fix CONFIG_MODE behavior
return config data when in config mode only (like LilyPad does)
Diffstat (limited to 'plugins/dfinput')
-rw-r--r--plugins/dfinput/pad.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/plugins/dfinput/pad.c b/plugins/dfinput/pad.c
index c522117..b01340a 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:
@@ -235,12 +228,16 @@ static unsigned char PADpoll_(unsigned char value) {
return buf[CurByte++];
}
+#if 0
#include <stdio.h>
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);