Просмотр исходного кода

Update StoreConstantToMemory to match StoreConstantToAddress on value read (#6642)

WilliamWsyHK 2 лет назад
Родитель
Сommit
22e3ff06b5
1 измененных файлов с 4 добавлено и 2 удалено
  1. 4 2
      src/Ryujinx.HLE/HOS/Tamper/CodeEmitters/StoreConstantToMemory.cs

+ 4 - 2
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;