mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-07 03:13:49 +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)
|
void FrameBufferList::fillBufferInfo(void * _pinfo, u32 _size)
|
||||||
{
|
{
|
||||||
FBInfo::FrameBufferInfo* pInfo = reinterpret_cast<FBInfo::FrameBufferInfo*>(_pinfo);
|
FBInfo::FrameBufferInfo* pInfo = reinterpret_cast<FBInfo::FrameBufferInfo*>(_pinfo);
|
||||||
|
@ -1233,15 +1240,22 @@ void FrameBuffer_CopyChunkToRDRAM(u32 _address)
|
||||||
|
|
||||||
bool FrameBuffer_CopyDepthBuffer( u32 address )
|
bool FrameBuffer_CopyDepthBuffer( u32 address )
|
||||||
{
|
{
|
||||||
FrameBuffer * pCopyBuffer = frameBufferList().getCopyBuffer();
|
FrameBufferList & fblist = frameBufferList();
|
||||||
|
FrameBuffer * pCopyBuffer = fblist.getCopyBuffer();
|
||||||
if (pCopyBuffer != nullptr) {
|
if (pCopyBuffer != nullptr) {
|
||||||
// This code is mainly to emulate Zelda MM camera.
|
// This code is mainly to emulate Zelda MM camera.
|
||||||
ColorBufferToRDRAM::get().copyToRDRAM(pCopyBuffer->m_startAddress, true);
|
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.
|
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;
|
return true;
|
||||||
} else
|
}
|
||||||
return DepthBufferToRDRAM::get().copyToRDRAM(address);
|
|
||||||
|
if (DepthBufferToRDRAM::get().copyToRDRAM(address)) {
|
||||||
|
fblist.depthBufferCopyRdram();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FrameBuffer_CopyDepthBufferChunk(u32 address)
|
bool FrameBuffer_CopyDepthBufferChunk(u32 address)
|
||||||
|
|
|
@ -98,6 +98,7 @@ public:
|
||||||
|
|
||||||
FrameBuffer * getCopyBuffer() const { return m_pCopy; }
|
FrameBuffer * getCopyBuffer() const { return m_pCopy; }
|
||||||
void setCopyBuffer(FrameBuffer * _pBuffer) { m_pCopy = _pBuffer; }
|
void setCopyBuffer(FrameBuffer * _pBuffer) { m_pCopy = _pBuffer; }
|
||||||
|
void depthBufferCopyRdram();
|
||||||
|
|
||||||
void fillBufferInfo(void * _pinfo, u32 _size);
|
void fillBufferInfo(void * _pinfo, u32 _size);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user