From 3d9c76a80d7fe0d74932b3afb20452dccf380fc0 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Wed, 16 Jul 2014 16:09:43 +0400 Subject: [PATCH] RawSPU initialization fix --- rpcs3/Emu/Memory/Memory.h | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/Memory/Memory.h b/rpcs3/Emu/Memory/Memory.h index 6430e27d80..88cc1dea6d 100644 --- a/rpcs3/Emu/Memory/Memory.h +++ b/rpcs3/Emu/Memory/Memory.h @@ -214,12 +214,22 @@ public: } } - void InitRawSPU(MemoryBlock* raw_spu, const u32 num) + u32 InitRawSPU(MemoryBlock* raw_spu) { std::lock_guard lock(m_mutex); - MemoryBlocks.push_back(raw_spu); - if (num < sizeof(RawSPUMem) / sizeof(RawSPUMem[0])) RawSPUMem[num] = raw_spu; + u32 index; + for (index = 0; index < sizeof(RawSPUMem) / sizeof(RawSPUMem[0]); index++) + { + if (!RawSPUMem[index]) + { + RawSPUMem[index] = raw_spu; + break; + } + } + + MemoryBlocks.push_back(raw_spu->SetRange(RAW_SPU_BASE_ADDR + RAW_SPU_OFFSET * index, RAW_SPU_PROB_OFFSET)); + return index; } void CloseRawSPU(MemoryBlock* raw_spu, const u32 num)