mirror of
https://github.com/liuk7071/ChonkyStation.git
synced 2025-04-02 10:52:38 -04:00
45 lines
No EOL
932 B
C++
45 lines
No EOL
932 B
C++
#include "pad.h"
|
|
|
|
void pad::WriteTXDATA(uint8_t data) {
|
|
switch (data) {
|
|
case 0:
|
|
case 1: {
|
|
bytes_read = 0;
|
|
read_response = true;
|
|
rx_data_fifo[0] = 0xff;
|
|
break;
|
|
}
|
|
case 0x42:
|
|
case 0x43: {
|
|
bytes_read = 0;
|
|
read_response = true;
|
|
if ((joy_ctrl & 0x2002) == 2) {
|
|
rx_data_fifo[0] = 0x41;
|
|
rx_data_fifo[1] = 0x5A;
|
|
rx_data_fifo[2] = P1buttons & 0xff;
|
|
rx_data_fifo[3] = (P1buttons >> 8) & 0xff;
|
|
}
|
|
else if ((joy_ctrl & 0x2002) == 0x2002) {
|
|
rx_data_fifo[0] = 0x41;
|
|
rx_data_fifo[1] = 0x5A;
|
|
rx_data_fifo[2] = P2buttons & 0xff;
|
|
rx_data_fifo[3] = (P2buttons >> 8) & 0xff;
|
|
}
|
|
break;
|
|
}
|
|
case 0x03: break;
|
|
case 0x44: read_response = false; break;
|
|
case 0x4d: read_response = false; break;
|
|
case 0xff: break;
|
|
default:
|
|
printf("[PAD] Received unhandled command 0x%x\n", data);
|
|
exit(0);
|
|
}
|
|
}
|
|
|
|
uint8_t pad::ReadRXFIFO() {
|
|
if (read_response) {
|
|
return rx_data_fifo[bytes_read++];
|
|
}
|
|
else return 0;
|
|
} |