public int sceGeContinue()
{
var currentList = GpuProcessor.GetCurrentGpuDisplayList();
if (currentList == null)
{
return 0;
}
if (currentList.Status.Value == DisplayListStatusEnum.Paused)
{
if (!GpuProcessor.IsBreak)
{
if (currentList.Signal == SignalBehavior.PSP_GE_SIGNAL_HANDLER_PAUSE)
{
return unchecked((int)SceKernelErrors.ERROR_BUSY);
}
currentList.Status.SetValue(DisplayListStatusEnum.Drawing);
currentList.Signal = SignalBehavior.PSP_GE_SIGNAL_NONE;
// TODO Restore context of DL is necessary
// TODO Restore BASE
// We have a list now, so it's not complete.
//drawCompleteTicks = (u64) - 1;
}
else
{
currentList.Status.SetValue(DisplayListStatusEnum.Queued);
}
}
else if (currentList.Status.Value == DisplayListStatusEnum.Drawing)
{
if (SysMemUserForUser.sceKernelGetCompiledSdkVersion() >= 0x02000000)
{
return unchecked((int)SceKernelErrors.ERROR_ALREADY);
}
return -1;
}
else
{
if (SysMemUserForUser.sceKernelGetCompiledSdkVersion() >= 0x02000000)
{
return unchecked((int)0x80000004);
}
return -1;
}
//ProcessDLQueue();
return 0;
}