fix(mbus): restore routing and user setting arguments

This commit is contained in:
boykopovar committed 2026-10-21 21:49:36 +03:00
1 parent 952b8ab038
commit ab4a949f07
2 files changed
+23 -20

No files matched your search

+20 -19
View File
@@ -5,6 +5,7 @@ struct MbusDeviceInfo;
struct MbusSimulatedHandleStatus;
struct MbusSparkState;
struct MbusDriverCallbacks;
struct MbusUsbPowerEntry;
struct MbusEvent;
struct MbusEventCallbacks;
struct MbusProcessInfo;
@@ -466,27 +467,27 @@ int APS5_VABI sceMbusResolveByDeviceId(std::int32_t deviceClass, std::uint64_t d
return 0;
}
int APS5_VABI sceMbusResolveByHandle() {
int APS5_VABI sceMbusResolveByHandle(std::int32_t deviceClass, std::int32_t handle, std::int32_t flags) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusResolveByPlayerId() {
int APS5_VABI sceMbusResolveByPlayerId(std::uint32_t deviceClass, std::uint32_t playerId, std::uint32_t first, std::uint32_t second) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusResolveByUserId() {
int APS5_VABI sceMbusResolveByUserId(std::uint32_t deviceClass, std::int32_t userId, std::uint32_t first, std::uint32_t second) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusSetAutoLoginMode() {
int APS5_VABI sceMbusSetAutoLoginMode(std::uint32_t mode) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusSetCameraAppModuleFocus() {
int APS5_VABI sceMbusSetCameraAppModuleFocus(std::int32_t moduleId) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
@@ -496,37 +497,37 @@ int APS5_VABI sceMbusSetDeviceFunctionState() {
return 0;
}
int APS5_VABI sceMbusSetDuckingSetting() {
int APS5_VABI sceMbusSetDuckingSetting(std::int32_t setting) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusSetProxy() {
int APS5_VABI sceMbusSetProxy(std::int32_t processId, std::int32_t first, std::int32_t second, std::int32_t third, std::uint64_t deviceId) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusSetRoutingMode() {
int APS5_VABI sceMbusSetRoutingMode(std::int32_t mode) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusSetScratchData() {
int APS5_VABI sceMbusSetScratchData(std::uint64_t deviceId, std::int32_t first, std::int32_t second) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusSetScratchDataUpdatedEventMask() {
int APS5_VABI sceMbusSetScratchDataUpdatedEventMask(std::uint32_t mask) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusSetSocialScreenAudioMode() {
int APS5_VABI sceMbusSetSocialScreenAudioMode(std::int32_t first, std::int32_t second) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusSetTestFlag() {
int APS5_VABI sceMbusSetTestFlag(std::uint32_t flags) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
@@ -536,17 +537,17 @@ int APS5_VABI sceMbusSetThreadParam(std::int32_t priority, std::uint64_t affinit
return 0;
}
int APS5_VABI sceMbusSetUsbPowerBlackList() {
int APS5_VABI sceMbusSetUsbPowerBlackList(std::int32_t first, std::uint8_t count, const MbusUsbPowerEntry* entries) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusSetUserMuteStatus() {
int APS5_VABI sceMbusSetUserMuteStatus(std::int32_t userId, std::int32_t status) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusSetVolumeDown() {
int APS5_VABI sceMbusSetVolumeDown(std::uint32_t deviceClass, std::uint8_t volume) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
@@ -556,7 +557,7 @@ int APS5_VABI sceMbusStartAudioOutAuxBroadcast() {
return 0;
}
int APS5_VABI sceMbusStartAudioOutSharePlay() {
int APS5_VABI sceMbusStartAudioOutSharePlay(std::int32_t mode) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
@@ -575,17 +576,17 @@ int APS5_VABI sceMbusTerm() {
return 0;
}
int APS5_VABI sceMbusUnregisterDriver() {
int APS5_VABI sceMbusUnregisterDriver(std::int32_t driverId) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusUserLogin() {
int APS5_VABI sceMbusUserLogin(std::int32_t userId) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
int APS5_VABI sceMbusUserLogout() {
int APS5_VABI sceMbusUserLogout(std::int32_t userId) {
NotImplemented_nid_no_patch(__func__);
return 0;
}
+3 -1
View File
@@ -8,7 +8,7 @@
- [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) - 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`.
- [sceMbus remaining declarations](../../../core/libs/prx/libSceMbus/PendingExports.cpp): GetDeviceInfoByConditionForDeviceService, GetDeviceInfoByCondition_ and SetDeviceFunctionState still require by-value aggregate layouts. AcquireControlList and Term return constants without reading incoming arguments, so their original parameter lists cannot be established from the callees. All protected stub bodies remain unchanged.
- [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.
@@ -19,3 +19,5 @@
- [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.
- [sceMbus device and driver payloads](../../../core/libs/prx/libSceMbus/PendingExports.cpp): device-info records occupy 256 bytes, descriptions 264 bytes, simulated-handle status and Spark state 16 bytes each. Their service-side fields remain unresolved. Driver registration copies four callback pointers; driver-event notification transports two 64-bit values without dereferencing them. Init, IsBgmProhibited, ReenableBgmForShellUi and RemoveCameraAppModuleFocus consume no incoming arguments.
- [sceMbus settings](../../../core/libs/prx/libSceMbus/PendingExports.cpp): USB power-list entries occupy 12 bytes, with an 8-bit count limited to 100; their fields remain unresolved. Several routing, scratch-data and proxy scalar meanings still require the service handler. Start/StopAudioOutAuxBroadcast and StopAudioOutSharePlay have confirmed zero-argument ABIs.