int LPP_UtilsMsgDialogInit(int options, const char *text, ...) { char buffer[512]; va_list ap; va_start(ap, text); vsnprintf(buffer, 512, text, ap); va_end(ap); memset(&lpp_UtilsMsgDialogParams, 0, sizeof(lpp_UtilsMsgDialogParams)); lpp_UtilsMsgDialogParams.base.size = sizeof(lpp_UtilsMsgDialogParams); sceUtilityGetSystemParamInt(PSP_SYSTEMPARAM_ID_INT_LANGUAGE, &lpp_UtilsMsgDialogParams.base.language); sceUtilityGetSystemParamInt(PSP_SYSTEMPARAM_ID_INT_UNKNOWN, &lpp_UtilsMsgDialogParams.base.buttonSwap); lpp_UtilsMsgDialogParams.base.graphicsThread = 17; lpp_UtilsMsgDialogParams.base.accessThread = 19; lpp_UtilsMsgDialogParams.base.fontThread = 18; lpp_UtilsMsgDialogParams.base.soundThread = 16; lpp_UtilsMsgDialogParams.mode = PSP_UTILITY_MSGDIALOG_MODE_TEXT; lpp_UtilsMsgDialogParams.options = PSP_UTILITY_MSGDIALOG_OPTION_TEXT; lpp_UtilsMsgDialogParams.options |= options; strcpy(lpp_UtilsMsgDialogParams.message, buffer); int res = sceUtilityMsgDialogInitStart(&lpp_UtilsMsgDialogParams); if(res == 0) return 1; return(res); }
int oslInitErrorDialog(const unsigned int error) { ConfigureDialog(&dialog, sizeof(dialog)); dialog.mode = PSP_UTILITY_MSGDIALOG_MODE_ERROR; dialog.options = PSP_UTILITY_MSGDIALOG_OPTION_ERROR; dialog.errorValue = error; int res = sceUtilityMsgDialogInitStart(&dialog); //<-- STAS: The error code shouldn't be ignored ! if (!res) dialogType = OSL_DIALOG_ERROR; return res; //<-- STAS END --> }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Public API /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int oslInitMessageDialog(const char *message, int enableYesno){ ConfigureDialog(&dialog, sizeof(dialog)); dialog.mode = PSP_UTILITY_MSGDIALOG_MODE_TEXT; dialog.options = PSP_UTILITY_MSGDIALOG_OPTION_TEXT; if(enableYesno) dialog.options |= PSP_UTILITY_MSGDIALOG_OPTION_YESNO_BUTTONS|PSP_UTILITY_MSGDIALOG_OPTION_DEFAULT_NO; strcpy(dialog.message, message); int res = sceUtilityMsgDialogInitStart(&dialog); //<-- STAS: The error code shouldn't be ignored ! if (!res) dialogType = OSL_DIALOG_MESSAGE; return res; //<-- STAS END --> }
int LPP_UtilsMsgDialogErrorInit(u32 error) { memset(&lpp_UtilsMsgDialogParams, 0, sizeof(lpp_UtilsMsgDialogParams)); lpp_UtilsMsgDialogParams.base.size = sizeof(lpp_UtilsMsgDialogParams); sceUtilityGetSystemParamInt(PSP_SYSTEMPARAM_ID_INT_LANGUAGE, &lpp_UtilsMsgDialogParams.base.language); sceUtilityGetSystemParamInt(PSP_SYSTEMPARAM_ID_INT_UNKNOWN, &lpp_UtilsMsgDialogParams.base.buttonSwap); lpp_UtilsMsgDialogParams.base.graphicsThread = 17; lpp_UtilsMsgDialogParams.base.accessThread = 19; lpp_UtilsMsgDialogParams.base.fontThread = 18; lpp_UtilsMsgDialogParams.base.soundThread = 16; lpp_UtilsMsgDialogParams.mode = PSP_UTILITY_MSGDIALOG_MODE_ERROR; lpp_UtilsMsgDialogParams.options = PSP_UTILITY_MSGDIALOG_OPTION_ERROR; lpp_UtilsMsgDialogParams.errorValue = error; int res = sceUtilityMsgDialogInitStart(&lpp_UtilsMsgDialogParams); if(res == 0) return 1; return(res); }
static void ShowMessageDialog(const char *message, int enableYesno) { clearScreen(0); flipScreen(); clearScreen(0); flipScreen(); ConfigureDialog(&dialog, sizeof(dialog)); dialog.mode = PSP_UTILITY_MSGDIALOG_MODE_TEXT; dialog.options = PSP_UTILITY_MSGDIALOG_OPTION_TEXT; if(enableYesno) dialog.options |= PSP_UTILITY_MSGDIALOG_OPTION_YESNO_BUTTONS|PSP_UTILITY_MSGDIALOG_OPTION_DEFAULT_NO; strcpy(dialog.message, message); sceUtilityMsgDialogInitStart(&dialog); for(;;) { switch(sceUtilityMsgDialogGetStatus()) { case 2: sceUtilityMsgDialogUpdate(1); break; case 3: sceUtilityMsgDialogShutdownStart(); break; case 0: return; } sceDisplayWaitVblankStart(); } }
void ui_msg_dialog (UI * ui, const char * msg) { pspUtilityMsgDialogParams params; unsigned int swap_count = 0; SceCtrlLatch latch; memset (¶ms, 0, sizeof (params)); params.base.size = sizeof (params); params.base.language = PSP_SYSTEMPARAM_LANGUAGE_ENGLISH; params.base.buttonSwap = PSP_UTILITY_ACCEPT_CROSS; /* Thread priorities */ params.base.graphicsThread = 17; params.base.accessThread = 19; params.base.fontThread = 18; params.base.soundThread = 16; params.mode = PSP_UTILITY_MSGDIALOG_MODE_TEXT; params.options = PSP_UTILITY_MSGDIALOG_OPTION_TEXT; snprintf (params.message, 512, msg); sceUtilityMsgDialogInitStart (¶ms); while (running) { int done = 0; /* directly use GU to avoid flickering with SDL */ sceGuStart (GU_DIRECT, list); sceGuClearColor (0xff554433); sceGuClearDepth (0); sceGuClear (GU_COLOR_BUFFER_BIT|GU_DEPTH_BUFFER_BIT); sceGuFinish (); sceGuSync (0,0); switch (sceUtilityMsgDialogGetStatus ()) { case PSP_UTILITY_DIALOG_NONE: break; case PSP_UTILITY_DIALOG_VISIBLE: sceUtilityMsgDialogUpdate (1); break; case PSP_UTILITY_DIALOG_QUIT: sceUtilityMsgDialogShutdownStart (); break; case PSP_UTILITY_DIALOG_FINISHED: done = 1; break; default: break; } sceDisplayWaitVblankStart (); sceGuSwapBuffers (); swap_count++; if (done) break; } /* hack for SDL compatibility. * if it end up on an odd buffer, SDL won't be displayed. * ie SDL will display in an hidden buffer */ if (swap_count & 1) sceGuSwapBuffers (); /* message dialog seems to causes strange latch behavior, next read * of latch will contains all button pressed during dialog. * read one to reset it */ sceCtrlReadLatch (&latch); }