Return a similar dlist id range to the PSP.

At least this top part seems to match, the other bits seem randomish.
But, there may be some game out there thinking that if the top bits aren't
set it's invalid or something.
This commit is contained in:
Unknown W. Brackets 2013-09-21 12:05:28 -07:00
parent 01def3b6cc
commit 927f292230

View File

@ -337,6 +337,8 @@ u32 sceGeListEnQueue(u32 listAddress, u32 stallAddress, int callbackId,
optParam = optParamAddr;
u32 listID = gpu->EnqueueList(listAddress, stallAddress, __GeSubIntrBase(callbackId), optParam, false);
if ((int)listID >= 0)
listID = 0x35000000 | listID;
DEBUG_LOG(SCEGE, "List %i enqueued.", listID);
return listID;
@ -352,6 +354,8 @@ u32 sceGeListEnQueueHead(u32 listAddress, u32 stallAddress, int callbackId,
optParam = optParamAddr;
u32 listID = gpu->EnqueueList(listAddress, stallAddress, __GeSubIntrBase(callbackId), optParam, true);
if ((int)listID >= 0)
listID = 0x35000000 ^ listID;
DEBUG_LOG(SCEGE, "List %i enqueued.", listID);
return listID;
@ -360,7 +364,7 @@ u32 sceGeListEnQueueHead(u32 listAddress, u32 stallAddress, int callbackId,
int sceGeListDeQueue(u32 listID)
{
WARN_LOG(SCEGE, "sceGeListDeQueue(%08x)", listID);
int result = gpu->DequeueList(listID);
int result = gpu->DequeueList(0x35000000 ^ listID);
hleReSchedule("dlist dequeued");
return result;
}
@ -370,13 +374,13 @@ int sceGeListUpdateStallAddr(u32 displayListID, u32 stallAddress)
DEBUG_LOG(SCEGE, "sceGeListUpdateStallAddr(dlid=%i, stalladdr=%08x)", displayListID, stallAddress);
hleEatCycles(190);
CoreTiming::Advance();
return gpu->UpdateStall(displayListID, stallAddress);
return gpu->UpdateStall(0x35000000 ^ displayListID, stallAddress);
}
int sceGeListSync(u32 displayListID, u32 mode) //0 : wait for completion 1:check and return
{
DEBUG_LOG(SCEGE, "sceGeListSync(dlid=%08x, mode=%08x)", displayListID, mode);
return gpu->ListSync(displayListID, mode);
return gpu->ListSync(0x35000000 ^ displayListID, mode);
}
u32 sceGeDrawSync(u32 mode)