fix MKDS touchscreen

This commit is contained in:
Arisotura
2023-06-16 23:42:03 +02:00
parent 9e3f71dca6
commit 58c275cf8c

View File

@ -72,7 +72,7 @@ namespace Retail
u16 FW_Data[16]; u16 FW_Data[16];
bool TS_Inited; int TS_Status;
u16 TS_Data[16]; u16 TS_Data[16];
u16 TS_NumSamples; u16 TS_NumSamples;
u16 TS_SamplePos[4]; u16 TS_SamplePos[4];
@ -113,7 +113,7 @@ void Reset()
{ {
memset(FW_Data, 0, sizeof(FW_Data)); memset(FW_Data, 0, sizeof(FW_Data));
TS_Inited = false; TS_Status = 0;
memset(TS_Data, 0, sizeof(TS_Data)); memset(TS_Data, 0, sizeof(TS_Data));
TS_NumSamples = 0; TS_NumSamples = 0;
memset(TS_SamplePos, 0, sizeof(TS_SamplePos)); memset(TS_SamplePos, 0, sizeof(TS_SamplePos));
@ -360,7 +360,7 @@ void OnIPCRequest_Touchscreen(u32 data)
case 1: // setup auto sampling case 1: // setup auto sampling
{ {
if (TS_Inited) if (TS_Status != 0)
{ {
SendIPCReply(0x6, 0x03008103); SendIPCReply(0x6, 0x03008103);
break; break;
@ -382,6 +382,8 @@ void OnIPCRequest_Touchscreen(u32 data)
break; break;
} }
TS_Status = 1;
TS_NumSamples = num; TS_NumSamples = num;
for (int i = 0; i < num; i++) for (int i = 0; i < num; i++)
{ {
@ -389,17 +391,25 @@ void OnIPCRequest_Touchscreen(u32 data)
TS_SamplePos[i] = ypos; TS_SamplePos[i] = ypos;
} }
TS_Inited = true; TS_Status = 2;
SendIPCReply(0x6, 0x03008100); SendIPCReply(0x6, 0x03008100);
} }
break; break;
case 2: // stop autosampling case 2: // stop autosampling
{ {
if (TS_Status != 2)
{
SendIPCReply(0x6, 0x03008103);
break;
}
TS_Status = 3;
// TODO CHECKME // TODO CHECKME
// Mario Kart uses this
// but this here is wrong
TS_NumSamples = 0; TS_NumSamples = 0;
TS_Status = 0;
SendIPCReply(0x6, 0x03008200); SendIPCReply(0x6, 0x03008200);
} }
break; break;