fix(mbus): restore event queue and diagnostic arguments

This commit is contained in:
boykopovar committed 2026-10-21 21:49:35 +03:00
1 parent f5e1929f8b
commit e6115d30f2
2 files changed
+21 -17

No files matched your search

+18 -16
View File
@@ -1,5 +1,7 @@
#include "prx/libc/include/General.hpp"
struct MbusEvent;
struct MbusEventCallbacks;
struct MbusProcessInfo;
struct MbusStartupInfo;
struct MbusStartupParam;
@@ -209,27 +211,27 @@ int APS5_VABI sceMbusDebugStartApplication2(std::int32_t appId, std::int32_t fir
return 0;
}
int APS5_VABI sceMbusDebugStartApplicationNull() {
int APS5_VABI sceMbusDebugStartApplicationNull(std::int32_t appId, std::int32_t first, std::int32_t second, std::uint8_t firstFlag, std::uint8_t secondFlag) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusDebugSuspendApplication() {
int APS5_VABI sceMbusDebugSuspendApplication(std::uint32_t appId) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusDebugTerminateApplication() {
int APS5_VABI sceMbusDebugTerminateApplication(std::uint32_t appId) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusDebugTerminateProcess() {
int APS5_VABI sceMbusDebugTerminateProcess(std::int32_t processId) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusDetachFromApplicationByPid() {
int APS5_VABI sceMbusDetachFromApplicationByPid(std::int32_t processId, std::int32_t deviceClass) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
@@ -239,12 +241,12 @@ int APS5_VABI sceMbusDisableBgmForShellUi() {
return 0;
}
int APS5_VABI sceMbusDisableChat() {
int APS5_VABI sceMbusDisableChat(std::uint32_t deviceClass) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusDisconnectDevice() {
int APS5_VABI sceMbusDisconnectDevice(std::uint64_t deviceId) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
@@ -259,17 +261,17 @@ int APS5_VABI sceMbusDumpDeviceInfo() {
return 0;
}
int APS5_VABI sceMbusDumpHandleStatusInfo() {
int APS5_VABI sceMbusDumpHandleStatusInfo(std::uint64_t control, std::int32_t processId) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusDumpHandleStatusInfoAll() {
int APS5_VABI sceMbusDumpHandleStatusInfoAll(std::uint32_t flags) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusDumpModuleStateInfo() {
int APS5_VABI sceMbusDumpModuleStateInfo(std::uint64_t control) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
@@ -289,7 +291,7 @@ int APS5_VABI sceMbusDumpPortHandleInfo() {
return 0;
}
int APS5_VABI sceMbusDumpProcMediaInfo() {
int APS5_VABI sceMbusDumpProcMediaInfo(std::uint64_t control) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
@@ -304,17 +306,17 @@ int APS5_VABI sceMbusDumpUserMediaInfo() {
return 0;
}
int APS5_VABI sceMbusEnableChat() {
int APS5_VABI sceMbusEnableChat(std::uint32_t deviceClass) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusEnterAudioOutAutoAttenuation() {
int APS5_VABI sceMbusEnterAudioOutAutoAttenuation(std::int32_t first, std::int32_t second) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusEventBusStatusChangeSubscribe() {
int APS5_VABI sceMbusEventBusStatusChangeSubscribe(std::int32_t eventHandle, std::uint32_t first, std::uint32_t second, std::uint64_t firstValue, std::uint64_t secondValue) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
@@ -324,12 +326,12 @@ int APS5_VABI sceMbusEventBusStatusChangeUnsubscribe() {
return 0;
}
int APS5_VABI sceMbusEventCallbackFuncsInit_() {
int APS5_VABI sceMbusEventCallbackFuncsInit_(MbusEventCallbacks* callbacks, std::uint32_t size) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusEventCreate_() {
int APS5_VABI sceMbusEventCreate_(std::uint32_t flags, MbusEvent* buffer, std::uint32_t capacity, const MbusEventCallbacks* callbacks, void* userData) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
+3 -1
View File
@@ -8,10 +8,12 @@
- [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.
- [libSceMbus firmware 3.20 pending exports](../../../core/libs/prx/libSceMbus/PendingExports.cpp) - 76 remaining symbol names are present in [the PS5 3.20 libSceMbus export list](https://github.com/DNNDHH/PS5-3.20_Libs/blob/b2a77c09cd71c01f34c790cfbe98c751a13262ad/libSceMbus.c). Their signatures and console behaviour are unverified. The declarations use the existing no-parameter unknown-signature convention solely to resolve imports, and every call throws through `NotImplemented_nid_no_patch`.
- [libSceMbus firmware 3.20 pending exports](../../../core/libs/prx/libSceMbus/PendingExports.cpp) - 52 remaining symbol names are present in [the PS5 3.20 libSceMbus export list](https://github.com/DNNDHH/PS5-3.20_Libs/blob/b2a77c09cd71c01f34c790cfbe98c751a13262ad/libSceMbus.c). Their signatures and console behaviour are unverified. The declarations use the existing no-parameter unknown-signature convention solely to resolve imports, and every call throws through `NotImplemented_nid_no_patch`.
- [sceMbusAddHandleByDeviceId](../../../core/libs/prx/libSceMbus/PendingExports.cpp): the six-argument ABI is confirmed, including the 64-bit device ID. The meanings of the last three 32-bit fields require the device-service backend.
- [sceMbus control and handle registration](../../../core/libs/prx/libSceMbus/PendingExports.cpp): argument positions and transmitted widths are recovered for control acquisition, handle registration, process attachment, user binding and device-ID conversion. Several scalar field meanings still depend on the service protocol; the 64-bit control value and unnamed registration fields must not be interpreted as pointers. AcquireControlList returns a constant error without reading its incoming arguments, so its source signature remains unresolved.
- [sceMbus debug process and device queries](../../../core/libs/prx/libSceMbus/PendingExports.cpp): process information is transmitted as 16 bytes, startup input/output as eight bytes, control status as 24 bytes, internal information as 2832 bytes and priority information as 3088 bytes. Device enumeration writes a 32-bit count followed by 396-byte entries. These pointee fields and the semantics of unnamed process flags remain unresolved; declarations use distinct incomplete types instead of guessing their fields.
- [sceMbus event subscriptions](../../../core/libs/prx/libSceMbus/PendingExports.cpp): the subscription transports two 32-bit and two 64-bit fields whose service-side meanings remain unresolved. EventCreate uses 80-byte queue records and copies a 16-byte callback table; callback signatures and event fields still require the dispatch path. EventCallbackFuncsInit only clears memory and has no defined return value; its protected stub retains the existing integer return. Eight dump/BGM wrappers have confirmed zero-argument ABIs. EventBusStatusChangeUnsubscribe ignores its first incoming argument and consumes a 32-bit second argument; its first parameter type remains unresolved.