Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ps3dev/PSL1GHT/llms.txt

Use this file to discover all available pages before exploring further.

The System Utilities API provides essential functions for managing system events and retrieving system configuration parameters.

Event Management

sysUtilRegisterCallback

Register a callback function for system events.
s32 sysUtilRegisterCallback(s32 slot, sysutilCallback cb, void *usrdata);
slot
s32
Event slot identifier. Multiple callbacks can be registered in different slots (0-3). All system events are delivered to all slots in order.Possible values:
  • SYSUTIL_EVENT_SLOT0 (0)
  • SYSUTIL_EVENT_SLOT1 (1)
  • SYSUTIL_EVENT_SLOT2 (2)
  • SYSUTIL_EVENT_SLOT3 (3)
cb
sysutilCallback
Pointer to callback function. The callback receives:
  • status - Event value (u64)
  • param - Event parameter (u64)
  • usrdata - User data pointer
usrdata
void*
Pointer to user data passed to the callback function. May be NULL.
return
s32
Returns SYSUTIL_OK (0) on success, nonzero on error.

sysUtilCheckCallback

Check for pending system events.
s32 sysUtilCheckCallback();
This function should be called regularly (typically in the main loop) to process system events. When an event occurs, the registered callback functions are invoked.
return
s32
Returns SYSUTIL_OK (0) on success, nonzero on error.

sysUtilUnregisterCallback

Unregister a callback function.
s32 sysUtilUnregisterCallback(s32 slot);
slot
s32
Event slot identifier to unregister (0-3).
return
s32
Returns SYSUTIL_OK (0) on success, nonzero on error.

System Parameters

sysUtilGetSystemParamInt

Get an integer system parameter.
s32 sysUtilGetSystemParamInt(s32 id, s32 *value);
id
s32
Parameter ID to retrieve.
value
s32*
Pointer to store the retrieved integer value.
return
s32
Returns SYSUTIL_OK (0) on success, nonzero on error.

sysUtilGetSystemParamString

Get a string system parameter.
s32 sysUtilGetSystemParamString(s32 id, char *buf, u32 bufsize);
id
s32
Parameter ID to retrieve.Common string parameters:
  • SYSUTIL_SYSTEMPARAM_ID_NICKNAME (0x0113) - User nickname
  • SYSUTIL_SYSTEMPARAM_ID_CURRENT_USERNAME (0x0131) - Current username
buf
char*
Buffer to store the retrieved string.
bufsize
u32
Size of the buffer in bytes.Recommended sizes:
  • Nickname: SYSUTIL_SYSTEMPARAM_NICKNAME_SIZE (128)
  • Username: SYSUTIL_SYSTEMPARAM_CURRENT_USERNAME_SIZE (64)
return
s32
Returns SYSUTIL_OK (0) on success, nonzero on error.

System Events

Events delivered to registered callbacks:
SYSUTIL_EXIT_GAME
0x0101
Exit game requested by user.
SYSUTIL_DRAW_BEGIN
0x0121
XMB menu drawing has started.
SYSUTIL_DRAW_END
0x0122
XMB menu drawing has finished.
SYSUTIL_MENU_OPEN
0x0131
XMB menu has been opened.
SYSUTIL_MENU_CLOSE
0x0132
XMB menu has been closed.
SYSUTIL_OSK_LOADED
0x0502
On-screen keyboard has been loaded.
SYSUTIL_OSK_DONE
0x0503
On-screen keyboard has finished user entry.
SYSUTIL_OSK_UNLOADED
0x0504
On-screen keyboard has been unloaded.
SYSUTIL_OSK_INPUT_ENTERED
0x0505
On-screen keyboard user entered input.
SYSUTIL_OSK_INPUT_CANCELED
0x0506
On-screen keyboard input was canceled.

Language Codes

Example Usage

#include <sysutil/sysutil.h>
#include <stdio.h>

// Event callback function
void eventCallback(u64 status, u64 param, void *usrdata) {
    switch(status) {
        case SYSUTIL_EXIT_GAME:
            printf("Exit game requested\n");
            // Set flag to exit main loop
            *(int*)usrdata = 1;
            break;
        case SYSUTIL_MENU_OPEN:
            printf("XMB menu opened\n");
            break;
        case SYSUTIL_MENU_CLOSE:
            printf("XMB menu closed\n");
            break;
    }
}

int main() {
    int exitFlag = 0;
    s32 lang;
    char nickname[SYSUTIL_SYSTEMPARAM_NICKNAME_SIZE];
    
    // Register callback for system events
    sysUtilRegisterCallback(SYSUTIL_EVENT_SLOT0, eventCallback, &exitFlag);
    
    // Get system language
    if(sysUtilGetSystemParamInt(SYSUTIL_SYSTEMPARAM_ID_LANG, &lang) == SYSUTIL_OK) {
        printf("System language: %d\n", lang);
    }
    
    // Get user nickname
    if(sysUtilGetSystemParamString(SYSUTIL_SYSTEMPARAM_ID_NICKNAME, 
                                    nickname, 
                                    SYSUTIL_SYSTEMPARAM_NICKNAME_SIZE) == SYSUTIL_OK) {
        printf("User nickname: %s\n", nickname);
    }
    
    // Main loop
    while(!exitFlag) {
        // Check for system events
        sysUtilCheckCallback();
        
        // Your game logic here...
    }
    
    // Cleanup
    sysUtilUnregisterCallback(SYSUTIL_EVENT_SLOT0);
    
    return 0;
}