From 6571ace5bda2a092c7ce38bf1eaebd1fb132ab63 Mon Sep 17 00:00:00 2001 From: Phi1ow <331962174+Phi1ow@users.noreply.github.com> Date: Mon, 5 Oct 2026 00:32:13 +0200 Subject: [PATCH] feat(errordialog): log the error code and record the silent stub Adds the dialog to the silent-stubs list in docs/dev/TechnicalDebt.md, since it finishes without showing anything. sceErrorDialogOpen now logs the error code and user id from the parameter (offsets 4 and 8), like libSceMsgDialog logs its message, so an error a title would have shown the player stays visible instead of disappearing. --- core/libs/prx/libSceErrorDialog/Export.cpp | 6 ++++++ docs/dev/TechnicalDebt.md | 1 + 2 files changed, 7 insertions(+) diff --git a/core/libs/prx/libSceErrorDialog/Export.cpp b/core/libs/prx/libSceErrorDialog/Export.cpp index 46b7777ae..17d76ba8e 100644 --- a/core/libs/prx/libSceErrorDialog/Export.cpp +++ b/core/libs/prx/libSceErrorDialog/Export.cpp @@ -4,6 +4,7 @@ #include #include "SceTypes.hpp" +#include "HitLog.hpp" #include "prx/libc/include/General.hpp" #ifdef _WIN32 @@ -57,6 +58,11 @@ int APS5_VABI sceErrorDialogOpen(const void* param) { std::int32_t size = 0; std::memcpy(&size, param, sizeof(size)); if (static_cast(size) != kParamSize) return kErrParam; + std::int32_t errorCode = 0; + std::int32_t userId = 0; + std::memcpy(&errorCode, static_cast(param) + 4, sizeof(errorCode)); + std::memcpy(&userId, static_cast(param) + 8, sizeof(userId)); + APS5_HIT("ERRORDIALOG", "open: error_code=0x%08X user_id=%d", errorCode, userId); g_status = kStatusRunning; return kErrOk; } diff --git a/docs/dev/TechnicalDebt.md b/docs/dev/TechnicalDebt.md index a66170e1c..b3c9bf731 100644 --- a/docs/dev/TechnicalDebt.md +++ b/docs/dev/TechnicalDebt.md @@ -13,6 +13,7 @@ Throughout the project, every function at every stage either **does exactly what it's supposed to or throws an exception**. Everywhere... except: - [libSceSaveDataDialog.native](../../core/libs/prx/libSceSaveDataDialog.native/Export.cpp) - [libSceCommonDialog](../../core/libs/prx/libSceCommonDialog/Export.cpp) +- [libSceErrorDialog](../../core/libs/prx/libSceErrorDialog/Export.cpp) - the error dialog runs the state machine but shows nothing; the error code passed to `sceErrorDialogOpen` is only logged - [libSceHmd](../../core/libs/prx/libSceHmd/Export.cpp) implements only the disconnected-headset path: initialization succeeds, device queries report `NotDetected`, and opening a device returns `DeviceDisconnected`. Headset support, tracking, rendering and additional HMD exports are not implemented; SDK-level ABI compatibility and in-game behaviour remain unverified. - [libSceNpCommerce](../../core/libs/prx/libSceNpCommerce/Export.cpp) - the PS Store icon show/hide calls do nothing - [sceVideoOutOpen](../../core/libs/prx/libSceVideoOut/src/Output.cpp) validates the priority and CPU affinity that the open param requests for the VideoOut service thread but does not apply them: the port's present and vblank threads are host threads, and guest priorities and affinities do not reach host scheduling