From e842abfa8a03e75e9822e0924e72645ed7622cd2 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Tue, 27 Apr 2021 02:11:15 +1000 Subject: [PATCH] CPU/Recompiler: Fix corrupted constant address byte/halfword writes Fixes broken rendering in Dino Crisis. --- src/core/cpu_recompiler_code_generator_generic.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/core/cpu_recompiler_code_generator_generic.cpp b/src/core/cpu_recompiler_code_generator_generic.cpp index 270ef118b..deeb347df 100644 --- a/src/core/cpu_recompiler_code_generator_generic.cpp +++ b/src/core/cpu_recompiler_code_generator_generic.cpp @@ -120,11 +120,15 @@ void CodeGenerator::EmitStoreGuestMemory(const CodeBlockInstruction& cbi, const { void* ptr = GetDirectWriteMemoryPointer( static_cast(address.constant_value), - (value.size == RegSize_8) ? MemoryAccessSize::Byte : - ((value.size == RegSize_16) ? MemoryAccessSize::HalfWord : MemoryAccessSize::Word)); + (size == RegSize_8) ? MemoryAccessSize::Byte : + ((size == RegSize_16) ? MemoryAccessSize::HalfWord : MemoryAccessSize::Word)); if (ptr) { - EmitStoreGlobal(ptr, value); + if (value.size != size) + EmitStoreGlobal(ptr, value.ViewAsSize(size)); + else + EmitStoreGlobal(ptr, value); + return; } }