forked from Mirror/Ryujinx
Fix hid touch screen timestamp, add more log info
This commit is contained in:
parent
7d48886750
commit
8dcffe6a51
6 changed files with 36 additions and 7 deletions
|
@ -164,6 +164,8 @@ namespace Ryujinx.Core.Input
|
||||||
|
|
||||||
public void SetTouchPoints(params HidTouchPoint[] Points)
|
public void SetTouchPoints(params HidTouchPoint[] Points)
|
||||||
{
|
{
|
||||||
|
Logging.Debug("hid touch");
|
||||||
|
|
||||||
long LastEntry = ReadInt64(HidTouchScreenOffset + 0x10);
|
long LastEntry = ReadInt64(HidTouchScreenOffset + 0x10);
|
||||||
|
|
||||||
long CurrEntry = (LastEntry + 1) % HidEntryCount;
|
long CurrEntry = (LastEntry + 1) % HidEntryCount;
|
||||||
|
@ -178,9 +180,13 @@ namespace Ryujinx.Core.Input
|
||||||
|
|
||||||
long TouchEntryOffset = HidTouchScreenOffset + HidTouchHeaderSize;
|
long TouchEntryOffset = HidTouchScreenOffset + HidTouchHeaderSize;
|
||||||
|
|
||||||
|
long LastEntryOffset = TouchEntryOffset + LastEntry * HidTouchEntrySize;
|
||||||
|
|
||||||
|
long LastTimestamp = ReadInt64(LastEntryOffset);
|
||||||
|
|
||||||
TouchEntryOffset += CurrEntry * HidTouchEntrySize;
|
TouchEntryOffset += CurrEntry * HidTouchEntrySize;
|
||||||
|
|
||||||
WriteInt64(TouchEntryOffset + 0x0, Timestamp);
|
WriteInt64(TouchEntryOffset + 0x0, LastTimestamp + 1);
|
||||||
WriteInt64(TouchEntryOffset + 0x8, Points.Length);
|
WriteInt64(TouchEntryOffset + 0x8, Points.Length);
|
||||||
|
|
||||||
TouchEntryOffset += HidTouchEntryHeaderSize;
|
TouchEntryOffset += HidTouchEntryHeaderSize;
|
||||||
|
@ -220,6 +226,8 @@ namespace Ryujinx.Core.Input
|
||||||
|
|
||||||
if ((ulong)Position + 4 > AMemoryMgr.AddrSize) return;
|
if ((ulong)Position + 4 > AMemoryMgr.AddrSize) return;
|
||||||
|
|
||||||
|
Logging.Debug($"hid wr32 {Position:x8} {Value:x8}");
|
||||||
|
|
||||||
*((int*)((byte*)Ns.Ram + Position)) = Value;
|
*((int*)((byte*)Ns.Ram + Position)) = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,6 +237,8 @@ namespace Ryujinx.Core.Input
|
||||||
|
|
||||||
if ((ulong)Position + 8 > AMemoryMgr.AddrSize) return;
|
if ((ulong)Position + 8 > AMemoryMgr.AddrSize) return;
|
||||||
|
|
||||||
|
Logging.Debug($"hid wr64 {Position:x8} {Value:x16}");
|
||||||
|
|
||||||
*((long*)((byte*)Ns.Ram + Position)) = Value;
|
*((long*)((byte*)Ns.Ram + Position)) = Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -239,7 +239,19 @@ namespace Ryujinx.Core.OsHle
|
||||||
|
|
||||||
private void CpuTraceHandler(object sender, ACpuTraceEventArgs e)
|
private void CpuTraceHandler(object sender, ACpuTraceEventArgs e)
|
||||||
{
|
{
|
||||||
Logging.Trace($"Executing at 0x{e.Position:x16} {e.SubName}");
|
string NsoName = string.Empty;
|
||||||
|
|
||||||
|
for (int Index = Executables.Count - 1; Index >= 0; Index--)
|
||||||
|
{
|
||||||
|
if (e.Position >= Executables[Index].ImageBase)
|
||||||
|
{
|
||||||
|
NsoName = $"{(e.Position - Executables[Index].ImageBase):x16}";
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Logging.Trace($"Executing at 0x{e.Position:x16} {e.SubName} {NsoName}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void EnableCpuTracing()
|
public void EnableCpuTracing()
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
using ChocolArm64.Memory;
|
|
||||||
using Ryujinx.Core.OsHle.Ipc;
|
using Ryujinx.Core.OsHle.Ipc;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
|
@ -26,6 +26,7 @@ namespace Ryujinx.Core.OsHle.IpcServices.Hid
|
||||||
{ 121, GetNpadJoyHoldType },
|
{ 121, GetNpadJoyHoldType },
|
||||||
{ 200, GetVibrationDeviceInfo },
|
{ 200, GetVibrationDeviceInfo },
|
||||||
{ 203, CreateActiveVibrationDeviceList },
|
{ 203, CreateActiveVibrationDeviceList },
|
||||||
|
{ 206, SendVibrationValues }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,5 +105,10 @@ namespace Ryujinx.Core.OsHle.IpcServices.Hid
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long SendVibrationValues(ServiceCtx Context)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -532,6 +532,8 @@ namespace Ryujinx.Core.OsHle.IpcServices.NvServices
|
||||||
|
|
||||||
Context.Memory.WriteInt32(Position + 4, Handle);
|
Context.Memory.WriteInt32(Position + 4, Handle);
|
||||||
|
|
||||||
|
Logging.Info($"NvMap {Id} created with size {Size:x8}!");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -580,7 +582,7 @@ namespace Ryujinx.Core.OsHle.IpcServices.NvServices
|
||||||
NvMap.Kind = Kind;
|
NvMap.Kind = Kind;
|
||||||
}
|
}
|
||||||
|
|
||||||
Logging.Debug($"NvMapIocAlloc at {NvMap.Address:x16}");
|
Logging.Debug($"{NvMap.Address:x16}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ namespace Ryujinx
|
||||||
HidJoystickPosition LeftJoystick;
|
HidJoystickPosition LeftJoystick;
|
||||||
HidJoystickPosition RightJoystick;
|
HidJoystickPosition RightJoystick;
|
||||||
|
|
||||||
if (Keyboard[OpenTK.Input.Key.Escape]) this.Exit();
|
if (Keyboard[Key.Escape]) this.Exit();
|
||||||
|
|
||||||
int LeftJoystickDX = 0;
|
int LeftJoystickDX = 0;
|
||||||
int LeftJoystickDY = 0;
|
int LeftJoystickDY = 0;
|
||||||
|
@ -99,7 +99,7 @@ namespace Ryujinx
|
||||||
|
|
||||||
//Get screen touch position from left mouse click
|
//Get screen touch position from left mouse click
|
||||||
//OpenTK always captures mouse events, even if out of focus, so check if window is focused.
|
//OpenTK always captures mouse events, even if out of focus, so check if window is focused.
|
||||||
if (Focused && Mouse?.GetState().LeftButton == OpenTK.Input.ButtonState.Pressed)
|
if (Focused && Mouse?.GetState().LeftButton == ButtonState.Pressed)
|
||||||
{
|
{
|
||||||
int ScrnWidth = Width;
|
int ScrnWidth = Width;
|
||||||
int ScrnHeight = Height;
|
int ScrnHeight = Height;
|
||||||
|
|
Loading…
Reference in a new issue