diff --git a/rpcs3/Emu/RSX/rsx_methods.cpp b/rpcs3/Emu/RSX/rsx_methods.cpp index 11c8fc89a0..8abf843c2b 100644 --- a/rpcs3/Emu/RSX/rsx_methods.cpp +++ b/rpcs3/Emu/RSX/rsx_methods.cpp @@ -78,6 +78,14 @@ namespace rsx void semaphore_release(thread* rsx, u32 _reg, u32 arg) { const u32 addr = get_address(method_registers.semaphore_offset_406e(), method_registers.semaphore_context_dma_406e()); + + if (addr >> 28 == 0x4) + { + // TODO: check no reservation area instead + vm::ps3::write32(addr, arg); + return; + } + vm::reader_lock lock; vm::ps3::write32(addr, arg); vm::notify(addr, 4);