From bc8a4f99c754c13b8e40d88ef012e93934f98125 Mon Sep 17 00:00:00 2001 From: booto Date: Fri, 31 May 2019 02:46:17 -0400 Subject: VideoCommon: Constrain the array_base registers The array_base registers as part of CP state do not seem to incorporate the upper bits in the physical address they try to access. --- Source/Core/VideoCommon/VertexLoaderManager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'Source/Core/VideoCommon/VertexLoaderManager.cpp') diff --git a/Source/Core/VideoCommon/VertexLoaderManager.cpp b/Source/Core/VideoCommon/VertexLoaderManager.cpp index 4fd7e164d7..a57cb71929 100644 --- a/Source/Core/VideoCommon/VertexLoaderManager.cpp +++ b/Source/Core/VideoCommon/VertexLoaderManager.cpp @@ -16,6 +16,7 @@ #include "Core/HW/Memmap.h" #include "VideoCommon/BPMemory.h" +#include "VideoCommon/CommandProcessor.h" #include "VideoCommon/DataReader.h" #include "VideoCommon/IndexGenerator.h" #include "VideoCommon/NativeVertexFormat.h" @@ -347,7 +348,7 @@ void LoadCPReg(u32 sub_cmd, u32 value, bool is_preprocess) // Pointers to vertex arrays in GC RAM case 0xA0: - state->array_bases[sub_cmd & 0xF] = value; + state->array_bases[sub_cmd & 0xF] = value & CommandProcessor::GetPhysicalAddressMask(); state->bases_dirty = true; break; -- cgit v1.2.3