0
0
Fork 0
mirror of https://github.com/ryujinx-mirror/ryujinx.git synced 2024-12-23 00:25:46 +00:00

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

This commit is contained in:
WilliamWsyHK 2024-04-11 06:03:37 +08:00 committed by GitHub
parent 9480e5c5ce
commit 22e3ff06b5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -15,7 +15,8 @@ namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
private const int OffsetRegisterIndex = 6; private const int OffsetRegisterIndex = 6;
private const int ValueImmediateIndex = 8; 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) public static void Emit(byte[] instruction, CompilationContext context)
{ {
@ -31,7 +32,8 @@ namespace Ryujinx.HLE.HOS.Tamper.CodeEmitters
Register sourceRegister = context.GetRegister(instruction[AddressRegisterIndex]); Register sourceRegister = context.GetRegister(instruction[AddressRegisterIndex]);
byte incrementAddressRegister = instruction[IncrementAddressRegisterIndex]; byte incrementAddressRegister = instruction[IncrementAddressRegisterIndex];
byte useOffsetRegister = instruction[UseOffsetRegisterIndex]; 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); Value<ulong> storeValue = new(immediate);
Pointer destinationMemory; Pointer destinationMemory;