mirror of
https://github.com/libretro/Play-.git
synced 2025-01-10 10:31:05 +00:00
Simulate data being available in VIF1 FIFO when FDR is set.
This commit is contained in:
parent
1b9205fb5b
commit
31ca0a1d0b
@ -82,6 +82,12 @@ uint32 CVif::GetRegister(uint32 address)
|
||||
case VIF0_STAT:
|
||||
case VIF1_STAT:
|
||||
result = m_STAT;
|
||||
if(m_STAT.nFDR != 0)
|
||||
{
|
||||
//When FDR is set, it usually means the game is trying to
|
||||
//read data from GS and that FIFO has some data in it
|
||||
result |= (0x10 << 24);
|
||||
}
|
||||
break;
|
||||
case VIF0_MARK:
|
||||
case VIF1_MARK:
|
||||
@ -139,6 +145,9 @@ void CVif::SetRegister(uint32 address, uint32 value)
|
||||
{
|
||||
switch(address)
|
||||
{
|
||||
case VIF1_STAT:
|
||||
m_STAT.nFDR = ((value & STAT_FDR) != 0) ? 1 : 0;
|
||||
break;
|
||||
case VIF0_FBRST:
|
||||
case VIF1_FBRST:
|
||||
if(value & FBRST_RST)
|
||||
|
@ -74,6 +74,11 @@ protected:
|
||||
FBRST_STC = 0x08
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
STAT_FDR = 0x00800000,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
FIFO_SIZE = 0x100
|
||||
@ -129,7 +134,8 @@ protected:
|
||||
unsigned int nINT : 1;
|
||||
unsigned int nER0 : 1;
|
||||
unsigned int nER1 : 1;
|
||||
unsigned int nReserved2 : 10;
|
||||
unsigned int nReserved2 : 9;
|
||||
unsigned int nFDR : 1; //VIF1 only
|
||||
unsigned int nFQC : 4;
|
||||
unsigned int nReserved3 : 4;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user