Implement some missing syscalls and "fix" one, which fixes a Project Diva 2nd hang, and possibly other games that rely on sceUtilityScreenshotGetStatus to return success, since they tend to wait forever for the dialog to finish. I'd like to implement the dialog and functionality someday, but for now, this works fine.

Also implement stub for sceRtcSetAlarmTick, though Diva 2nd doesn't care if it's implemented or not.
This commit is contained in:
The Dax 2013-06-12 04:46:06 -04:00
parent fb3c2cc87a
commit 4017550e41
2 changed files with 37 additions and 6 deletions

View file

@ -866,6 +866,13 @@ int sceRtcGetLastAdjustedTime(u32 tickPtr)
return 0;
}
//Returns 0 on success, according to Project Diva 2nd jpcsptrace log
int sceRtcSetAlarmTick(u32 unknown1, u32 unknown2)
{
ERROR_LOG(HLE, "UNIMPL sceRtcSetAlarmTick(%x, %x)", unknown1, unknown2);
return 0;
}
const HLEFunction sceRtc[] =
{
{0xC41C2853, &WrapU_V<sceRtcGetTickResolution>, "sceRtcGetTickResolution"},
@ -908,7 +915,7 @@ const HLEFunction sceRtc[] =
{0x1909c99b, &WrapI_UU64<sceRtcSetTime64_t>, "sceRtcSetTime64_t"},
{0x62685E98, &WrapI_U<sceRtcGetLastAdjustedTime>, "sceRtcGetLastAdjustedTime"},
{0x203ceb0d, 0, "sceRtcGetLastReincarnatedTime"},
{0x7d1fbed3, 0, "sceRtcSetAlarmTick"},
{0x7d1fbed3, &WrapI_UU<sceRtcSetAlarmTick>, "sceRtcSetAlarmTick"},
{0xf5fcc995, 0, "sceRtc_F5FCC995"},
};

View file

@ -377,10 +377,34 @@ int sceUtilityNetconfGetStatus()
return netDialog.GetStatus();
}
//TODO: Implement all sceUtilityScreenshot* for real, it doesn't seem to be complex
//but it requires more investigation
u32 sceUtilityScreenshotInitStart(u32 unknown1, u32 unknown2, u32 unknown3, u32 unknown4, u32 unknown5, u32 unknown6)
{
WARN_LOG(HLE, "UNIMPL %i=sceUtilityScreenshotInitStart(): fake success again", 0);
return 0;
}
u32 sceUtilityScreenshotShutdownStart()
{
WARN_LOG(HLE, "UNTESTED sceUtilityScreenshotShutdownStart()");
return 0;
}
u32 sceUtilityScreenshotUpdate(u32 unknown)
{
ERROR_LOG(HLE, "UNIMPL sceUtilityScreenshotUpdate(%d)", unknown);
return 0;
}
//Fake success, because Diva 2nd(and other games?) hang(s) in an infinite loop
//if you try to take a screenshot without it, due to waiting for success forever
int sceUtilityScreenshotGetStatus()
{
u32 retval = __UtilityGetStatus();
ERROR_LOG(HLE, "UNIMPL %i=sceUtilityScreenshotGetStatus()", retval);
//u32 retval = __UtilityGetStatus();
u32 retval = 0;
WARN_LOG(HLE, "UNIMPL %i=sceUtilityScreenshotGetStatus(): fake success", retval);
return retval;
}
@ -561,9 +585,9 @@ const HLEFunction sceUtility[] =
{0x2a2b3de0, &WrapU_U<sceUtilityLoadModule>, "sceUtilityLoadModule"},
{0xe49bfe92, &WrapU_U<sceUtilityUnloadModule>, "sceUtilityUnloadModule"},
{0x0251B134, 0, "sceUtilityScreenshotInitStart"},
{0xF9E0008C, 0, "sceUtilityScreenshotShutdownStart"},
{0xAB083EA9, 0, "sceUtilityScreenshotUpdate"},
{0x0251B134, &WrapU_UUUUUU<sceUtilityScreenshotInitStart>, "sceUtilityScreenshotInitStart"},
{0xF9E0008C, &WrapU_V<sceUtilityScreenshotShutdownStart>, "sceUtilityScreenshotShutdownStart"},
{0xAB083EA9, &WrapU_U<sceUtilityScreenshotUpdate>, "sceUtilityScreenshotUpdate"},
{0xD81957B7, &WrapI_V<sceUtilityScreenshotGetStatus>, "sceUtilityScreenshotGetStatus"},
{0x86A03A27, 0, "sceUtilityScreenshotContStart"},