GPU: Partially reverts changes to the LCDC check, bringing back an optimization for display capture.
- Revert commitabe2e61997
. (But retains the comments about Mario Kart.) - Partially revertadf682eb23
. (But retains the removal of the LCDC check in ResetDisplayCaptureEnable().)
This commit is contained in:
parent
76063a389c
commit
c37e892090
|
@ -5253,8 +5253,10 @@ bool GPUEngineA::WillCapture3DLayerDirect(const size_t l)
|
||||||
|
|
||||||
bool GPUEngineA::WillDisplayCapture(const size_t l)
|
bool GPUEngineA::WillDisplayCapture(const size_t l)
|
||||||
{
|
{
|
||||||
|
//we must block captures when the capture dest is not mapped to LCDC.
|
||||||
|
//mario kart does this (maybe due to a programming bug, but maybe emulation timing error) when spamming confirm key during course intro and through black transition
|
||||||
const IOREG_DISPCAPCNT &DISPCAPCNT = this->_IORegisterMap->DISPCAPCNT;
|
const IOREG_DISPCAPCNT &DISPCAPCNT = this->_IORegisterMap->DISPCAPCNT;
|
||||||
return this->_displayCaptureEnable && (l < this->_dispCapCnt.capy);
|
return this->_displayCaptureEnable && (vramConfiguration.banks[DISPCAPCNT.VRAMWriteBlock].purpose == VramConfiguration::LCDC) && (l < this->_dispCapCnt.capy);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GPUEngineA::SetDisplayCaptureEnable()
|
void GPUEngineA::SetDisplayCaptureEnable()
|
||||||
|
@ -5554,11 +5556,6 @@ void GPUEngineA::_RenderLine_DisplayCapture(const u16 l)
|
||||||
const size_t readLineIndexWithOffset = (this->_dispCapCnt.readOffset * 64) + l;
|
const size_t readLineIndexWithOffset = (this->_dispCapCnt.readOffset * 64) + l;
|
||||||
bool newCaptureLineNativeState = true;
|
bool newCaptureLineNativeState = true;
|
||||||
u16 *renderedLineSrcA16 = NULL;
|
u16 *renderedLineSrcA16 = NULL;
|
||||||
|
|
||||||
//we must block captures when the capture dest is not mapped to LCDC.
|
|
||||||
//mario kart does this (maybe due to a programming bug, but maybe emulation timing error) when spamming confirm key during course intro and through black transition
|
|
||||||
if(vramConfiguration.banks[vramWriteBlock].purpose != VramConfiguration::LCDC)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//128-wide captures should write linearly into memory, with no gaps
|
//128-wide captures should write linearly into memory, with no gaps
|
||||||
//this is tested by hotel dusk
|
//this is tested by hotel dusk
|
||||||
|
|
Loading…
Reference in New Issue