#include "prx/libc/include/general/VabiMacros.hpp" #include #include #include extern "C" { int APS5_VABI sceSigninDialogInitialize(void); int APS5_VABI sceSigninDialogOpen(const void* param); int APS5_VABI sceSigninDialogUpdateStatus(void); int APS5_VABI sceSigninDialogGetStatus(void); int APS5_VABI sceSigninDialogGetResult(void* result); int APS5_VABI sceSigninDialogClose(void); int APS5_VABI sceSigninDialogTerminate(void); } namespace { void Require(bool value) { if (!value) std::abort(); } constexpr int kStatusNone = 0; constexpr int kStatusInitialized = 1; constexpr int kStatusFinished = 3; constexpr int kErrNotInitialized = static_cast(0x80B80003); constexpr int kErrAlreadyInitialized = static_cast(0x80B80004); constexpr int kErrNotFinished = static_cast(0x80B80005); constexpr int kErrArgNull = static_cast(0x80B8000D); constexpr int kResultUserCanceled = 1; } int main() { std::int64_t param = 0; std::int32_t result[4]; std::memset(result, 0x5a, sizeof(result)); Require(sceSigninDialogTerminate() == kErrNotInitialized); Require(sceSigninDialogOpen(¶m) == kErrNotInitialized); Require(sceSigninDialogClose() == kErrNotInitialized); Require(sceSigninDialogGetResult(result) == kErrNotInitialized); Require(sceSigninDialogGetStatus() == kStatusNone); Require(sceSigninDialogUpdateStatus() == kStatusNone); Require(sceSigninDialogInitialize() == 0); Require(sceSigninDialogInitialize() == kErrAlreadyInitialized); Require(sceSigninDialogGetStatus() == kStatusInitialized); Require(sceSigninDialogOpen(nullptr) == kErrArgNull); Require(sceSigninDialogGetResult(result) == kErrNotFinished); Require(sceSigninDialogOpen(¶m) == 0); Require(sceSigninDialogGetStatus() == kStatusFinished); Require(sceSigninDialogUpdateStatus() == kStatusFinished); Require(sceSigninDialogGetResult(nullptr) == kErrArgNull); Require(sceSigninDialogGetResult(result) == 0); Require(result[0] == kResultUserCanceled); Require(result[1] == 0); Require(result[2] == 0); Require(result[3] == 0); Require(sceSigninDialogClose() == 0); Require(sceSigninDialogTerminate() == 0); Require(sceSigninDialogTerminate() == kErrNotInitialized); Require(sceSigninDialogGetStatus() == kStatusNone); Require(sceSigninDialogInitialize() == 0); Require(sceSigninDialogGetStatus() == kStatusInitialized); Require(sceSigninDialogClose() == 0); Require(sceSigninDialogGetStatus() == kStatusFinished); std::memset(result, 0xa5, sizeof(result)); Require(sceSigninDialogGetResult(result) == 0); Require(result[0] == kResultUserCanceled); Require(result[1] == 0); Require(result[2] == 0); Require(result[3] == 0); Require(sceSigninDialogTerminate() == 0); }