diff --git a/core/libs/prx/libSceVrTracker/Export.cpp b/core/libs/prx/libSceVrTracker/Export.cpp index 7e66fd197e..0f9005af70 100644 --- a/core/libs/prx/libSceVrTracker/Export.cpp +++ b/core/libs/prx/libSceVrTracker/Export.cpp @@ -1,3 +1,5 @@ +#include "prx/libc/include/general/ExportMacros.hpp" +#include "prx/libSceVrTracker/include/InventoryExports.hpp" #include "prx/libSceVrTracker/include/Api.hpp" #include #include @@ -228,3 +230,52 @@ int APS5_VABI sceVrTrackerUpdateMotionSensorData(const void* param) { } } + +extern "C" { + +int APS5_VABI libSceVrTrackerUnknown_5ucmy8hcSPk_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("5ucmy8hcSPk", libSceVrTrackerUnknown_5ucmy8hcSPk_nid_no_patch); + +int APS5_VABI libSceVrTrackerUnknown_9kB_plus_RsZt84M_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("9kB+RsZt84M", libSceVrTrackerUnknown_9kB_plus_RsZt84M_nid_no_patch); + +int APS5_VABI libSceVrTrackerUnknown_D6TJSfjTAk4_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("D6TJSfjTAk4", libSceVrTrackerUnknown_D6TJSfjTAk4_nid_no_patch); + +int APS5_VABI libSceVrTrackerUnknown_ERmwvjmfN_plus_c_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("ERmwvjmfN+c", libSceVrTrackerUnknown_ERmwvjmfN_plus_c_nid_no_patch); + +int APS5_VABI libSceVrTrackerUnknown_KFxq_minus_AnEL34_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("KFxq-AnEL34", libSceVrTrackerUnknown_KFxq_minus_AnEL34_nid_no_patch); + +int APS5_VABI libSceVrTrackerUnknown_SSi0OBa8RA0_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("SSi0OBa8RA0", libSceVrTrackerUnknown_SSi0OBa8RA0_nid_no_patch); + +int APS5_VABI libSceVrTrackerUnknown_hj7zLvyw_plus_pw_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("hj7zLvyw+pw", libSceVrTrackerUnknown_hj7zLvyw_plus_pw_nid_no_patch); + +int APS5_VABI libSceVrTrackerUnknown_mmzbIQNmT4o_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("mmzbIQNmT4o", libSceVrTrackerUnknown_mmzbIQNmT4o_nid_no_patch); + +int APS5_VABI libSceVrTrackerUnknown_tNJrfYsY3wY_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("tNJrfYsY3wY", libSceVrTrackerUnknown_tNJrfYsY3wY_nid_no_patch); + +} diff --git a/core/libs/prx/libSceVrTracker/include/InventoryExports.hpp b/core/libs/prx/libSceVrTracker/include/InventoryExports.hpp new file mode 100644 index 0000000000..8228f057da --- /dev/null +++ b/core/libs/prx/libSceVrTracker/include/InventoryExports.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include "SceTypes.hpp" + +extern "C" { + +int APS5_VABI libSceVrTrackerUnknown_5ucmy8hcSPk_nid_no_patch(); +int APS5_VABI libSceVrTrackerUnknown_9kB_plus_RsZt84M_nid_no_patch(); +int APS5_VABI libSceVrTrackerUnknown_D6TJSfjTAk4_nid_no_patch(); +int APS5_VABI libSceVrTrackerUnknown_ERmwvjmfN_plus_c_nid_no_patch(); +int APS5_VABI libSceVrTrackerUnknown_KFxq_minus_AnEL34_nid_no_patch(); +int APS5_VABI libSceVrTrackerUnknown_SSi0OBa8RA0_nid_no_patch(); +int APS5_VABI libSceVrTrackerUnknown_hj7zLvyw_plus_pw_nid_no_patch(); +int APS5_VABI libSceVrTrackerUnknown_mmzbIQNmT4o_nid_no_patch(); +int APS5_VABI libSceVrTrackerUnknown_tNJrfYsY3wY_nid_no_patch(); + +} diff --git a/core/libs/prx/libSceVrTracker/libSceVrTracker.hpp b/core/libs/prx/libSceVrTracker/libSceVrTracker.hpp index 81621f7084..5831e89f25 100644 --- a/core/libs/prx/libSceVrTracker/libSceVrTracker.hpp +++ b/core/libs/prx/libSceVrTracker/libSceVrTracker.hpp @@ -1,3 +1,4 @@ #pragma once #include "prx/libSceVrTracker/include/Api.hpp" +#include "prx/libSceVrTracker/include/InventoryExports.hpp" diff --git a/docs/dev/debt/libSceVrTracker.md b/docs/dev/debt/libSceVrTracker.md index a3e50959cb..68539e0350 100644 --- a/docs/dev/debt/libSceVrTracker.md +++ b/docs/dev/debt/libSceVrTracker.md @@ -11,3 +11,19 @@ ### Functional - [tracker lifecycle and devices](../../../core/libs/prx/libSceVrTracker/Export.cpp) (libSceVrTracker) - `sceVrTrackerQueryMemory`, `sceVrTrackerInit`, `sceVrTrackerTerm`, the three `sceVrTrackerRegisterDevice*` calls, `sceVrTrackerUnregisterDevice`, `sceVrTrackerRecalibrate`, `sceVrTrackerSetDurationUntilStatusNotTracking` and `sceVrTrackerGpuWaitAndCpuProcess` follow [shadPS4](https://github.com/shadps4-emu/shadPS4/blob/a808e76/src/core/libraries/vr_tracker/vr_tracker.cpp), a PS4 implementation: its struct layouts, memory sizes, argument checks, one handle per device type and `DEVICE_NOT_REGISTERED` for an HMD recalibration. Only the 128-byte init parameter is read; the 144-byte one throws. Unlike shadPS4, the init memory ranges are not looked up, a null init parameter and negative device types are refused. Terminating keeps the registered handles, as there. With no camera there is no GPU submission, so the GPU wait returns `NOT_EXECUTE_GPU_SUBMIT`. Not measured on a PS5 + +### Additional callable exports + +- [Additional callable exports](../../../core/libs/prx/libSceVrTracker/Export.cpp) - 9 entries present in both version-labelled images are import-resolution declarations only. All belong to module `libSceVrTracker`; four have logical library `libSceVrTracker` and five have logical library `libSceVrTrackerGpuTest`. Neither label independently authenticates retail firmware provenance. Parameter lists, return types and behavior are unverified; parameterless `int` declarations are placeholders, not verified ABI contracts. Every entry throws through `NotImplemented_nid_no_patch`. Unidentified names use literal NID aliases. No runtime functionality is implemented. Identified candidate names match their NIDs in the [public symbol database](https://github.com/zecoxao/sce_symbols/blob/2883963a0a514ba6e77407a08ef4730a65e88254/aerolib.csv) or [supplemental catalog](https://github.com/claimore22/ps5rs/blob/2304be5131221bae0dac24b9767cabffda33f747/data/nids.csv). + +| Name | NID | +| --- | --- | +| `Unknown` | `5ucmy8hcSPk` | +| `Unknown` | `9kB+RsZt84M` | +| `Unknown` | `D6TJSfjTAk4` | +| `Unknown` | `ERmwvjmfN+c` | +| `Unknown` | `KFxq-AnEL34` | +| `Unknown` | `SSi0OBa8RA0` | +| `Unknown` | `hj7zLvyw+pw` | +| `Unknown` | `mmzbIQNmT4o` | +| `Unknown` | `tNJrfYsY3wY` |