mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-24 06:39:58 -06:00
'FIFO full' hack for SM64DS.
This commit is contained in:
19
GPU3D.cpp
19
GPU3D.cpp
@ -841,8 +841,6 @@ void SubmitVertex()
|
||||
|
||||
|
||||
|
||||
int logflag = 0;
|
||||
|
||||
void CmdFIFOWrite(CmdFIFOEntry& entry)
|
||||
{
|
||||
if (CmdFIFO->IsEmpty() && !CmdPIPE->IsFull())
|
||||
@ -853,10 +851,17 @@ void CmdFIFOWrite(CmdFIFOEntry& entry)
|
||||
{
|
||||
if (CmdFIFO->IsFull())
|
||||
{
|
||||
if (!logflag) printf("!!! GX FIFO FULL\n");
|
||||
logflag = 1;
|
||||
//NDS::debug(0);
|
||||
return;
|
||||
//printf("!!! GX FIFO FULL\n");
|
||||
//return;
|
||||
|
||||
// temp. hack
|
||||
// SM64DS seems to overflow the FIFO occasionally
|
||||
// either leftover bugs in our implementation, or the game accidentally doing that
|
||||
// TODO: investigate.
|
||||
// TODO: implement this behavior properly (freezes the bus until the FIFO isn't full anymore)
|
||||
|
||||
while (CmdFIFO->IsFull())
|
||||
ExecuteCommand();
|
||||
}
|
||||
|
||||
CmdFIFO->Write(entry);
|
||||
@ -878,8 +883,6 @@ CmdFIFOEntry CmdFIFORead()
|
||||
CheckFIFOIRQ();
|
||||
}
|
||||
|
||||
logflag = 0;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user