Skip loading unknown XF registers in the FIFO player
This avoids some warnings, which were originally fixed by ignoring loads with a value of zero (see 636bedb207 / #3242).
Note that FifoCI will report some changes, but only on the first frame; these seem to be timing related as they don't happen if a different write is used to replace skipped ones.
This commit is contained in:
1 parent
cde6cf2ab5
commit
f32b771f7a
4 files changed
+30
-11
No files matched your search
@@ -491,7 +491,10 @@ void FifoPlayer::LoadRegisters()
|
||||
|
||||
regs = m_File->GetXFRegs();
|
||||
for (int i = 0; i < FifoDataFile::XF_REGS_SIZE; ++i)
|
||||
LoadXFReg(i, regs[i]);
|
||||
{
|
||||
if (ShouldLoadXF(i))
|
||||
LoadXFReg(i, regs[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void FifoPlayer::LoadTextureMemory()
|
||||
@@ -571,6 +574,16 @@ bool FifoPlayer::ShouldLoadBP(u8 address)
|
||||
}
|
||||
}
|
||||
|
||||
bool FifoPlayer::ShouldLoadXF(u8 reg)
|
||||
{
|
||||
// Ignore unknown addresses
|
||||
u16 address = reg + 0x1000;
|
||||
return !(address == XFMEM_UNKNOWN_1007 ||
|
||||
(address >= XFMEM_UNKNOWN_GROUP_1_START && address <= XFMEM_UNKNOWN_GROUP_1_END) ||
|
||||
(address >= XFMEM_UNKNOWN_GROUP_2_START && address <= XFMEM_UNKNOWN_GROUP_2_END) ||
|
||||
(address >= XFMEM_UNKNOWN_GROUP_3_START && address <= XFMEM_UNKNOWN_GROUP_3_END));
|
||||
}
|
||||
|
||||
bool FifoPlayer::IsIdleSet()
|
||||
{
|
||||
CommandProcessor::UCPStatusReg status =
|
||||
|
||||
@@ -134,6 +134,7 @@ private:
|
||||
void LoadXFMem16(u16 address, const u32* data);
|
||||
|
||||
bool ShouldLoadBP(u8 address);
|
||||
bool ShouldLoadXF(u8 address);
|
||||
|
||||
static bool IsIdleSet();
|
||||
static bool IsHighWatermarkSet();
|
||||
|
||||
Reference in new issue
Block a user