mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-02 09:03:37 +00:00
Fix validity check for depth buffer.
Fixed Pokemon Stadium Menu Items Missing (Regression) #1446
This commit is contained in:
parent
cc5f11dec2
commit
4f5759ef46
|
@ -704,6 +704,13 @@ void FrameBufferList::removeBuffers(u32 _width)
|
|||
}
|
||||
}
|
||||
|
||||
void FrameBufferList::depthBufferCopyRdram()
|
||||
{
|
||||
FrameBuffer * pCurrentDepthBuffer = findBuffer(gDP.depthImageAddress);
|
||||
if (pCurrentDepthBuffer != nullptr)
|
||||
pCurrentDepthBuffer->copyRdram();
|
||||
}
|
||||
|
||||
void FrameBufferList::fillBufferInfo(void * _pinfo, u32 _size)
|
||||
{
|
||||
FBInfo::FrameBufferInfo* pInfo = reinterpret_cast<FBInfo::FrameBufferInfo*>(_pinfo);
|
||||
|
@ -1233,15 +1240,22 @@ void FrameBuffer_CopyChunkToRDRAM(u32 _address)
|
|||
|
||||
bool FrameBuffer_CopyDepthBuffer( u32 address )
|
||||
{
|
||||
FrameBuffer * pCopyBuffer = frameBufferList().getCopyBuffer();
|
||||
FrameBufferList & fblist = frameBufferList();
|
||||
FrameBuffer * pCopyBuffer = fblist.getCopyBuffer();
|
||||
if (pCopyBuffer != nullptr) {
|
||||
// This code is mainly to emulate Zelda MM camera.
|
||||
ColorBufferToRDRAM::get().copyToRDRAM(pCopyBuffer->m_startAddress, true);
|
||||
pCopyBuffer->m_RdramCopy.resize(0); // To disable validity check by RDRAM content. CPU may change content of the buffer for some unknown reason.
|
||||
frameBufferList().setCopyBuffer(nullptr);
|
||||
fblist.setCopyBuffer(nullptr);
|
||||
return true;
|
||||
} else
|
||||
return DepthBufferToRDRAM::get().copyToRDRAM(address);
|
||||
}
|
||||
|
||||
if (DepthBufferToRDRAM::get().copyToRDRAM(address)) {
|
||||
fblist.depthBufferCopyRdram();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool FrameBuffer_CopyDepthBufferChunk(u32 address)
|
||||
|
|
|
@ -98,6 +98,7 @@ public:
|
|||
|
||||
FrameBuffer * getCopyBuffer() const { return m_pCopy; }
|
||||
void setCopyBuffer(FrameBuffer * _pBuffer) { m_pCopy = _pBuffer; }
|
||||
void depthBufferCopyRdram();
|
||||
|
||||
void fillBufferInfo(void * _pinfo, u32 _size);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user