hrydgard/ppsspp — pull request #3554 by unknownbrackets (2013-09-01 17:21:19+00:00)
Title: Don't trash a list the GE interrupt handler needs.

Even after it's marked COMPLETED, the CPU needs it to start and finish the interrupt.

In Wild Arms XF (#2956), an existing completed list was not having its interrupt run correctly, because the id got stolen and overwritten by the PPGe stuff. By the time the interrupt actually triggered (which is a scheduled event), the data was wrong/different.

Probably the original source of the problems in Final Fantasy Type-0 and 3rd Birthday.

@raven02 is the "CoreTiming::Advance()" sitll needed in Type-0 here?
```c++
int sceGeListUpdateStallAddr(u32 displayListID, u32 stallAddress)
{
DEBUG_LOG(HLE, "sceGeListUpdateStallAddr(dlid=%i, stalladdr=%08x)", displayListID, stallAddress);
hleEatCycles(190);
CoreTiming::Advance();
return gpu->UpdateStall(displayListID, stallAddress);
}
```

May also improve things related to multithreading, I think/hope.

Makes Wild Arms XF basically playable afaict. Didn't try to go too far.

-[Unknown]