GPU:
- Fix bug where the background would blink in The Wizard of Oz: Beyond the Yellow Brick Road when frameskip is enabled. (Regression from r5368).
This commit is contained in:
parent
34ec6bb985
commit
04e06869d9
|
@ -4451,81 +4451,6 @@ void GPUEngineA::RenderLine(const u16 l)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GPUEngineA::UpdatePropertiesWithoutRender(const u16 l)
|
|
||||||
{
|
|
||||||
GPUEngineBase::UpdatePropertiesWithoutRender(l);
|
|
||||||
|
|
||||||
// Update display capture properties
|
|
||||||
const IOREG_DISPCAPCNT &DISPCAPCNT = this->_IORegisterMap->DISPCAPCNT;
|
|
||||||
const u8 vramWriteBlock = DISPCAPCNT.VRAMWriteBlock;
|
|
||||||
|
|
||||||
if ((DISPCAPCNT.CaptureEnable != 0) && (vramConfiguration.banks[vramWriteBlock].purpose == VramConfiguration::LCDC) && (l < this->_dispCapCnt.capy))
|
|
||||||
{
|
|
||||||
const IOREG_DISPCNT &DISPCNT = this->_IORegisterMap->DISPCNT;
|
|
||||||
const u8 vramReadBlock = DISPCNT.VRAM_Block;
|
|
||||||
const size_t writeLineIndexWithOffset = (DISPCAPCNT.VRAMWriteOffset * 64) + l;
|
|
||||||
const size_t readLineIndexWithOffset = (this->_dispCapCnt.readOffset * 64) + l;
|
|
||||||
bool newCaptureLineNativeState = true;
|
|
||||||
|
|
||||||
switch (DISPCAPCNT.CaptureSrc)
|
|
||||||
{
|
|
||||||
case 0: // Capture source is SourceA
|
|
||||||
{
|
|
||||||
switch (DISPCAPCNT.SrcA)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
newCaptureLineNativeState = !this->isCustomRenderingNeeded;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
newCaptureLineNativeState = this->WillRender3DLayer() && CurrentRenderer->IsFramebufferNativeSize();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case 1: // Capture source is SourceB
|
|
||||||
{
|
|
||||||
switch (DISPCAPCNT.SrcB)
|
|
||||||
{
|
|
||||||
case 0: // Capture VRAM
|
|
||||||
newCaptureLineNativeState = this->isLineCaptureNative[vramReadBlock][readLineIndexWithOffset];
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1: // Capture FIFO
|
|
||||||
newCaptureLineNativeState = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default: // Capture source is SourceA+B blended
|
|
||||||
{
|
|
||||||
if ( (DISPCAPCNT.SrcB == 0) && !this->isLineCaptureNative[vramReadBlock][readLineIndexWithOffset] )
|
|
||||||
{
|
|
||||||
newCaptureLineNativeState = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
newCaptureLineNativeState = !this->isCustomRenderingNeeded;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this->isLineCaptureNative[vramWriteBlock][writeLineIndexWithOffset] && !newCaptureLineNativeState)
|
|
||||||
{
|
|
||||||
this->isLineCaptureNative[vramWriteBlock][writeLineIndexWithOffset] = false;
|
|
||||||
this->nativeLineCaptureCount[vramWriteBlock]--;
|
|
||||||
}
|
|
||||||
else if (!this->isLineCaptureNative[vramWriteBlock][writeLineIndexWithOffset] && newCaptureLineNativeState)
|
|
||||||
{
|
|
||||||
this->isLineCaptureNative[vramWriteBlock][writeLineIndexWithOffset] = true;
|
|
||||||
this->nativeLineCaptureCount[vramWriteBlock]++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
u16* GPUEngineA::_RenderLine_Layers(const u16 l)
|
u16* GPUEngineA::_RenderLine_Layers(const u16 l)
|
||||||
{
|
{
|
||||||
const NDSDisplayInfo &dispInfo = GPU->GetDisplayInfo();
|
const NDSDisplayInfo &dispInfo = GPU->GetDisplayInfo();
|
||||||
|
|
|
@ -1423,7 +1423,6 @@ public:
|
||||||
bool WillCapture3DLayerDirect();
|
bool WillCapture3DLayerDirect();
|
||||||
bool VerifyVRAMLineDidChange(const size_t blockID, const size_t l);
|
bool VerifyVRAMLineDidChange(const size_t blockID, const size_t l);
|
||||||
|
|
||||||
void UpdatePropertiesWithoutRender(const u16 l);
|
|
||||||
void FramebufferPostprocess();
|
void FramebufferPostprocess();
|
||||||
|
|
||||||
virtual void Reset();
|
virtual void Reset();
|
||||||
|
|
Loading…
Reference in New Issue