From cf7c5990873e6ff31fce6ce5003ed7c874efa228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Franch?= Date: Mon, 5 Oct 2026 19:32:16 +0200 Subject: [PATCH] feat(libs): implement scePlayGoDialogGetStatus Rename the NOAMxY2EGS0 stub and return the dialog's current status without advancing it. Co-Authored-By: Claude --- core/libs/prx/libScePlayGoDialog/Export.cpp | 6 ++---- core/libs/tests/GuestPlayGoDialog.cpp | 5 +++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/core/libs/prx/libScePlayGoDialog/Export.cpp b/core/libs/prx/libScePlayGoDialog/Export.cpp index 5b85d52c3..16615b02e 100644 --- a/core/libs/prx/libScePlayGoDialog/Export.cpp +++ b/core/libs/prx/libScePlayGoDialog/Export.cpp @@ -74,10 +74,8 @@ int APS5_VABI scePlayGoDialogGetResult(void* result) { return 0; } -APS5_EXPORT("NOAMxY2EGS0", scePlayGoDialogUnknown00); -int APS5_VABI scePlayGoDialogUnknown00(void) { - NotImplemented_nid_no_patch("NOAMxY2EGS0"); - return 0; +int APS5_VABI scePlayGoDialogGetStatus(void) { + return g_status.load(); } } diff --git a/core/libs/tests/GuestPlayGoDialog.cpp b/core/libs/tests/GuestPlayGoDialog.cpp index 9c313bda1..40a6a6710 100644 --- a/core/libs/tests/GuestPlayGoDialog.cpp +++ b/core/libs/tests/GuestPlayGoDialog.cpp @@ -10,6 +10,7 @@ int APS5_VABI scePlayGoDialogTerminate(void); int APS5_VABI scePlayGoDialogOpen(const void* param); int APS5_VABI scePlayGoDialogClose(void); int APS5_VABI scePlayGoDialogUpdateStatus(void); +int APS5_VABI scePlayGoDialogGetStatus(void); int APS5_VABI scePlayGoDialogGetResult(void* result); } @@ -21,6 +22,7 @@ int main() { constexpr std::int32_t paramInvalid = static_cast(0x80ED0003); constexpr std::int32_t invalidState = static_cast(0x80ED0005); + Require(scePlayGoDialogGetStatus() == 0); Require(scePlayGoDialogTerminate() == notInitialized); Require(scePlayGoDialogOpen(nullptr) == paramInvalid); Require(scePlayGoDialogGetResult(nullptr) == notInitialized); @@ -29,11 +31,13 @@ int main() { Require(scePlayGoDialogOpen(&openParam) == invalidState); Require(scePlayGoDialogInitialize() == 0); + Require(scePlayGoDialogGetStatus() == 1); Require(scePlayGoDialogInitialize() == alreadyInitialized); Require(scePlayGoDialogOpen(nullptr) == paramInvalid); Require(scePlayGoDialogUpdateStatus() == 1); Require(scePlayGoDialogOpen(&openParam) == 0); + Require(scePlayGoDialogGetStatus() == 3); Require(scePlayGoDialogUpdateStatus() == 3); PlayGoDialogResult result{}; @@ -41,6 +45,7 @@ int main() { Require(result.result == 0); Require(scePlayGoDialogClose() == 0); Require(scePlayGoDialogTerminate() == 0); + Require(scePlayGoDialogGetStatus() == 0); Require(scePlayGoDialogTerminate() == notInitialized); return 0; }