aboutsummaryrefslogtreecommitdiff
path: root/GPU3D.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'GPU3D.cpp')
-rw-r--r--GPU3D.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/GPU3D.cpp b/GPU3D.cpp
index de860f2..e38f7c2 100644
--- a/GPU3D.cpp
+++ b/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;
}