diff --git a/core/libs/prx/libSceMbus/PendingExports.cpp b/core/libs/prx/libSceMbus/PendingExports.cpp index 406d8894b4..bb30742371 100644 --- a/core/libs/prx/libSceMbus/PendingExports.cpp +++ b/core/libs/prx/libSceMbus/PendingExports.cpp @@ -584,4 +584,48 @@ int APS5_VABI sceMbusUserLogout(std::int32_t userId) { return 0; } +int APS5_VABI sceMbusGetCurrentChatBalanceId() { + NotImplemented_nid_no_patch(__func__); +} + +int APS5_VABI sceMbusGetInitialUser() { + NotImplemented_nid_no_patch(__func__); +} + +int APS5_VABI sceMbusGetSimulatedBusUsableStatusByBusType2() { + NotImplemented_nid_no_patch(__func__); +} + +int APS5_VABI sceMbusSetChatBalance() { + NotImplemented_nid_no_patch(__func__); +} + +int APS5_VABI sceMbusSetCronosOutputMode() { + NotImplemented_nid_no_patch(__func__); +} + +int APS5_VABI sceMbusSetCronosPrimaryUser() { + NotImplemented_nid_no_patch(__func__); +} + +int APS5_VABI sceMbusSetHmd2SocialScreenAudioMode() { + NotImplemented_nid_no_patch(__func__); +} + +int APS5_VABI sceMbusSetVibrationTriggerEffectWeakWhileEmbeddedMicInUse() { + NotImplemented_nid_no_patch(__func__); +} + +int APS5_VABI sceMbusSetVolumeDownForDiscPlayerFG() { + NotImplemented_nid_no_patch(__func__); +} + +int APS5_VABI sceMbusStartAudioOutScreenShare() { + NotImplemented_nid_no_patch(__func__); +} + +int APS5_VABI sceMbusStopAudioOutScreenShare() { + NotImplemented_nid_no_patch(__func__); +} + } diff --git a/core/libs/prx/libSceMbus/include/Api.hpp b/core/libs/prx/libSceMbus/include/Api.hpp index 16cb5634e9..5c3799cf5d 100644 --- a/core/libs/prx/libSceMbus/include/Api.hpp +++ b/core/libs/prx/libSceMbus/include/Api.hpp @@ -188,5 +188,16 @@ int APS5_VABI sceMbusTerm(); int APS5_VABI sceMbusUnregisterDriver(std::int32_t driverId); int APS5_VABI sceMbusUserLogin(std::int32_t userId); int APS5_VABI sceMbusUserLogout(std::int32_t userId); +int APS5_VABI sceMbusGetCurrentChatBalanceId(); +int APS5_VABI sceMbusGetInitialUser(); +int APS5_VABI sceMbusGetSimulatedBusUsableStatusByBusType2(); +int APS5_VABI sceMbusSetChatBalance(); +int APS5_VABI sceMbusSetCronosOutputMode(); +int APS5_VABI sceMbusSetCronosPrimaryUser(); +int APS5_VABI sceMbusSetHmd2SocialScreenAudioMode(); +int APS5_VABI sceMbusSetVibrationTriggerEffectWeakWhileEmbeddedMicInUse(); +int APS5_VABI sceMbusSetVolumeDownForDiscPlayerFG(); +int APS5_VABI sceMbusStartAudioOutScreenShare(); +int APS5_VABI sceMbusStopAudioOutScreenShare(); } diff --git a/docs/dev/debt/libSceMbus.md b/docs/dev/debt/libSceMbus.md index 30405dc799..16ec4d147d 100644 --- a/docs/dev/debt/libSceMbus.md +++ b/docs/dev/debt/libSceMbus.md @@ -6,6 +6,8 @@ ### Unknown function info +- [sceMbusGetCurrentChatBalanceId, sceMbusGetInitialUser, sceMbusGetSimulatedBusUsableStatusByBusType2, sceMbusSetChatBalance, sceMbusSetCronosOutputMode, sceMbusSetCronosPrimaryUser, sceMbusSetHmd2SocialScreenAudioMode, sceMbusSetVibrationTriggerEffectWeakWhileEmbeddedMicInUse, sceMbusSetVolumeDownForDiscPlayerFG, sceMbusStartAudioOutScreenShare and sceMbusStopAudioOutScreenShare](../../../core/libs/prx/libSceMbus/PendingExports.cpp) have unknown signatures and behaviour. The parameterless `int` declarations are import-resolution placeholders, not confirmed ABI signatures, and every call throws through `NotImplemented_nid_no_patch`. Only the names and NIDs are established by the [13.60 export inventory](https://github.com/xdCloudy/PS5-13.60-Function-Stub-Library/blob/bfec40deb4c47a17d7603ee2bc79aa6862c0c56b/data/firmware-13.60/libscembus-c03d5277f5.jsonl); not measured on a console. + - [sceDeviceServiceQueryDeviceInfo_](../../../core/libs/prx/libSceMbus/Export.cpp): the 112-byte device-info layout and the third argument's meaning remain unresolved. The second argument is a six-byte HID usage filter pointer, not an integer. Initialization takes an optional 16-byte parameter structure with an optional thread configuration; custom scheduling throws because the host has no event worker. `sceDeviceServiceGetEventState` takes a clear flag, not a device type. - [sceMbus remaining declarations](../../../core/libs/prx/libSceMbus/PendingExports.cpp): SetDeviceFunctionState takes a 64-bit device identifier and a 180-byte aggregate by value on the stack. Its service-side fields and source alignment remain unresolved; the declaration preserves the observed stack ABI with opaque storage. AcquireControlList and Term return constants without reading incoming arguments, so their original parameter lists cannot be established from the callees.