forked from Dniel97/segatools
it finally, FINALLY works
This commit is contained in:
parent
3628395a9c
commit
cde1781b53
@ -416,19 +416,46 @@ static HRESULT touch_handle_start_auto_scan(const struct touch_req *req)
|
|||||||
static void touch_res_auto_scan(const bool *state)
|
static void touch_res_auto_scan(const bool *state)
|
||||||
{
|
{
|
||||||
struct touch_input_frame frame0;
|
struct touch_input_frame frame0;
|
||||||
//struct touch_input_frame frame1;
|
struct touch_input_frame frame1;
|
||||||
uint8_t data[24] = { 0 };
|
uint8_t dataR[24] = { 0 };
|
||||||
|
uint8_t dataL[24] = { 0 };
|
||||||
|
// this changes every input on a real board but
|
||||||
|
// the game doesn't seem to care about it...
|
||||||
uint8_t data2[9] = { 0x0d, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00 };
|
uint8_t data2[9] = { 0x0d, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00 };
|
||||||
|
uint8_t counter = 0;
|
||||||
|
|
||||||
frame0.cmd = 0x81;
|
frame0.cmd = 0x81;
|
||||||
frame0.count = input_frame_count_0++;
|
frame0.count = input_frame_count_0++;
|
||||||
input_frame_count_0 %= 0x7f;
|
input_frame_count_0 %= 0x7f;
|
||||||
|
|
||||||
|
frame1.cmd = 0x81;
|
||||||
|
frame1.count = input_frame_count_1++;
|
||||||
|
input_frame_count_1 %= 0x7f;
|
||||||
|
|
||||||
|
for (int i = 0; i < 24; i++) {
|
||||||
|
for (int j = 0; j < 5; j++) {
|
||||||
|
if (state[counter]) {
|
||||||
|
dataR[i] |= (1 << j);
|
||||||
|
}
|
||||||
|
if (state[counter+120]) {
|
||||||
|
dataL[i] |= (1 << j);
|
||||||
|
}
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
memcpy(frame0.data1, data, sizeof(data));
|
memcpy(frame0.data1, dataR, sizeof(dataR));
|
||||||
memcpy(frame0.data2, data2, sizeof(data2));
|
memcpy(frame0.data2, data2, sizeof(data2));
|
||||||
|
|
||||||
|
memcpy(frame1.data1, dataL, sizeof(dataL));
|
||||||
|
memcpy(frame1.data2, data2, sizeof(data2));
|
||||||
|
|
||||||
frame0.checksum = 0;
|
frame0.checksum = 0;
|
||||||
frame0.checksum = calc_checksum(&frame0, sizeof(frame0));
|
frame0.checksum = calc_checksum(&frame0, sizeof(frame0));
|
||||||
|
|
||||||
|
frame1.checksum = 0;
|
||||||
|
frame1.checksum = calc_checksum(&frame1, sizeof(frame1));
|
||||||
|
|
||||||
if (touch0_auto) {
|
if (touch0_auto) {
|
||||||
//dprintf("Wacca touch: Touch0 auto frame #%2hx sent\n", frame0.count);
|
//dprintf("Wacca touch: Touch0 auto frame #%2hx sent\n", frame0.count);
|
||||||
EnterCriticalSection(&touch0_lock);
|
EnterCriticalSection(&touch0_lock);
|
||||||
@ -439,7 +466,7 @@ static void touch_res_auto_scan(const bool *state)
|
|||||||
if (touch1_auto) {
|
if (touch1_auto) {
|
||||||
//dprintf("Wacca touch: Touch1 auto frame #%2hx sent\n", frame0.count);
|
//dprintf("Wacca touch: Touch1 auto frame #%2hx sent\n", frame0.count);
|
||||||
EnterCriticalSection(&touch1_lock);
|
EnterCriticalSection(&touch1_lock);
|
||||||
iobuf_write(&touch1_uart.readable, &frame0, sizeof(frame0));
|
iobuf_write(&touch1_uart.readable, &frame1, sizeof(frame1));
|
||||||
LeaveCriticalSection(&touch1_lock);
|
LeaveCriticalSection(&touch1_lock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,27 +6,15 @@
|
|||||||
|
|
||||||
#include "mercuryio/config.h"
|
#include "mercuryio/config.h"
|
||||||
|
|
||||||
/*
|
|
||||||
Wacca Default key binding
|
|
||||||
Inner left
|
|
||||||
Inner right
|
|
||||||
2nd inner left
|
|
||||||
2nd inner right
|
|
||||||
3rd inner left
|
|
||||||
3rd inner right
|
|
||||||
outer left
|
|
||||||
outer right
|
|
||||||
*/
|
|
||||||
|
|
||||||
static const int mercury_io_default_cells[] = {
|
static const int mercury_io_default_cells[] = {
|
||||||
'1','1','1','2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','7','7','8','8','8','9','9','9','0','0','0',
|
'1','1','1','2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','7','7','8','8','8','9','9','9','0','0','0',
|
||||||
'A','A','A','S','S','S','D','D','D','F','F','F','G','G','G','H','H','H','J','J','J','K','K','K','L','L','L',';',';',';',
|
|
||||||
'1','1','1','2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','7','7','8','8','8','9','9','9','0','0','0',
|
'1','1','1','2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','7','7','8','8','8','9','9','9','0','0','0',
|
||||||
'A','A','A','S','S','S','D','D','D','F','F','F','G','G','G','H','H','H','J','J','J','K','K','K','L','L','L',';',';',';',
|
|
||||||
'Q','Q','Q','W','W','W','E','E','E','R','R','R','T','T','T','Y','Y','Y','U','U','U','I','I','I','O','O','O','P','P','P',
|
'Q','Q','Q','W','W','W','E','E','E','R','R','R','T','T','T','Y','Y','Y','U','U','U','I','I','I','O','O','O','P','P','P',
|
||||||
'Z','Z','Z','X','X','X','C','C','C','V','V','V','B','B','B','N','N','N','M','M','M',',',',',',','.','.','.','/','/','/',
|
|
||||||
'Q','Q','Q','W','W','W','E','E','E','R','R','R','T','T','T','Y','Y','Y','U','U','U','I','I','I','O','O','O','P','P','P',
|
'Q','Q','Q','W','W','W','E','E','E','R','R','R','T','T','T','Y','Y','Y','U','U','U','I','I','I','O','O','O','P','P','P',
|
||||||
'Z','Z','Z','X','X','X','C','C','C','V','V','V','B','B','B','N','N','N','M','M','M',',',',',',','.','.','.','/','/','/',
|
'A','A','A','S','S','S','D','D','D','F','F','F','G','G','G','H','H','H','J','J','J','K','K','K','L','L','L',VK_OEM_1,VK_OEM_1,VK_OEM_1,
|
||||||
|
'A','A','A','S','S','S','D','D','D','F','F','F','G','G','G','H','H','H','J','J','J','K','K','K','L','L','L',VK_OEM_1,VK_OEM_1,VK_OEM_1,
|
||||||
|
'Z','Z','Z','X','X','X','C','C','C','V','V','V','B','B','B','N','N','N','M','M','M',VK_OEM_COMMA,VK_OEM_COMMA,VK_OEM_COMMA,VK_OEM_PERIOD,VK_OEM_PERIOD,VK_OEM_PERIOD,VK_OEM_2,VK_OEM_2,VK_OEM_2,
|
||||||
|
'Z','Z','Z','X','X','X','C','C','C','V','V','V','B','B','B','N','N','N','M','M','M',VK_OEM_COMMA,VK_OEM_COMMA,VK_OEM_COMMA,VK_OEM_PERIOD,VK_OEM_PERIOD,VK_OEM_PERIOD,VK_OEM_2,VK_OEM_2,VK_OEM_2,
|
||||||
};
|
};
|
||||||
|
|
||||||
void mercury_io_config_load(
|
void mercury_io_config_load(
|
||||||
|
Loading…
Reference in New Issue
Block a user