From 22e3ff06b51db0fa72e9f2dc2aee395a5d1aa2df Mon Sep 17 00:00:00 2001
From: WilliamWsyHK <WilliamWsyHK@users.noreply.github.com>
Date: Thu, 11 Apr 2024 06:03:37 +0800
Subject: Update StoreConstantToMemory to match StoreConstantToAddress on value
 read (#6642)

---
 src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToMemory.cs | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

(limited to 'src')

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<ulong> storeValue = new(immediate);
 
             Pointer destinationMemory;
-- 
cgit v1.2.3-70-g09d2