Skip to content
Permalink
Browse files

Implement sync signal in display lists.

Makes dialogs show up in 3rd Birthday.
  • Loading branch information...
unknownbrackets committed Apr 6, 2013
1 parent dac448d commit 376ad80d76b7e8aea05b8f874bd5a8992da3e505
Showing with 10 additions and 2 deletions.
  1. +3 −1 Core/HLE/sceGe.cpp
  2. +7 −1 GPU/GPUCommon.cpp
@@ -60,7 +60,9 @@ class GeIntrHandler : public IntrHandler
int subintr = -1;
if (dl->subIntrBase >= 0)
{
if (cmd == GE_CMD_FINISH && dl->signal == PSP_GE_SIGNAL_HANDLER_PAUSE)
if (dl->signal == PSP_GE_SIGNAL_SYNC)
subintr = -1;
else if (cmd == GE_CMD_FINISH && dl->signal == PSP_GE_SIGNAL_HANDLER_PAUSE)
subintr = dl->subIntrBase | PSP_GE_SUBINTR_SIGNAL;
else if (cmd == GE_CMD_SIGNAL && dl->signal != PSP_GE_SIGNAL_HANDLER_PAUSE)
subintr = dl->subIntrBase | PSP_GE_SUBINTR_SIGNAL;
@@ -567,7 +567,8 @@ void GPUCommon::ExecuteOp(u32 op, u32 diff) {
ERROR_LOG_REPORT(G3D, "Signal with Pause UNIMPLEMENTED! signal/end: %04x %04x", signal, enddata);
break;
case PSP_GE_SIGNAL_SYNC:
ERROR_LOG_REPORT(G3D, "Signal with Sync UNIMPLEMENTED! signal/end: %04x %04x", signal, enddata);
currentList->signal = behaviour;
DEBUG_LOG(G3D, "Signal with Sync. signal/end: %04x %04x", signal, enddata);
break;
case PSP_GE_SIGNAL_JUMP:
ERROR_LOG_REPORT(G3D, "Signal with Jump UNIMPLEMENTED! signal/end: %04x %04x", signal, enddata);
@@ -597,6 +598,11 @@ void GPUCommon::ExecuteOp(u32 op, u32 diff) {
}
break;

case PSP_GE_SIGNAL_SYNC:
currentList->signal = PSP_GE_SIGNAL_NONE;
// TODO: Technically this should still cause an interrupt. Probably for memory sync.
break;

default:
currentList->subIntrToken = prev & 0xFFFF;
currentList->state = PSP_GE_DL_STATE_COMPLETED;

0 comments on commit 376ad80

Please sign in to comment.
You can’t perform that action at this time.