Fix hid touch screen timestamp, add more log info

This commit is contained in:
gdkchan 2018-03-04 00:06:44 -03:00
parent 7d48886750
commit 8dcffe6a51
6 changed files with 36 additions and 7 deletions

View file

@ -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;
TouchEntryOffset += CurrEntry * HidTouchEntrySize; long LastEntryOffset = TouchEntryOffset + LastEntry * HidTouchEntrySize;
WriteInt64(TouchEntryOffset + 0x0, Timestamp); long LastTimestamp = ReadInt64(LastEntryOffset);
TouchEntryOffset += CurrEntry * HidTouchEntrySize;
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;
} }
} }

View file

@ -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()

View file

@ -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;

View file

@ -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;
}
} }
} }

View file

@ -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;
} }

View file

@ -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;