mirror of
https://github.com/libretro/ppsspp.git
synced 2024-11-28 19:00:23 +00:00
Always trigger FINISH and SIGNAL from END.
This commit is contained in:
parent
cd246d27c3
commit
15cb005a60
@ -58,7 +58,7 @@ public:
|
||||
|
||||
gpu->InterruptStart();
|
||||
|
||||
u32 cmd = Memory::ReadUnchecked_U32(intrdata.pc) >> 24;
|
||||
u32 cmd = Memory::ReadUnchecked_U32(intrdata.pc - 4) >> 24;
|
||||
int subintr = intrdata.subIntrBase | (cmd == GE_CMD_FINISH ? PSP_GE_SUBINTR_FINISH : PSP_GE_SUBINTR_SIGNAL);
|
||||
SubIntrHandler* handler = get(subintr);
|
||||
|
||||
|
@ -267,14 +267,8 @@ void GPUCommon::ExecuteOp(u32 op, u32 diff) {
|
||||
break;
|
||||
|
||||
case GE_CMD_SIGNAL:
|
||||
// Processed in GE_END.
|
||||
break;
|
||||
|
||||
case GE_CMD_FINISH:
|
||||
currentList->subIntrToken = data & 0xFFFF;
|
||||
UpdateCycles(currentList->pc);
|
||||
if (interruptsEnabled_)
|
||||
__GeTriggerInterrupt(currentList->id, currentList->pc, currentList->subIntrBase, currentList->subIntrToken);
|
||||
// Processed in GE_END.
|
||||
break;
|
||||
|
||||
case GE_CMD_END:
|
||||
@ -322,6 +316,9 @@ void GPUCommon::ExecuteOp(u32 op, u32 diff) {
|
||||
case GE_CMD_FINISH:
|
||||
currentList->status = PSP_GE_LIST_DONE;
|
||||
finished = true;
|
||||
currentList->subIntrToken = prev & 0xFFFF;
|
||||
if (interruptsEnabled_)
|
||||
__GeTriggerInterrupt(currentList->id, currentList->pc, currentList->subIntrBase, currentList->subIntrToken);
|
||||
break;
|
||||
default:
|
||||
DEBUG_LOG(G3D,"Ah, not finished: %06x", prev & 0xFFFFFF);
|
||||
|
Loading…
Reference in New Issue
Block a user