diff options
Diffstat (limited to 'Ryujinx.HLE/HOS/Tamper/Pointer.cs')
-rw-r--r-- | Ryujinx.HLE/HOS/Tamper/Pointer.cs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/Ryujinx.HLE/HOS/Tamper/Pointer.cs b/Ryujinx.HLE/HOS/Tamper/Pointer.cs new file mode 100644 index 00000000..22acf4d5 --- /dev/null +++ b/Ryujinx.HLE/HOS/Tamper/Pointer.cs @@ -0,0 +1,32 @@ +using Ryujinx.Common.Logging; +using Ryujinx.HLE.HOS.Tamper.Operations; +using System.Runtime.CompilerServices; + +namespace Ryujinx.HLE.HOS.Tamper +{ + class Pointer : IOperand + { + private IOperand _position; + private ITamperedProcess _process; + + public Pointer(IOperand position, ITamperedProcess process) + { + _position = position; + _process = process; + } + + public T Get<T>() where T : unmanaged + { + return _process.ReadMemory<T>(_position.Get<ulong>()); + } + + public void Set<T>(T value) where T : unmanaged + { + ulong position = _position.Get<ulong>(); + + Logger.Debug?.Print(LogClass.TamperMachine, $"0x{position:X16}@{Unsafe.SizeOf<T>()}: {value:X}"); + + _process.WriteMemory(position, value); + } + } +} |