diff --git a/core/libs/prx/libScePad/CMakeLists.txt b/core/libs/prx/libScePad/CMakeLists.txt index baaa5c8899..1fcdea18f8 100644 --- a/core/libs/prx/libScePad/CMakeLists.txt +++ b/core/libs/prx/libScePad/CMakeLists.txt @@ -1,5 +1,6 @@ add_library(libScePad SHARED EXCLUDE_FROM_ALL ${CMAKE_CURRENT_SOURCE_DIR}/Export.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/InventoryExports.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/PadState.cpp ) target_include_directories(libScePad PRIVATE ${LIBS_INCLUDE_DIR}) diff --git a/core/libs/prx/libScePad/InventoryExports.cpp b/core/libs/prx/libScePad/InventoryExports.cpp new file mode 100644 index 0000000000..91f7312888 --- /dev/null +++ b/core/libs/prx/libScePad/InventoryExports.cpp @@ -0,0 +1,72 @@ +#include "SceTypes.hpp" +#include "prx/libc/include/General.hpp" +#include "prx/libc/include/general/ExportMacros.hpp" + +extern "C" { + +int APS5_VABI libScePadUnknown_1YXygubV1Gc_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("1YXygubV1Gc", libScePadUnknown_1YXygubV1Gc_nid_no_patch); + +int APS5_VABI libScePadUnknown_3LNwlXW4f54_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("3LNwlXW4f54", libScePadUnknown_3LNwlXW4f54_nid_no_patch); + +int APS5_VABI libScePadUnknown_7xA_plus_hFtvBCA_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("7xA+hFtvBCA", libScePadUnknown_7xA_plus_hFtvBCA_nid_no_patch); + +int APS5_VABI libScePadUnknown_KY0hSB_plus_Uyfo_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("KY0hSB+Uyfo", libScePadUnknown_KY0hSB_plus_Uyfo_nid_no_patch); + +int APS5_VABI libScePadUnknown_Ql4q5ePNaw0_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("Ql4q5ePNaw0", libScePadUnknown_Ql4q5ePNaw0_nid_no_patch); + +int APS5_VABI libScePadUnknown_UeUUvNOgXKU_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("UeUUvNOgXKU", libScePadUnknown_UeUUvNOgXKU_nid_no_patch); + +int APS5_VABI libScePadUnknown_XFqNcPu1meI_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("XFqNcPu1meI", libScePadUnknown_XFqNcPu1meI_nid_no_patch); + +int APS5_VABI libScePadUnknown_eqldkyw7GAo_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("eqldkyw7GAo", libScePadUnknown_eqldkyw7GAo_nid_no_patch); + +int APS5_VABI libScePadUnknown_ickjfjk9okM_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("ickjfjk9okM", libScePadUnknown_ickjfjk9okM_nid_no_patch); + +int APS5_VABI libScePadUnknown_qJgegDoE0g8_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("qJgegDoE0g8", libScePadUnknown_qJgegDoE0g8_nid_no_patch); + +int APS5_VABI libScePadUnknown_r2S7Nuicg8s_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("r2S7Nuicg8s", libScePadUnknown_r2S7Nuicg8s_nid_no_patch); + +int APS5_VABI libScePadUnknown_wMvV6XbeFd0_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("wMvV6XbeFd0", libScePadUnknown_wMvV6XbeFd0_nid_no_patch); + +int APS5_VABI libScePadUnknown_ybhL4IoyGZA_nid_no_patch() { + NotImplemented_nid_no_patch(__func__); +} +APS5_EXPORT("ybhL4IoyGZA", libScePadUnknown_ybhL4IoyGZA_nid_no_patch); + +} diff --git a/docs/dev/debt/libScePad.md b/docs/dev/debt/libScePad.md index 4a5921596c..fa61384f23 100644 --- a/docs/dev/debt/libScePad.md +++ b/docs/dev/debt/libScePad.md @@ -1,5 +1,25 @@ # libScePad technical debt +### Additional callable exports + +- [Additional callable exports](../../../core/libs/prx/libScePad/InventoryExports.cpp) - 13 entries present in both version-labelled images are import-resolution declarations only. Neither label independently authenticates retail firmware provenance. These NIDs are absent from the pinned public 3.20 catalogue. 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. Data exports require separate layout and ownership analysis. 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` | `1YXygubV1Gc` | +| `Unknown` | `3LNwlXW4f54` | +| `Unknown` | `7xA+hFtvBCA` | +| `Unknown` | `KY0hSB+Uyfo` | +| `Unknown` | `Ql4q5ePNaw0` | +| `Unknown` | `UeUUvNOgXKU` | +| `Unknown` | `XFqNcPu1meI` | +| `Unknown` | `eqldkyw7GAo` | +| `Unknown` | `ickjfjk9okM` | +| `Unknown` | `qJgegDoE0g8` | +| `Unknown` | `r2S7Nuicg8s` | +| `Unknown` | `wMvV6XbeFd0` | +| `Unknown` | `ybhL4IoyGZA` | + ### Silent stubs - [scePadEnableExtensionPort](../../../core/libs/prx/libScePad/Export.cpp) returns success without changing extension-port state. The boolean argument is recovered; connected-device behavior is not modeled.