int sceKernelSysEventDispatch(int ev_type_mask, int ev_id, char* ev_name, void* param, int* result, int break_nonzero, SceSysEventHandler **break_handler) { int oldGp = pspGetGp(); int ret = 0; int oldIntr = suspendIntr(); SceSysEventHandler *cur = g_sysEvHandlers; // C928 while (cur != NULL) { if ((cur->type_mask & ev_type_mask) != 0) { // C984 cur->busy = 1; resumeIntr(oldIntr); pspSetGp(cur->gp); ret = cur->handler(ev_id, ev_name, param, result); oldIntr = suspendIntr(); cur->busy = 0; if (ret < 0 && break_nonzero != 0) { // C9D8 if (break_handler != NULL) *break_handler = cur; break; } ret = 0; } // C934 cur = cur->next; } // C940 resumeIntr(oldIntr); pspSetGp(oldGp); return ret; }
/* param replaceStatus: 1 prohibited, 2 allowed */ static s32 _setUmdReplaceStatus(u32 replaceStatus) { s32 status; if (g_mediaMan.umdReplaceCallback == NULL) return SCE_UMD_ERROR_NO_MEDIUM; s32 oldGp = pspSetGp(g_mediaMan.umdReplaceCallbackGp); status = g_mediaMan.umdReplaceCallback(replaceStatus); pspSetGp(oldGp); return status; }
static s32 sub_0000094C(void) { s32 status; if (g_mediaMan.unk60 == NULL) return SCE_UMD_ERROR_NO_MEDIUM; s32 oldGp = pspSetGp(g_mediaMan.unk36); status = g_mediaMan.unk60(); pspSetGp(oldGp); return status; }
//Subroutine sub_000004DC - Address 0x000004DC static s32 sub_000004DC(void) { u32 oldGp; s32 status; if (g_mediaMan.umdMediaPresentCallback == NULL) return SCE_ERROR_OK; oldGp = pspSetGp(g_mediaMan.umdMediaPresentCallbackGp); status = g_mediaMan.umdMediaPresentCallback(g_mediaMan.umdMediaPresentCallbackParam); pspSetGp(oldGp); return status; }
//Subroutine sub_00000278 - Address 0x00000278 static s32 sub_00000278(s32 mode) { s32 oldGp; s32 status; if (g_mediaMan.umdDeactivateCallback == NULL) return SCE_UMD_ERROR_NO_MEDIUM; oldGp = pspSetGp(g_mediaMan.umdDeactivateCallbackGp); status = g_mediaMan.umdDeactivateCallback(mode, g_mediaMan.umdDeactivateCallbackParam); pspSetGp(oldGp); return status; }
int sceKernelDispatchResumeHandlers(int unk) { int oldGp = pspGetGp(); SceResumeHandler *cur = &g_resumeHandlers[31]; // CF40 int i; for (i = 0; i < 32; i++) { if (cur->handler != NULL) { // CF80 pspSetGp(cur->gp); cur->handler(unk, cur->param); } cur--; } pspSetGp(oldGp); return 0; }
int sceKernelDispatchSuspendHandlers(int unk) { int oldGp = pspGetGp(); SceSuspendHandler *cur = &g_suspendHandlers[0]; int i; // CEB0 for (i = 0; i < 32; i++) { if (cur->handler != NULL) { // CEF0 pspSetGp(cur->gp); cur->handler(unk, cur->param); } // CEC0 cur++; } pspSetGp(oldGp); return 0; }
//Subroutine _umdGetDiscInfo - Address 0x00000000 static s32 _umdGetDiscInfo(SceUmdDiscInfo *pDiscInfo) { s32 oldGp; s32 status; if (pDiscInfo == NULL) return SCE_ERROR_ERRNO_INVALID_ARGUMENT; if (g_mediaMan.umdInfoCallback == NULL) return SCE_UMD_ERROR_NO_MEDIUM; oldGp = pspSetGp(g_mediaMan.umdInfoCallbackGp); status = g_mediaMan.umdInfoCallback(g_mediaMan.umdInfoCallbackDiscInfo); pspSetGp(oldGp); pDiscInfo->uiSize = sizeof(SceUmdDiscInfo); //0x00000068 pDiscInfo->uiMediaType = g_mediaMan.umdInfoCallbackDiscInfo->uiMediaType; return status; }