diff --git a/src/FrameBufferInfo.cpp b/src/FrameBufferInfo.cpp index a703a26d..49468872 100644 --- a/src/FrameBufferInfo.cpp +++ b/src/FrameBufferInfo.cpp @@ -3,6 +3,7 @@ #include "OpenGL.h" #include "FrameBuffer.h" #include "DepthBuffer.h" +#include "RSP.h" #include "VI.h" #include "Log.h" @@ -20,7 +21,17 @@ void FrameBufferWriteList(FrameBufferModifyEntry *plist, u32 size) void FrameBufferRead(u32 addr) { + // TODO: remove debug print debugPrint("FBRead addr=%08lx \n", addr); + + const u32 address = RSP_SegmentToPhysical(addr); + FrameBuffer * pBuffer = frameBufferList().findBuffer(address); + if (pBuffer == nullptr) + return; + if (pBuffer->m_isDepthBuffer) + FrameBuffer_CopyDepthBufferChunk(address); + else + FrameBuffer_CopyChunkToRDRAM(address); } void FrameBufferGetInfo(void *pinfo) diff --git a/src/RSP.h b/src/RSP.h index a0e5f591..2ad296cd 100644 --- a/src/RSP.h +++ b/src/RSP.h @@ -2,6 +2,7 @@ #define RSP_H #include "Types.h" +#include "N64.h" typedef struct {