diff options
| author | Tilka <tilkax@gmail.com> | 2024-04-20 21:16:54 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-20 21:16:54 +0100 |
| commit | f1e40f73bd2a9da298d9aceafa7f956041bac142 (patch) | |
| tree | 16727f3ab7552bc6d668df2c0b3482ba3a23284b /Source/Core/VideoCommon/BPStructs.cpp | |
| parent | 6443084e8c355001ad298b03423b8e4f1a6cf042 (diff) | |
| parent | c204b33314802d5e5719990d76bccc87a1907c9d (diff) | |
Merge pull request #12705 from JosJuice/get-span-for-address
Memmap: Replace GetPointer with GetSpanForAddress
Diffstat (limited to 'Source/Core/VideoCommon/BPStructs.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/BPStructs.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/Source/Core/VideoCommon/BPStructs.cpp b/Source/Core/VideoCommon/BPStructs.cpp index 6e4bb981a8..4f02c298b4 100644 --- a/Source/Core/VideoCommon/BPStructs.cpp +++ b/Source/Core/VideoCommon/BPStructs.cpp @@ -401,7 +401,7 @@ static void BPWritten(PixelShaderManager& pixel_shader_manager, XFStateManager& static_assert(MAX_LOADABLE_TMEM_ADDR + MAX_TMEM_LINE_COUNT < TMEM_SIZE); auto& memory = system.GetMemory(); - memory.CopyFromEmu(texMem + tmem_addr, addr, tmem_transfer_count); + memory.CopyFromEmu(s_tex_mem.data() + tmem_addr, addr, tmem_transfer_count); if (OpcodeDecoder::g_record_fifo_data) system.GetFifoRecorder().UseMemory(addr, tmem_transfer_count, MemoryUpdate::Type::TMEM); @@ -590,13 +590,16 @@ static void BPWritten(PixelShaderManager& pixel_shader_manager, XFStateManager& if (tmem_cfg.preload_tile_info.type != 3) { - bytes_read = tmem_cfg.preload_tile_info.count * TMEM_LINE_SIZE; - if (tmem_addr_even + bytes_read > TMEM_SIZE) - bytes_read = TMEM_SIZE - tmem_addr_even; + if (tmem_addr_even < TMEM_SIZE) + { + bytes_read = tmem_cfg.preload_tile_info.count * TMEM_LINE_SIZE; + if (tmem_addr_even + bytes_read > TMEM_SIZE) + bytes_read = TMEM_SIZE - tmem_addr_even; - auto& system = Core::System::GetInstance(); - auto& memory = system.GetMemory(); - memory.CopyFromEmu(texMem + tmem_addr_even, src_addr, bytes_read); + auto& system = Core::System::GetInstance(); + auto& memory = system.GetMemory(); + memory.CopyFromEmu(s_tex_mem.data() + tmem_addr_even, src_addr, bytes_read); + } } else // RGBA8 tiles (and CI14, but that might just be stupid libogc!) { @@ -615,9 +618,10 @@ static void BPWritten(PixelShaderManager& pixel_shader_manager, XFStateManager& break; } - memory.CopyFromEmu(texMem + tmem_addr_even, src_addr + bytes_read, TMEM_LINE_SIZE); - memory.CopyFromEmu(texMem + tmem_addr_odd, src_addr + bytes_read + TMEM_LINE_SIZE, + memory.CopyFromEmu(s_tex_mem.data() + tmem_addr_even, src_addr + bytes_read, TMEM_LINE_SIZE); + memory.CopyFromEmu(s_tex_mem.data() + tmem_addr_odd, + src_addr + bytes_read + TMEM_LINE_SIZE, TMEM_LINE_SIZE); tmem_addr_even += TMEM_LINE_SIZE; tmem_addr_odd += TMEM_LINE_SIZE; bytes_read += TMEM_LINE_SIZE * 2; |
