From 22e3ff06b51db0fa72e9f2dc2aee395a5d1aa2df Mon Sep 17 00:00:00 2001 From: WilliamWsyHK Date: Thu, 11 Apr 2024 06:03:37 +0800 Subject: [PATCH] Update StoreConstantToMemory to match StoreConstantToAddress on value read (#6642) --- .../HOS/Tamper/CodeEmitters/StoreConstantToMemory.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToMemory.cs b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToMemory.cs index 27a99bb6..09795c9f 100644 --- a/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToMemory.cs +++ b/src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToMemory.cs @@ -15,7 +15,8 @@ namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters private const int OffsetRegisterIndex = 6; private const int ValueImmediateIndex = 8; - private const int ValueImmediateSize = 16; + private const int ValueImmediateSize8 = 8; + private const int ValueImmediateSize16 = 16; public static void Emit(byte[] instruction, CompilationContext context) { @@ -31,7 +32,8 @@ namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters Register sourceRegister = context.GetRegister(instruction[AddressRegisterIndex]); byte incrementAddressRegister = instruction[IncrementAddressRegisterIndex]; byte useOffsetRegister = instruction[UseOffsetRegisterIndex]; - ulong immediate = InstructionHelper.GetImmediate(instruction, ValueImmediateIndex, ValueImmediateSize); + int valueImmediateSize = operationWidth <= 4 ? ValueImmediateSize8 : ValueImmediateSize16; + ulong immediate = InstructionHelper.GetImmediate(instruction, ValueImmediateIndex, valueImmediateSize); Value storeValue = new(immediate); Pointer destinationMemory;