+static unsigned char PADpoll_(int port, unsigned char value, int *more_data) {
+ if (reqPos < sizeof(pad[port].txData))
+ pad[port].txData[reqPos] = value;
+
+ if (reqPos == 0 && value != 0x42 && in_type[port] != PSE_PAD_TYPE_ANALOGPAD)
+ respSize = 1;
+
+ switch (in_type[port]) {
+ case PSE_PAD_TYPE_ANALOGPAD:
+ PADpoll_dualshock(port, value);
+ break;
+ case PSE_PAD_TYPE_GUN:
+ if (reqPos == 2)
+ pl_gun_byte2(port, value);
+ break;
+ }
+
+ *more_data = reqPos < respSize - 1;
+ if (reqPos >= respSize)
+ return 0xff; // no response/HiZ
+
+ return buf[reqPos++];
+}