diff --git a/Core/Dialog/PSPDialog.cpp b/Core/Dialog/PSPDialog.cpp index d4a59f99b3..89c6fca625 100644 --- a/Core/Dialog/PSPDialog.cpp +++ b/Core/Dialog/PSPDialog.cpp @@ -51,6 +51,18 @@ const char *UtilityDialogTypeToString(UtilityDialogType type) { } } +const char *UtilityDialogStatusToString(PSPDialog::DialogStatus status) { + switch (status) { + case PSPDialog::SCE_UTILITY_STATUS_NONE: return "STATUS_NONE"; + case PSPDialog::SCE_UTILITY_STATUS_INITIALIZE: return "STATUS_INITIALIZE"; + case PSPDialog::SCE_UTILITY_STATUS_RUNNING: return "STATUS_RUNNING"; + case PSPDialog::SCE_UTILITY_STATUS_FINISHED: return "STATUS_FINISHED"; + case PSPDialog::SCE_UTILITY_STATUS_SHUTDOWN: return "STATUS_SHUTDOWN"; + case PSPDialog::SCE_UTILITY_STATUS_SCREENSHOT_UNKNOWN: return "STATUS_SCREENSHOT_UNKNOWN"; + default: return "(unknown)"; + } +} + void PSPDialog::InitCommon() { UpdateCommon(); diff --git a/Core/Dialog/PSPDialog.h b/Core/Dialog/PSPDialog.h index bfe032aff5..cf79855266 100644 --- a/Core/Dialog/PSPDialog.h +++ b/Core/Dialog/PSPDialog.h @@ -138,3 +138,4 @@ private: }; const char *UtilityDialogTypeToString(UtilityDialogType type); +const char *UtilityDialogStatusToString(PSPDialog::DialogStatus status); diff --git a/Core/Dialog/PSPScreenshotDialog.h b/Core/Dialog/PSPScreenshotDialog.h index 760cd8fcc7..f6195faec2 100644 --- a/Core/Dialog/PSPScreenshotDialog.h +++ b/Core/Dialog/PSPScreenshotDialog.h @@ -42,4 +42,3 @@ protected: int mode; PSPPointer params_; }; - diff --git a/Core/HLE/sceUtility.cpp b/Core/HLE/sceUtility.cpp index f3cd4bcee1..7668a68a38 100644 --- a/Core/HLE/sceUtility.cpp +++ b/Core/HLE/sceUtility.cpp @@ -45,6 +45,7 @@ #include "Core/HLE/sceUtility.h" #include "Core/HLE/sceNet.h" +#include "Core/Dialog/PSPDialog.h" #include "Core/Dialog/PSPSaveDialog.h" #include "Core/Dialog/PSPMsgDialog.h" #include "Core/Dialog/PSPPlaceholderDialog.h" @@ -158,6 +159,7 @@ static PSPScreenshotDialog *screenshotDialog; static PSPGamedataInstallDialog *gamedataInstallDialog; static PSPNpSigninDialog *npSigninDialog; +// A lot of state seems to be shared between the various dialog types. static int oldStatus = -1; static std::map currentlyLoadedModules; static int volatileUnlockEvent = -1; @@ -473,14 +475,14 @@ static int sceUtilitySavedataGetStatus() { return hleLogDebug(Log::sceUtility, SCE_ERROR_UTILITY_WRONG_TYPE, "wrong dialog type"); } - int status = saveDialog->GetStatus(); + const PSPDialog::DialogStatus status = saveDialog->GetStatus(); hleEatCycles(200); CleanupDialogThreads(); if (oldStatus != status) { oldStatus = status; - return hleLogDebug(Log::sceUtility, status); + return hleLogDebug(Log::sceUtility, status, "status changed: %s", UtilityDialogStatusToString(status)); } - return hleLogVerbose(Log::sceUtility, status); + return hleLogVerbose(Log::sceUtility, status, "status: %s", UtilityDialogStatusToString(status)); } static int sceUtilitySavedataUpdate(int animSpeed) { @@ -655,13 +657,13 @@ static int sceUtilityMsgDialogGetStatus() { return hleLogDebug(Log::sceUtility, SCE_ERROR_UTILITY_WRONG_TYPE, "wrong dialog type"); } - int status = msgDialog->GetStatus(); + const PSPDialog::DialogStatus status = msgDialog->GetStatus(); CleanupDialogThreads(); if (oldStatus != status) { oldStatus = status; - return hleLogDebug(Log::sceUtility, status); + return hleLogDebug(Log::sceUtility, status, "status changed: %s", UtilityDialogStatusToString(status)); } - return hleLogVerbose(Log::sceUtility, status); + return hleLogVerbose(Log::sceUtility, status, "status: %s", UtilityDialogStatusToString(status)); } static int sceUtilityMsgDialogAbort() { @@ -708,13 +710,13 @@ static int sceUtilityOskGetStatus() { return hleLogDebug(Log::sceUtility, SCE_ERROR_UTILITY_WRONG_TYPE, "wrong dialog type"); } - int status = oskDialog->GetStatus(); + const PSPDialog::DialogStatus status = oskDialog->GetStatus(); CleanupDialogThreads(); if (oldStatus != status) { oldStatus = status; - return hleLogDebug(Log::sceUtility, status); + return hleLogDebug(Log::sceUtility, status, "status changed: %s", UtilityDialogStatusToString(status)); } - return hleLogVerbose(Log::sceUtility, status); + return hleLogVerbose(Log::sceUtility, status, "status: %s", UtilityDialogStatusToString(status)); } @@ -750,13 +752,13 @@ static int sceUtilityNetconfGetStatus() { return hleLogDebug(Log::sceUtility, SCE_ERROR_UTILITY_WRONG_TYPE, "wrong dialog type"); } - int status = netDialog->GetStatus(); + const PSPDialog::DialogStatus status = netDialog->GetStatus(); CleanupDialogThreads(); if (oldStatus != status) { oldStatus = status; - return hleLogDebug(Log::sceUtility, status); + return hleLogDebug(Log::sceUtility, status, "status changed: %s", UtilityDialogStatusToString(status)); } - return hleLogVerbose(Log::sceUtility, status); + return hleLogVerbose(Log::sceUtility, status, "status: %s", UtilityDialogStatusToString(status)); } /** @@ -1043,13 +1045,13 @@ static int sceUtilityScreenshotGetStatus() { return hleLogDebug(Log::sceUtility, SCE_ERROR_UTILITY_WRONG_TYPE, "wrong dialog type"); } - int status = screenshotDialog->GetStatus(); + const PSPDialog::DialogStatus status = screenshotDialog->GetStatus(); CleanupDialogThreads(); if (oldStatus != status) { oldStatus = status; - return hleLogWarning(Log::sceUtility, status); + return hleLogWarning(Log::sceUtility, status, "status changed: %s", UtilityDialogStatusToString(status)); } - return hleLogVerbose(Log::sceUtility, status); + return hleLogVerbose(Log::sceUtility, status, "status: %s", UtilityDialogStatusToString(status)); } static int sceUtilityScreenshotContStart(u32 paramAddr) { @@ -1096,9 +1098,9 @@ static int sceUtilityGamedataInstallGetStatus() { return hleLogDebug(Log::sceUtility, SCE_ERROR_UTILITY_WRONG_TYPE, "wrong dialog type"); } - int status = gamedataInstallDialog->GetStatus(); + const PSPDialog::DialogStatus status = gamedataInstallDialog->GetStatus(); CleanupDialogThreads(); - return hleLogDebug(Log::sceUtility, status); + return hleLogDebug(Log::sceUtility, status, "status: %s", UtilityDialogStatusToString(status)); } static int sceUtilityGamedataInstallAbort() { @@ -1251,13 +1253,13 @@ static int sceUtilityNpSigninGetStatus() { return hleLogDebug(Log::sceUtility, SCE_ERROR_UTILITY_WRONG_TYPE, "wrong dialog type"); } - int status = npSigninDialog->GetStatus(); + const PSPDialog::DialogStatus status = npSigninDialog->GetStatus(); CleanupDialogThreads(); if (oldStatus != status) { oldStatus = status; - return hleLogDebug(Log::sceUtility, status); + return hleLogDebug(Log::sceUtility, status, "status changed: %s", UtilityDialogStatusToString(status)); } - return hleLogVerbose(Log::sceUtility, status); + return hleLogVerbose(Log::sceUtility, status, "status: %s", UtilityDialogStatusToString(status)); } static void sceUtilityInstallInitStart(u32 unknown) {