signal hid events

This commit is contained in:
emmaus 2018-11-17 11:31:10 +00:00
commit a4277032c4
5 changed files with 37 additions and 18 deletions

View file

@ -161,6 +161,9 @@ namespace Ryujinx.HLE.HOS.Services.Hid
SensorFusionParams = new HidSensorFusionParameters(); SensorFusionParams = new HidSensorFusionParameters();
AccelerometerParams = new HidAccelerometerParameters(); AccelerometerParams = new HidAccelerometerParameters();
VibrationValue = new HidVibrationValue(); VibrationValue = new HidVibrationValue();
// TODO: signal event at right place
XpadIdEvent.ReadableEvent.Signal();
} }
// CreateAppletResource(nn::applet::AppletResourceUserId) -> object<nn::hid::IAppletResource> // CreateAppletResource(nn::applet::AppletResourceUserId) -> object<nn::hid::IAppletResource>
@ -659,6 +662,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid
Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {AppletResourceUserId} - " + Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {AppletResourceUserId} - " +
$"NpadStyleSet: {NpadStyleSet}"); $"NpadStyleSet: {NpadStyleSet}");
NpadStyleSetUpdateEvent.ReadableEvent.Signal();
return 0; return 0;
} }
@ -1348,6 +1353,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid
Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle}"); Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle}");
PalmaOperationCompleteEvent.ReadableEvent.Signal();
return 0; return 0;
} }
@ -1392,6 +1399,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid
Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle} - " + Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle} - " +
$"Unknown0: {Unknown0}"); $"Unknown0: {Unknown0}");
PalmaOperationCompleteEvent.ReadableEvent.Signal();
return 0; return 0;
} }
@ -1404,6 +1413,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid
Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle} - " + Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle} - " +
$"FrModeType: {FrModeType}"); $"FrModeType: {FrModeType}");
PalmaOperationCompleteEvent.ReadableEvent.Signal();
return 0; return 0;
} }
@ -1426,6 +1437,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid
Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle} - " + Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle} - " +
$"EnabledPalmaStep: {EnabledPalmaStep}"); $"EnabledPalmaStep: {EnabledPalmaStep}");
PalmaOperationCompleteEvent.ReadableEvent.Signal();
return 0; return 0;
} }
@ -1436,6 +1449,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid
Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle}"); Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle}");
PalmaOperationCompleteEvent.ReadableEvent.Signal();
return 0; return 0;
} }
@ -1446,6 +1461,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid
Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle}"); Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {PalmaConnectionHandle}");
PalmaOperationCompleteEvent.ReadableEvent.Signal();
return 0; return 0;
} }
@ -1475,6 +1492,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid
$"Unknown0: {Unknown0} - " + $"Unknown0: {Unknown0} - " +
$"Unknown1: {Unknown1}"); $"Unknown1: {Unknown1}");
PalmaOperationCompleteEvent.ReadableEvent.Signal();
return 0; return 0;
} }

View file

@ -98,8 +98,8 @@ namespace Ryujinx.HLE.Input
long Timestamp = GetTimestamp(); long Timestamp = GetTimestamp();
Device.Memory.WriteInt64(TouchScreenOffset + 0x0, Timestamp); Device.Memory.WriteInt64(TouchScreenOffset + 0x00, Timestamp);
Device.Memory.WriteInt64(TouchScreenOffset + 0x8, HidEntryCount); Device.Memory.WriteInt64(TouchScreenOffset + 0x08, HidEntryCount);
Device.Memory.WriteInt64(TouchScreenOffset + 0x10, CurrEntry); Device.Memory.WriteInt64(TouchScreenOffset + 0x10, CurrEntry);
Device.Memory.WriteInt64(TouchScreenOffset + 0x18, HidEntryCount - 1); Device.Memory.WriteInt64(TouchScreenOffset + 0x18, HidEntryCount - 1);
Device.Memory.WriteInt64(TouchScreenOffset + 0x20, Timestamp); Device.Memory.WriteInt64(TouchScreenOffset + 0x20, Timestamp);
@ -112,8 +112,8 @@ namespace Ryujinx.HLE.Input
TouchEntryOffset += CurrEntry * HidTouchEntrySize; TouchEntryOffset += CurrEntry * HidTouchEntrySize;
Device.Memory.WriteInt64(TouchEntryOffset + 0x0, SampleCounter); Device.Memory.WriteInt64(TouchEntryOffset + 0x00, SampleCounter);
Device.Memory.WriteInt64(TouchEntryOffset + 0x8, Points.Length); Device.Memory.WriteInt64(TouchEntryOffset + 0x08, Points.Length);
TouchEntryOffset += HidTouchEntryHeaderSize; TouchEntryOffset += HidTouchEntryHeaderSize;
@ -123,9 +123,9 @@ namespace Ryujinx.HLE.Input
foreach (HidTouchPoint Point in Points) foreach (HidTouchPoint Point in Points)
{ {
Device.Memory.WriteInt64(TouchEntryOffset + 0x0, SampleCounter); Device.Memory.WriteInt64(TouchEntryOffset + 0x00, SampleCounter);
Device.Memory.WriteInt32(TouchEntryOffset + 0x8, Padding); Device.Memory.WriteInt32(TouchEntryOffset + 0x08, Padding);
Device.Memory.WriteInt32(TouchEntryOffset + 0xc, Index++); Device.Memory.WriteInt32(TouchEntryOffset + 0x0c, Index++);
Device.Memory.WriteInt32(TouchEntryOffset + 0x10, Point.X); Device.Memory.WriteInt32(TouchEntryOffset + 0x10, Point.X);
Device.Memory.WriteInt32(TouchEntryOffset + 0x14, Point.Y); Device.Memory.WriteInt32(TouchEntryOffset + 0x14, Point.Y);
Device.Memory.WriteInt32(TouchEntryOffset + 0x18, Point.DiameterX); Device.Memory.WriteInt32(TouchEntryOffset + 0x18, Point.DiameterX);

View file

@ -27,7 +27,7 @@ namespace Ryujinx.HLE.Input
Device.Memory.FillWithZeros(Offset, 0x5000); Device.Memory.FillWithZeros(Offset, 0x5000);
Device.Memory.WriteInt32(Offset + 0x0, (int)HidControllerType); Device.Memory.WriteInt32(Offset + 0x00, (int)HidControllerType);
} }
public abstract void SendInput( public abstract void SendInput(
@ -51,8 +51,8 @@ namespace Ryujinx.HLE.Input
long Timestamp = GetTimestamp(); long Timestamp = GetTimestamp();
Device.Memory.WriteInt64(ControllerOffset + 0x0, Timestamp); Device.Memory.WriteInt64(ControllerOffset + 0x00, Timestamp);
Device.Memory.WriteInt64(ControllerOffset + 0x8, HidEntryCount); Device.Memory.WriteInt64(ControllerOffset + 0x08, HidEntryCount);
Device.Memory.WriteInt64(ControllerOffset + 0x10, CurrEntry); Device.Memory.WriteInt64(ControllerOffset + 0x10, CurrEntry);
Device.Memory.WriteInt64(ControllerOffset + 0x18, HidEntryCount - 1); Device.Memory.WriteInt64(ControllerOffset + 0x18, HidEntryCount - 1);
@ -64,8 +64,8 @@ namespace Ryujinx.HLE.Input
long SampleCounter = Device.Memory.ReadInt64(LastEntryOffset) + 1; long SampleCounter = Device.Memory.ReadInt64(LastEntryOffset) + 1;
Device.Memory.WriteInt64(ControllerOffset + 0x0, SampleCounter); Device.Memory.WriteInt64(ControllerOffset + 0x00, SampleCounter);
Device.Memory.WriteInt64(ControllerOffset + 0x8, SampleCounter); Device.Memory.WriteInt64(ControllerOffset + 0x08, SampleCounter);
Device.Memory.WriteInt64(ControllerOffset + 0x10, (uint)Buttons); Device.Memory.WriteInt64(ControllerOffset + 0x10, (uint)Buttons);
Device.Memory.WriteInt32(ControllerOffset + 0x18, LeftStick.DX); Device.Memory.WriteInt32(ControllerOffset + 0x18, LeftStick.DX);

View file

@ -51,12 +51,12 @@
NpadColor SingleColorBody = NpadColor.Black; NpadColor SingleColorBody = NpadColor.Black;
NpadColor SingleColorButtons = NpadColor.Black; NpadColor SingleColorButtons = NpadColor.Black;
Device.Memory.WriteInt32(Offset + 0x4, IsHalf ? 1 : 0); Device.Memory.WriteInt32(Offset + 0x04, IsHalf ? 1 : 0);
if (IsHalf) if (IsHalf)
{ {
Device.Memory.WriteInt32(Offset + 0x8, (int)SingleColorDesc); Device.Memory.WriteInt32(Offset + 0x08, (int)SingleColorDesc);
Device.Memory.WriteInt32(Offset + 0xc, (int)SingleColorBody); Device.Memory.WriteInt32(Offset + 0x0c, (int)SingleColorBody);
Device.Memory.WriteInt32(Offset + 0x10, (int)SingleColorButtons); Device.Memory.WriteInt32(Offset + 0x10, (int)SingleColorButtons);
Device.Memory.WriteInt32(Offset + 0x14, (int)SplitColorDesc); Device.Memory.WriteInt32(Offset + 0x14, (int)SplitColorDesc);
} }

View file

@ -21,8 +21,8 @@
NpadColor SingleColorBody = NpadColor.Black; NpadColor SingleColorBody = NpadColor.Black;
NpadColor SingleColorButtons = NpadColor.Black; NpadColor SingleColorButtons = NpadColor.Black;
Device.Memory.WriteInt32(Offset + 0x8, (int)SingleColorDesc); Device.Memory.WriteInt32(Offset + 0x08, (int)SingleColorDesc);
Device.Memory.WriteInt32(Offset + 0xc, (int)SingleColorBody); Device.Memory.WriteInt32(Offset + 0x0c, (int)SingleColorBody);
Device.Memory.WriteInt32(Offset + 0x10, (int)SingleColorButtons); Device.Memory.WriteInt32(Offset + 0x10, (int)SingleColorButtons);
Device.Memory.WriteInt32(Offset + 0x14, (int)SplitColorDesc); Device.Memory.WriteInt32(Offset + 0x14, (int)SplitColorDesc);
@ -37,7 +37,7 @@
long ControllerOffset = WriteInput(Buttons, LeftStick, RightStick, HidControllerLayouts.Pro_Controller); long ControllerOffset = WriteInput(Buttons, LeftStick, RightStick, HidControllerLayouts.Pro_Controller);
Device.Memory.WriteInt64(ControllerOffset + 0x28, Device.Memory.WriteInt64(ControllerOffset + 0x28,
Connected ? (uint)HidControllerConnState.Controller_State_Connected : 0 | (Connected ? (uint)HidControllerConnState.Controller_State_Connected : 0) |
(Wired ? (uint)HidControllerConnState.Controller_State_Wired : 0)); (Wired ? (uint)HidControllerConnState.Controller_State_Wired : 0));
} }
} }