From 1a6c8191767dfc82c9b48275c4bb79cfc98c2139 Mon Sep 17 00:00:00 2001 From: eladash Date: Wed, 19 Sep 2018 08:32:08 +0300 Subject: [PATCH] cellgcm: Fix SET_REFERENCE initial value --- rpcs3/Emu/Cell/Modules/cellGcmSys.cpp | 2 +- rpcs3/Emu/Cell/lv2/sys_rsx.cpp | 2 +- rpcs3/Emu/RSX/rsx_methods.cpp | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/cellGcmSys.cpp b/rpcs3/Emu/Cell/Modules/cellGcmSys.cpp index 0154893123..0bf640c4d4 100644 --- a/rpcs3/Emu/Cell/Modules/cellGcmSys.cpp +++ b/rpcs3/Emu/Cell/Modules/cellGcmSys.cpp @@ -427,7 +427,7 @@ s32 _cellGcmInitBody(vm::pptr context, u32 cmdSize, u32 ioSi auto& ctrl = vm::_ref(m_config->gcm_info.control_addr); ctrl.put = 0; ctrl.get = 0; - ctrl.ref = -1; + ctrl.ref = 0; // Set later to -1 at RSX initialization render->intr_thread = idm::make_ptr("_gcm_intr_thread", 1, 0x4000); render->intr_thread->run(); diff --git a/rpcs3/Emu/Cell/lv2/sys_rsx.cpp b/rpcs3/Emu/Cell/lv2/sys_rsx.cpp index 2fbca5f1fe..aa4507811b 100644 --- a/rpcs3/Emu/Cell/lv2/sys_rsx.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_rsx.cpp @@ -122,7 +122,7 @@ s32 sys_rsx_context_allocate(vm::ptr context_id, vm::ptr lpar_dma_cont auto &dmaControl = vm::_ref(*lpar_dma_control); dmaControl.get = 0; dmaControl.put = 0; - dmaControl.ref = 0xFFFFFFFF; + dmaControl.ref = 0; // Set later to -1 by cellGcmSys memset(&RSXIOMem, 0xFF, sizeof(RSXIOMem)); diff --git a/rpcs3/Emu/RSX/rsx_methods.cpp b/rpcs3/Emu/RSX/rsx_methods.cpp index c745aaabf0..37dcb050ae 100644 --- a/rpcs3/Emu/RSX/rsx_methods.cpp +++ b/rpcs3/Emu/RSX/rsx_methods.cpp @@ -1274,6 +1274,7 @@ namespace rsx if (get_current_renderer()->isHLE) { + // Commands injected by cellGcmInit registers[NV406E_SEMAPHORE_OFFSET] = 0x30; registers[NV406E_SEMAPHORE_ACQUIRE] = 0x1; registers[NV406E_SET_CONTEXT_DMA_SEMAPHORE] = 0x66616661; @@ -1802,7 +1803,7 @@ namespace rsx registers[NV308A_POINT] = 0x0; registers[NV308A_SIZE_OUT] = 0x0; registers[NV308A_SIZE_IN] = 0x0; - registers[NV406E_SET_REFERENCE] = 0xffffffff; + registers[NV406E_SET_REFERENCE] = get_current_renderer()->ctrl->ref = 0xffffffff; } }