From 35cf8d56cdf8a527066989dbdc363338aea587ea Mon Sep 17 00:00:00 2001 From: boykopovar Date: Sat, 24 Oct 2026 14:08:30 +0300 Subject: [PATCH] refactor(sdk): add canonical headers for core libraries --- core/libs/CMakeLists.txt | 2 + .../prx/libSceAgc/Acb/include/Control.hpp | 22 + .../prx/libSceAgc/Acb/include/Dispatch.hpp | 10 + .../libs/prx/libSceAgc/Acb/include/Memory.hpp | 20 + core/libs/prx/libSceAgc/Acb/include/Sync.hpp | 16 + core/libs/prx/libSceAgc/Cb/include/Branch.hpp | 12 + .../prx/libSceAgc/Cb/include/Dispatch.hpp | 10 + .../prx/libSceAgc/Cb/include/Registers.hpp | 16 + core/libs/prx/libSceAgc/Cb/include/Sync.hpp | 13 +- .../libSceAgc/DcbDraw/include/DrawIndexed.hpp | 20 + .../DcbDraw/include/DrawNonIndexed.hpp | 12 + .../libSceAgc/DcbDraw/include/IndexBuffer.hpp | 17 + .../libSceAgc/DcbDraw/include/Instancing.hpp | 11 + .../prx/libSceAgc/DcbDraw/include/Stats.hpp | 11 + .../prx/libSceAgc/DcbFlow/include/Control.hpp | 14 + .../libSceAgc/DcbFlow/include/Dispatch.hpp | 10 + .../prx/libSceAgc/DcbFlow/include/Memory.hpp | 16 + .../prx/libSceAgc/DcbFlow/include/Sync.hpp | 16 + .../DcbState/include/ContextState.hpp | 13 +- .../libSceAgc/DcbState/include/Display.hpp | 11 + .../prx/libSceAgc/DcbState/include/Init.hpp | 10 + .../prx/libSceAgc/DcbState/include/Marker.hpp | 10 + .../DcbState/include/Predication.hpp | 12 + .../libSceAgc/DcbState/include/Registers.hpp | 22 + .../libSceAgc/DcbState/include/Workload.hpp | 11 + core/libs/prx/libSceAgc/Export.cpp | 1 + .../libs/prx/libSceAgc/Misc/include/Debug.hpp | 11 + .../prx/libSceAgc/Misc/include/PacketInfo.hpp | 10 + .../prx/libSceAgc/Misc/include/Platform.hpp | 9 + .../Misc/include/RegisterDefaults.hpp | 14 +- .../prx/libSceAgc/Misc/include/Semaphore.hpp | 10 + .../libSceAgc/Misc/include/ShaderFusion.hpp | 11 +- .../prx/libSceAgc/Misc/include/Suspend.hpp | 10 + .../prx/libSceAgc/Patch/include/Branch.hpp | 13 + .../prx/libSceAgc/Patch/include/CondExec.hpp | 12 + core/libs/prx/libSceAgc/Patch/include/Dma.hpp | 10 + .../Patch/include/IndirectRegisters.hpp | 17 + .../libs/prx/libSceAgc/Patch/include/Jump.hpp | 10 + core/libs/prx/libSceAgc/Patch/include/Nop.hpp | 9 + .../Patch/include/QueueEndOfPipeAction.hpp | 12 + .../prx/libSceAgc/Patch/include/Rewind.hpp | 10 + .../libSceAgc/Patch/include/WaitRegMem.hpp | 18 + .../Predication/include/Predication.hpp | 10 + .../libSceAgc/Shader/include/CreateShader.hpp | 9 + .../Shader/include/GsOversubscription.hpp | 10 + .../Shader/include/GsPrimPayload.hpp | 10 + .../Shader/include/InterpolantMapping.hpp | 13 + .../libSceAgc/Shader/include/LinkShaders.hpp | 10 + .../libSceAgc/Shader/include/PrimState.hpp | 10 + .../Shader/src/GsOversubscription.cpp | 1 + .../libSceAgc/Shader/src/GsPrimPayload.cpp | 1 + .../prx/libSceAgc/Shader/src/LinkShaders.cpp | 6 +- core/libs/prx/libSceAgc/Unimplemented.cpp | 1 + core/libs/prx/libSceAgc/include/Agc.hpp | 17 + core/libs/prx/libSceAgc/libSceAgc.hpp | 51 ++ .../prx/libSceAgc/tests/AtomicGdsSize.cpp | 7 +- core/libs/prx/libSceAgc/tests/BranchPatch.cpp | 12 +- core/libs/prx/libSceAgc/tests/CbCondWrite.cpp | 6 +- core/libs/prx/libSceAgc/tests/Commands.cpp | 70 +- .../prx/libSceAgc/tests/CondExecPatch.cpp | 12 +- .../prx/libSceAgc/tests/ContextStateSize.cpp | 5 +- core/libs/prx/libSceAgc/tests/DmaData.cpp | 9 +- .../libSceAgc/tests/EndOfShaderActionSize.cpp | 14 +- .../libSceAgc/tests/GsOversubscription.cpp | 3 +- .../prx/libSceAgc/tests/GsPrimPayload.cpp | 3 +- .../tests/InstrumentationQuerySize.cpp | 9 +- .../libSceAgc/tests/InterpolantMapping.cpp | 7 +- core/libs/prx/libSceAgc/tests/PacketInfo.cpp | 3 +- .../libs/prx/libSceAgc/tests/PayloadRange.cpp | 4 - core/libs/prx/libSceAgc/tests/Platform.cpp | 3 +- core/libs/prx/libSceAgc/tests/Predication.cpp | 14 +- core/libs/prx/libSceAgc/tests/PrimeUtcl2.cpp | 9 +- .../prx/libSceAgc/tests/RegisterCommands.cpp | 32 +- core/libs/prx/libSceAgc/tests/Semaphore.cpp | 11 +- .../prx/libSceAgc/tests/ShaderHelpers.cpp | 5 +- .../prx/libSceAgc/tests/WriteDataPatch.cpp | 14 +- .../Execution/src/FrameRecorder.cpp | 3 +- core/libs/prx/libSceAgcDriver/Export.cpp | 1 + .../Resource/include/Lifecycle.hpp | 9 + .../Resource/include/Registration.hpp | 29 + .../State/include/Configuration.hpp | 10 + .../libSceAgcDriver/State/include/Status.hpp | 13 + .../libSceAgcDriver/Submit/include/Acb.hpp | 2 +- .../Submit/include/CommandBuffer.hpp | 6 +- .../libSceAgcDriver/Submit/include/Dcb.hpp | 11 + .../prx/libSceAgcDriver/Unimplemented.cpp | 2 +- .../prx/libSceAgcDriver/include/AgcDriver.hpp | 85 ++ .../prx/libSceAgcDriver/libSceAgcDriver.hpp | 12 + .../prx/libSceAgcDriver/tests/FrameReplay.cpp | 6 +- .../tests/NopDataWritePacket.cpp | 3 +- .../prx/libSceAgcDriver/tests/Pm4Replay.cpp | 19 +- .../tests/TessellationFactorRing.cpp | 6 +- .../tests/UnsupportedDiagnostics.cpp | 4 +- .../execution/PreparationScopeSettle.cpp | 3 +- .../prx/libSceAgcDriver/tools/FrameReplay.cpp | 3 +- core/libs/prx/libSceAudio3d/Export.cpp | 22 +- .../prx/libSceAudio3d/include/Audio3d.hpp | 48 ++ core/libs/prx/libSceAudio3d/libSceAudio3d.hpp | 3 + core/libs/prx/libSceAudioIn/Export.cpp | 1 + .../prx/libSceAudioIn/include/AudioIn.hpp | 50 ++ core/libs/prx/libSceAudioIn/libSceAudioIn.hpp | 3 + .../prx/libSceAudioOut/include/AudioOut.hpp | 80 ++ .../prx/libSceAudioOut/include/AudioOut2.hpp | 82 ++ .../prx/libSceAudioOut/libSceAudioOut.hpp | 4 + core/libs/prx/libSceAudioOut/src/AudioOut.cpp | 1 + .../libSceAudioOut/src/AudioOut2Context.cpp | 1 + .../prx/libSceAudioOut/src/AudioOut2Low.cpp | 14 +- .../libSceAudioOut/src/AudioOut2Mastering.cpp | 1 + .../prx/libSceAudioOut/src/AudioOut2Port.cpp | 1 + .../src/AudioOut2SpeakerArray.cpp | 1 + .../libSceAudioOut/src/AudioOut2System.cpp | 1 + .../prx/libSceAudioOut/src/AudioOut2User.cpp | 1 + .../prx/libSceAudioOut/src/Unimplemented.cpp | 2 + .../tests/AudioOut2DeviceState.cpp | 14 +- .../libSceAudioOut/tests/AudioOut2Latency.cpp | 61 +- .../tests/AudioOut2PortBuffers.cpp | 13 +- .../tests/AudioOut2PortLayouts.cpp | 14 +- .../libSceAudioOut/tests/AudioOut2Timing.cpp | 24 +- .../tests/AudioOutBufferSize.cpp | 7 +- .../prx/libSceAudioOut/tests/AudioOutEx.cpp | 8 +- .../tests/AudioOutExMonitorInfo.cpp | 5 +- .../prx/libSceAudioOut/tests/AudioOutInfo.cpp | 7 +- .../tests/AudioOutLastOutputTime.cpp | 8 +- .../tests/AudioOutMixLevelPadSpk.cpp | 9 +- .../tests/AudioOutPortLocks.cpp | 7 +- .../tests/AudioOutResampling.cpp | 7 +- .../libSceAudioOut/tests/AudioOutShutdown.cpp | 13 +- .../prx/libSceAudioOut/tests/AudioOutSys.cpp | 9 +- .../tests/AudioOutSysHdmiMonitorInfo.cpp | 5 +- .../tests/AudioOutSystemState.cpp | 5 +- .../tests/AudioOutVibration.cpp | 10 +- .../tests/AudioOutVibrationDevice.cpp | 10 +- core/libs/prx/libSceCdlgG2P/Export.cpp | 3 +- .../prx/libSceCdlgPlayerReview/Export.cpp | 3 +- core/libs/prx/libSceConvertKeycode/Export.cpp | 8 +- core/libs/prx/libSceHttp/Export.cpp | 31 +- core/libs/prx/libSceHttp/include/Http.hpp | 157 ++++ core/libs/prx/libSceHttp/libSceHttp.hpp | 3 + core/libs/prx/libSceHttp/src/Options.cpp | 1 + core/libs/prx/libSceHttp/src/Parse.cpp | 1 + core/libs/prx/libSceHttp/src/Uri.cpp | 3 +- core/libs/prx/libSceHttp2/Export.cpp | 14 +- core/libs/prx/libSceHttp2/include/Http2.hpp | 85 ++ core/libs/prx/libSceHttp2/libSceHttp2.hpp | 3 + core/libs/prx/libSceJobManager/Export.cpp | 24 +- core/libs/prx/libSceNet/Export.cpp | 179 +---- core/libs/prx/libSceNet/include/Net.hpp | 406 ++++++++++ core/libs/prx/libSceNet/libSceNet.hpp | 3 + core/libs/prx/libSceNetCtl/Export.cpp | 11 +- core/libs/prx/libSceNetCtl/include/NetCtl.hpp | 104 +++ core/libs/prx/libSceNetCtl/libSceNetCtl.hpp | 3 + .../Export.cpp | 3 +- core/libs/prx/libSceNpCommerce/Export.cpp | 3 +- core/libs/prx/libSceNpCommon/Runtime.cpp | 29 +- core/libs/prx/libScePad/Export.cpp | 86 -- core/libs/prx/libScePad/include/Pad.hpp | 285 +++++++ core/libs/prx/libScePad/libScePad.hpp | 3 + .../libScePlayerSelectionDialog/Export.cpp | 3 +- .../prx/libScePosixForWebKit/Resolver.cpp | 3 +- core/libs/prx/libSceRtc/Export.cpp | 1 + core/libs/prx/libSceRtc/include/Rtc.hpp | 69 ++ core/libs/prx/libSceRtc/libSceRtc.hpp | 3 + core/libs/prx/libSceSsl/Export.cpp | 3 +- core/libs/prx/libSceSsl/include/Ssl.hpp | 65 ++ core/libs/prx/libSceSsl/libSceSsl.hpp | 3 + core/libs/prx/libSceSystemService/Export.cpp | 9 +- .../libSceSystemService/PendingExports.cpp | 119 +-- .../include/SystemService.hpp | 735 ++++++++++++++++++ .../libSceSystemService.hpp | 3 + core/libs/prx/libSceUsbStorage/Export.cpp | 1 + .../prx/libSceUsbStorageDialog/Export.cpp | 3 +- core/libs/prx/libSceUserService/Export.cpp | 2 +- .../prx/libSceUserService/UserService.hpp | 32 + .../libSceUserService/libSceUserService.hpp | 3 + .../libs/prx/libSceVideoOut/Unimplemented.cpp | 2 +- .../prx/libSceVideoOut/include/Buffer.hpp | 21 +- .../libs/prx/libSceVideoOut/include/Event.hpp | 5 +- .../prx/libSceVideoOut/include/Output.hpp | 13 +- .../prx/libSceVideoOut/include/VideoOut.hpp | 18 + .../prx/libSceVideoOut/libSceVideoOut.hpp | 6 + core/libs/prx/libSceVideoOut/src/Buffer.cpp | 1 + core/libs/prx/libSceVideoOut/src/Event.cpp | 1 + core/libs/prx/libSceVideoOut/src/Output.cpp | 1 + .../tests/GuestAgcDriverDebugUnavailable.cpp | 31 +- core/libs/tests/GuestAgcDriverResources.cpp | 30 +- core/libs/tests/GuestAudio3dParameters.cpp | 4 +- core/libs/tests/GuestAudio3dPort.cpp | 24 +- core/libs/tests/GuestAudio3dSpeakerArray.cpp | 19 +- core/libs/tests/GuestAudioIn.cpp | 18 +- core/libs/tests/GuestDatagramReceive.cpp | 13 +- core/libs/tests/GuestG2PDialog.cpp | 3 +- core/libs/tests/GuestHttp.cpp | 38 +- core/libs/tests/GuestHttp2.cpp | 32 +- core/libs/tests/GuestHttpOptions.cpp | 37 +- core/libs/tests/GuestHttpResponseHeader.cpp | 3 +- core/libs/tests/GuestIndexedDraw.cpp | 8 +- core/libs/tests/GuestLoadExecHost.cpp | 2 +- core/libs/tests/GuestMemoryPoolStats.cpp | 67 +- core/libs/tests/GuestNetBufferValidation.cpp | 8 +- core/libs/tests/GuestNetCtl.cpp | 21 +- .../tests/GuestNpAuthAuthorizedAppDialog.cpp | 3 +- core/libs/tests/GuestNpCommerceDialog.cpp | 3 +- core/libs/tests/GuestOfflineImports.cpp | 3 +- core/libs/tests/GuestPad.cpp | 32 - core/libs/tests/GuestPadVibrationMode.cpp | 7 - core/libs/tests/GuestPlayerReviewDialog.cpp | 3 +- .../libs/tests/GuestPlayerSelectionDialog.cpp | 3 +- core/libs/tests/GuestRefusedConnect.cpp | 7 +- core/libs/tests/GuestRenderingWait.cpp | 9 +- core/libs/tests/GuestResolver.cpp | 3 +- core/libs/tests/GuestRtc.cpp | 64 +- core/libs/tests/GuestSceNet.cpp | 139 +--- core/libs/tests/GuestShaderLink.cpp | 6 +- core/libs/tests/GuestSocketHostWrite.cpp | 31 +- core/libs/tests/GuestSsl.cpp | 60 +- core/libs/tests/GuestSslLoad.cpp | 27 +- core/libs/tests/GuestSslPs5Readers.cpp | 17 +- core/libs/tests/GuestSslTransport.cpp | 31 +- core/libs/tests/GuestSystemExit.cpp | 3 +- core/libs/tests/GuestSystemKillApp.cpp | 6 +- core/libs/tests/GuestSystemService.cpp | 28 +- .../libs/tests/GuestSystemServiceLanguage.cpp | 3 +- ...uestSystemServiceLoadExecStandardError.cpp | 3 +- .../tests/GuestSystemServicePathBoundary.cpp | 3 +- .../libs/tests/GuestSystemServiceTimeZone.cpp | 3 +- core/libs/tests/GuestUsbStorageDialog.cpp | 3 +- core/libs/tests/GuestUserService.cpp | 30 +- core/libs/tests/GuestUserServiceLifecycle.cpp | 8 - core/libs/tests/GuestUserServiceUserName.cpp | 4 - core/libs/tests/GuestVideoOutColorSpace.cpp | 13 +- core/libs/tests/GuestVideoOutCursor.cpp | 8 +- core/libs/tests/GuestVideoOutHdr.cpp | 12 +- .../libs/tests/GuestVideoOutHighFrameRate.cpp | 11 +- core/libs/tests/GuestVideoOutOutputMode.cpp | 9 +- .../tests/GuestVideoOutResolutionStatus.cpp | 9 +- .../libs/tests/GuestVideoOutWqhdDetection.cpp | 8 +- core/libs/tests/NetDontWait.cpp | 34 +- core/libs/tests/test_public_headers.py | 134 ++++ 238 files changed, 3549 insertions(+), 1869 deletions(-) create mode 100644 core/libs/prx/libSceAgc/Shader/include/GsOversubscription.hpp create mode 100644 core/libs/prx/libSceAgc/Shader/include/GsPrimPayload.hpp create mode 100644 core/libs/prx/libSceAgc/Shader/include/LinkShaders.hpp create mode 100644 core/libs/prx/libSceAgc/include/Agc.hpp create mode 100644 core/libs/prx/libSceAgc/libSceAgc.hpp create mode 100644 core/libs/prx/libSceAgcDriver/include/AgcDriver.hpp create mode 100644 core/libs/prx/libSceAgcDriver/libSceAgcDriver.hpp create mode 100644 core/libs/prx/libSceAudio3d/include/Audio3d.hpp create mode 100644 core/libs/prx/libSceAudio3d/libSceAudio3d.hpp create mode 100644 core/libs/prx/libSceAudioIn/include/AudioIn.hpp create mode 100644 core/libs/prx/libSceAudioIn/libSceAudioIn.hpp create mode 100644 core/libs/prx/libSceAudioOut/include/AudioOut.hpp create mode 100644 core/libs/prx/libSceAudioOut/include/AudioOut2.hpp create mode 100644 core/libs/prx/libSceAudioOut/libSceAudioOut.hpp create mode 100644 core/libs/prx/libSceHttp/include/Http.hpp create mode 100644 core/libs/prx/libSceHttp/libSceHttp.hpp create mode 100644 core/libs/prx/libSceHttp2/include/Http2.hpp create mode 100644 core/libs/prx/libSceHttp2/libSceHttp2.hpp create mode 100644 core/libs/prx/libSceNet/include/Net.hpp create mode 100644 core/libs/prx/libSceNet/libSceNet.hpp create mode 100644 core/libs/prx/libSceNetCtl/include/NetCtl.hpp create mode 100644 core/libs/prx/libSceNetCtl/libSceNetCtl.hpp create mode 100644 core/libs/prx/libScePad/libScePad.hpp create mode 100644 core/libs/prx/libSceRtc/include/Rtc.hpp create mode 100644 core/libs/prx/libSceRtc/libSceRtc.hpp create mode 100644 core/libs/prx/libSceSsl/include/Ssl.hpp create mode 100644 core/libs/prx/libSceSsl/libSceSsl.hpp create mode 100644 core/libs/prx/libSceSystemService/include/SystemService.hpp create mode 100644 core/libs/prx/libSceSystemService/libSceSystemService.hpp create mode 100644 core/libs/prx/libSceUserService/libSceUserService.hpp create mode 100644 core/libs/prx/libSceVideoOut/include/VideoOut.hpp create mode 100644 core/libs/prx/libSceVideoOut/libSceVideoOut.hpp create mode 100644 core/libs/tests/test_public_headers.py diff --git a/core/libs/CMakeLists.txt b/core/libs/CMakeLists.txt index 7d10d9716e..d3c9ed9251 100644 --- a/core/libs/CMakeLists.txt +++ b/core/libs/CMakeLists.txt @@ -289,6 +289,8 @@ if(BUILD_TESTING) find_package(Python3 QUIET COMPONENTS Interpreter) if(Python3_Interpreter_FOUND) + add_test(NAME public_headers COMMAND ${Python3_EXECUTABLE} + ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_public_headers.py --compiler ${CMAKE_CXX_COMPILER}) add_test(NAME nid_gnu_hash COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/nid/tests/test_gnu_hash.py $) add_test(NAME nid_elf_duplicates COMMAND ${Python3_EXECUTABLE} diff --git a/core/libs/prx/libSceAgc/Acb/include/Control.hpp b/core/libs/prx/libSceAgc/Acb/include/Control.hpp index c22dc4e61e..e1862076c3 100644 --- a/core/libs/prx/libSceAgc/Acb/include/Control.hpp +++ b/core/libs/prx/libSceAgc/Acb/include/Control.hpp @@ -1,4 +1,26 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_ACB_INCLUDE_CONTROL_HPP #define CORE_LIBS_PRX_LIBSCEAGC_ACB_INCLUDE_CONTROL_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t* APS5_VABI sceAgcAcbAtomicGds_0900(CommandBuffer* buf, std::uint32_t control, std::uint32_t mode, std::uint32_t gdsOp, std::uint32_t src, std::uint16_t offset, std::uint16_t index, std::uint32_t mask, std::uint32_t data, std::uint64_t compareData, std::uint64_t extraData); +std::uint32_t* APS5_VABI sceAgcAcbJump(CommandBuffer* buf, std::uint8_t cachePolicy, const std::uint32_t* target, std::uint32_t sizeInDwords); +uint32_t APS5_VABI sceAgcAcbJumpGetSize(void); +uint32_t* APS5_VABI sceAgcAcbResetQueue(CommandBuffer* buf, uint32_t op, uint32_t value); +std::uint32_t* APS5_VABI sceAgcAcbRewind(CommandBuffer* buf, std::uint32_t initialState); +std::uint32_t APS5_VABI sceAgcAcbRewindGetSize(); +std::uint32_t* APS5_VABI sceAgcAcbWaitUntilSafeForRendering(CommandBuffer* buf, std::uint32_t videoOutHandle, std::uint32_t displayBufferIndex); +std::uint32_t* APS5_VABI sceAgcAcbSetFlip(CommandBuffer* buf, std::uint32_t videoOutHandle, std::int32_t displayBufferIndex, std::uint32_t flipMode, std::int64_t flipArg); +std::uint32_t* APS5_VABI sceAgcAcbSetWorkloadsActive(CommandBuffer* buf, std::uint32_t streamId, const std::uint32_t* workloadIds, std::uint32_t workloadCount); +std::uint32_t* APS5_VABI sceAgcAcbSetWorkloadComplete(CommandBuffer* buf, std::uint32_t streamId, std::uint32_t workloadId); +std::uint32_t* APS5_VABI sceAgcAcbSetWorkloadStreamInactive(CommandBuffer* buf, std::uint32_t streamId); +uint32_t* APS5_VABI sceAgcAcbPushMarker(CommandBuffer* buf, const char* str, uint32_t color); +uint32_t* APS5_VABI sceAgcAcbPopMarker(CommandBuffer* buf); +uint32_t* APS5_VABI sceAgcAcbSetMarker(CommandBuffer* buf, const char* str, uint32_t color); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Acb/include/Dispatch.hpp b/core/libs/prx/libSceAgc/Acb/include/Dispatch.hpp index e207781ef7..0915d7aad8 100644 --- a/core/libs/prx/libSceAgc/Acb/include/Dispatch.hpp +++ b/core/libs/prx/libSceAgc/Acb/include/Dispatch.hpp @@ -1,4 +1,14 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_ACB_INCLUDE_DISPATCH_HPP #define CORE_LIBS_PRX_LIBSCEAGC_ACB_INCLUDE_DISPATCH_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +uint32_t* APS5_VABI sceAgcAcbDispatchIndirect(CommandBuffer* buf, const volatile void* indirectArgs, uint32_t modifier); +std::uint32_t APS5_VABI sceAgcAcbDispatchIndirectGetSize(); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Acb/include/Memory.hpp b/core/libs/prx/libSceAgc/Acb/include/Memory.hpp index 78e8668cb0..93949715e6 100644 --- a/core/libs/prx/libSceAgc/Acb/include/Memory.hpp +++ b/core/libs/prx/libSceAgc/Acb/include/Memory.hpp @@ -1,4 +1,24 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_ACB_INCLUDE_MEMORY_HPP #define CORE_LIBS_PRX_LIBSCEAGC_ACB_INCLUDE_MEMORY_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t* APS5_VABI sceAgcAcbAcquireMem(CommandBuffer* buf, std::uint32_t gcrControl, const volatile void* base, std::uint64_t sizeBytes, std::uint32_t pollCycles); +uint32_t APS5_VABI sceAgcAcbAcquireMemGetSize(void); +uint32_t* APS5_VABI sceAgcAcbCopyData(CommandBuffer* buf, uint8_t dst, uint8_t dstCachePolicy, uint64_t dstAddress, uint8_t src, uint8_t srcCachePolicy, uint64_t srcAddressOrImmediate, uint8_t itemSize, uint8_t writeConfirm); +std::uint64_t APS5_VABI sceAgcAcbCopyDataGetSize(); +std::uint32_t* APS5_VABI sceAgcAcbDmaData(CommandBuffer* buf, std::uint8_t dst, std::uint8_t dstCachePolicy, std::uint64_t dstAddress, std::uint8_t src, std::uint8_t srcCachePolicy, std::uint64_t srcAddress, std::uint32_t numBytes, std::uint8_t waitForPrevious, std::uint8_t writeConfirm); +std::uint32_t APS5_VABI sceAgcAcbDmaDataGetSize(); +std::uint32_t* APS5_VABI sceAgcAcbAtomicMem(CommandBuffer* buf, std::uint8_t atomicOp, std::uint8_t command, std::uint8_t cachePolicy, const volatile void* address, std::uint64_t srcData, std::uint64_t compareData, std::uint16_t loopInterval); +std::uint32_t APS5_VABI sceAgcAcbAtomicMemGetSize(); +std::uint32_t APS5_VABI sceAgcAcbAtomicGdsGetSize(); +std::uint32_t* APS5_VABI sceAgcAcbPrimeUtcl2(CommandBuffer* buf, const volatile void* address, std::uint32_t sizeInBytes); +std::uint32_t APS5_VABI sceAgcAcbPrimeUtcl2GetSize(); +std::uint32_t* APS5_VABI sceAgcAcbWriteData(CommandBuffer* buf, std::uint8_t dst, std::uint8_t cachePolicy, std::uint64_t address, const void* data, std::uint32_t numDwords, std::uint8_t increment, std::uint8_t writeConfirm); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Acb/include/Sync.hpp b/core/libs/prx/libSceAgc/Acb/include/Sync.hpp index ca3084b8b8..fb7a826139 100644 --- a/core/libs/prx/libSceAgc/Acb/include/Sync.hpp +++ b/core/libs/prx/libSceAgc/Acb/include/Sync.hpp @@ -1,4 +1,20 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_ACB_INCLUDE_SYNC_HPP #define CORE_LIBS_PRX_LIBSCEAGC_ACB_INCLUDE_SYNC_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +uint32_t* APS5_VABI sceAgcAcbCondExec(CommandBuffer* buf, const volatile uint32_t* address, uint32_t numDwords); +uint32_t APS5_VABI sceAgcAcbCondExecGetSize(void); +std::uint32_t* APS5_VABI sceAgcAcbWaitRegMem(CommandBuffer* buf, std::uint8_t size, std::uint8_t compareFunction, std::uint8_t cachePolicy, const volatile void* address, std::uint64_t reference, std::uint64_t mask, std::uint32_t pollCycles); +std::uint64_t APS5_VABI sceAgcAcbWaitOnAddressGetSize(std::uint8_t size); +std::uint32_t* APS5_VABI sceAgcAcbEventWrite(CommandBuffer* buf, std::uint8_t eventType, const volatile void* address); +std::uint64_t APS5_VABI sceAgcAcbEventWriteGetSize(std::uint8_t eventType); +std::uint32_t APS5_VABI sceAgcAcbQueueEndOfShaderActionGetSize(); +std::uint32_t* APS5_VABI sceAgcAcbMemSemaphore(CommandBuffer* buf, const volatile void* address, std::uint8_t waitForMailbox, std::uint8_t signalType, std::uint8_t operation); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Cb/include/Branch.hpp b/core/libs/prx/libSceAgc/Cb/include/Branch.hpp index 5c74f02461..855d78d8ee 100644 --- a/core/libs/prx/libSceAgc/Cb/include/Branch.hpp +++ b/core/libs/prx/libSceAgc/Cb/include/Branch.hpp @@ -1,4 +1,16 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_CB_INCLUDE_BRANCH_HPP #define CORE_LIBS_PRX_LIBSCEAGC_CB_INCLUDE_BRANCH_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t* APS5_VABI sceAgcCbBranch(CommandBuffer* buf, std::uint8_t mode, std::uint8_t compareFunction, const volatile std::uint64_t* compareAddress, std::uint64_t mask, std::uint64_t reference, std::uint8_t cachePolicy1, const volatile std::uint32_t* buffer1, std::uint32_t sizeInDwords1, std::uint8_t cachePolicy2, const volatile std::uint32_t* buffer2, std::uint32_t sizeInDwords2); +std::uint32_t APS5_VABI sceAgcCbBranchGetSize(); +std::uint32_t* APS5_VABI sceAgcCbCondWrite(CommandBuffer* buf, std::uint32_t compareFunction, std::uint32_t writeSpace, const volatile void* writeAddress, std::uint32_t writeData, const volatile void* pollAddress, std::uint32_t reference, std::uint32_t mask); +std::uint32_t APS5_VABI sceAgcCbCondWriteGetSize(); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Cb/include/Dispatch.hpp b/core/libs/prx/libSceAgc/Cb/include/Dispatch.hpp index 5881aaf5a9..9f741d7e2e 100644 --- a/core/libs/prx/libSceAgc/Cb/include/Dispatch.hpp +++ b/core/libs/prx/libSceAgc/Cb/include/Dispatch.hpp @@ -1,4 +1,14 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_CB_INCLUDE_DISPATCH_HPP #define CORE_LIBS_PRX_LIBSCEAGC_CB_INCLUDE_DISPATCH_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t* APS5_VABI sceAgcCbDispatch(CommandBuffer* buf, std::uint32_t threadGroupX, std::uint32_t threadGroupY, std::uint32_t threadGroupZ, std::uint32_t modifier); +uint32_t APS5_VABI sceAgcCbDispatchGetSize(void); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Cb/include/Registers.hpp b/core/libs/prx/libSceAgc/Cb/include/Registers.hpp index e5634b8ad6..d41e1beb42 100644 --- a/core/libs/prx/libSceAgc/Cb/include/Registers.hpp +++ b/core/libs/prx/libSceAgc/Cb/include/Registers.hpp @@ -1,4 +1,20 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_CB_INCLUDE_REGISTERS_HPP #define CORE_LIBS_PRX_LIBSCEAGC_CB_INCLUDE_REGISTERS_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t* APS5_VABI sceAgcCbSetUcRegisterRangeDirect(CommandBuffer* buf, std::uint32_t offset, const std::uint32_t* values, std::uint32_t numValues); +std::uint32_t* APS5_VABI sceAgcCbSetShRegisterRangeDirect(CommandBuffer* buf, std::uint32_t offset, const std::uint32_t* values, std::uint32_t numValues); +uint32_t APS5_VABI sceAgcCbSetShRegisterRangeDirectGetSize(uint32_t numValues); +std::uint32_t APS5_VABI sceAgcCbSetUcRegisterRangeDirectGetSize(std::uint32_t numValues); +std::uint32_t* APS5_VABI sceAgcCbSetShRegistersDirect(CommandBuffer* buf, const volatile ShaderRegister* regs, std::uint32_t numRegs); +std::uint32_t APS5_VABI sceAgcCbSetShRegistersDirectGetSize(std::uint32_t numRegs); +std::uint32_t* APS5_VABI sceAgcCbSetUcRegistersDirect(CommandBuffer* buf, const volatile ShaderRegister* regs, std::uint32_t numRegs); +std::uint32_t APS5_VABI sceAgcCbSetUcRegistersDirectGetSize(std::uint32_t numRegs); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Cb/include/Sync.hpp b/core/libs/prx/libSceAgc/Cb/include/Sync.hpp index a070c6a5fc..d3be5f9083 100644 --- a/core/libs/prx/libSceAgc/Cb/include/Sync.hpp +++ b/core/libs/prx/libSceAgc/Cb/include/Sync.hpp @@ -4,10 +4,19 @@ #include "SceTypes.hpp" #include -struct CommandBuffer; - extern "C" { std::uint32_t* APS5_VABI sceAgcCbMemSemaphore(CommandBuffer* buf, const volatile void* address, std::uint32_t operation, std::uint32_t modifier, std::uint32_t value); } +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t* APS5_VABI sceAgcCbNop_nid_postfix(CommandBuffer* buf, std::uint32_t sizeInDwords); +uint32_t APS5_VABI sceAgcCbNopGetSize(uint32_t sizeInDwords); +std::uint32_t APS5_VABI sceAgcCbQueueEndOfPipeActionGetSize(); +std::uint32_t* APS5_VABI sceAgcCbReleaseMem(CommandBuffer* buf, std::uint8_t action, std::uint16_t gcrControl, std::uint8_t dst, std::uint8_t cachePolicy, const volatile Label* address, std::uint8_t dataSelect, std::uint64_t data, std::uint16_t gdsOffset, std::uint16_t gdsSize, std::uint8_t interrupt, std::uint32_t interruptContextId); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbDraw/include/DrawIndexed.hpp b/core/libs/prx/libSceAgc/DcbDraw/include/DrawIndexed.hpp index e134de925d..1eede737f2 100644 --- a/core/libs/prx/libSceAgc/DcbDraw/include/DrawIndexed.hpp +++ b/core/libs/prx/libSceAgc/DcbDraw/include/DrawIndexed.hpp @@ -1,4 +1,24 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_DCBDRAW_INCLUDE_DRAWINDEXED_HPP #define CORE_LIBS_PRX_LIBSCEAGC_DCBDRAW_INCLUDE_DRAWINDEXED_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t* APS5_VABI sceAgcDcbDrawIndex(CommandBuffer* buf, std::uint32_t indexCount, const volatile void* indexAddress, std::uint64_t modifier); +std::uint32_t APS5_VABI sceAgcDcbDrawIndexGetSize(); +std::uint32_t* APS5_VABI sceAgcDcbDrawIndexAuto(CommandBuffer* buf, std::uint32_t indexCount, std::uint64_t modifier); +std::uint32_t APS5_VABI sceAgcDcbDrawIndexAutoGetSize(); +std::uint32_t* APS5_VABI sceAgcDcbDrawIndexOffset(CommandBuffer* buf, std::uint32_t indexOffset, std::uint32_t indexCount, std::uint64_t modifier); +uint32_t APS5_VABI sceAgcDcbDrawIndexOffsetGetSize(void); +uint32_t* APS5_VABI sceAgcDcbDrawIndexIndirect(CommandBuffer* buf, uint32_t dataOffsetInBytes, uint64_t modifier); +std::uint32_t APS5_VABI sceAgcDcbDrawIndexIndirectGetSize(); +uint32_t* APS5_VABI sceAgcDcbDrawIndexIndirectMulti(CommandBuffer* buf, uint32_t dataOffsetInBytes, uint32_t countIndirect, uint32_t maxCountOrCount, const volatile void* countAddr, uint32_t strideInBytes, uint64_t modifier); +std::uint32_t APS5_VABI sceAgcDcbDrawIndexIndirectMultiGetSize(); +uint32_t* APS5_VABI sceAgcDcbDrawIndexMultiInstanced(CommandBuffer* buf, uint32_t indexCount, const volatile void* indexAddr, const volatile void* objectIds, uint32_t instanceCount, uint64_t modifier); +uint32_t APS5_VABI sceAgcDcbDrawIndexMultiInstancedGetSize(void); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbDraw/include/DrawNonIndexed.hpp b/core/libs/prx/libSceAgc/DcbDraw/include/DrawNonIndexed.hpp index 19705ed1f2..5ee0a26dc5 100644 --- a/core/libs/prx/libSceAgc/DcbDraw/include/DrawNonIndexed.hpp +++ b/core/libs/prx/libSceAgc/DcbDraw/include/DrawNonIndexed.hpp @@ -1,4 +1,16 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_DCBDRAW_INCLUDE_DRAWNONINDEXED_HPP #define CORE_LIBS_PRX_LIBSCEAGC_DCBDRAW_INCLUDE_DRAWNONINDEXED_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t* APS5_VABI sceAgcDcbDrawIndirect(CommandBuffer* buf, std::uint32_t dataOffsetInBytes, std::uint64_t modifier); +std::uint32_t APS5_VABI sceAgcDcbDrawIndirectGetSize(); +std::uint32_t* APS5_VABI sceAgcDcbDrawIndirectMulti(CommandBuffer* buf, std::uint32_t dataOffsetInBytes, std::uint32_t countIndirect, std::uint32_t maxCountOrCount, const volatile void* countAddress, std::uint32_t strideInBytes, std::uint64_t modifier); +std::uint32_t APS5_VABI sceAgcDcbDrawIndirectMultiGetSize(); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbDraw/include/IndexBuffer.hpp b/core/libs/prx/libSceAgc/DcbDraw/include/IndexBuffer.hpp index b90a2a40d6..652629217a 100644 --- a/core/libs/prx/libSceAgc/DcbDraw/include/IndexBuffer.hpp +++ b/core/libs/prx/libSceAgc/DcbDraw/include/IndexBuffer.hpp @@ -1,4 +1,21 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_DCBDRAW_INCLUDE_INDEXBUFFER_HPP #define CORE_LIBS_PRX_LIBSCEAGC_DCBDRAW_INCLUDE_INDEXBUFFER_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t* APS5_VABI sceAgcDcbSetIndexBuffer(CommandBuffer* buf, std::uint64_t indexAddress); +std::uint32_t APS5_VABI sceAgcDcbSetIndexBufferGetSize(); +std::uint32_t* APS5_VABI sceAgcDcbSetIndexCount(CommandBuffer* buf, std::uint32_t indexCount); +std::uint32_t APS5_VABI sceAgcDcbSetIndexCountGetSize(); +std::uint32_t* APS5_VABI sceAgcDcbSetIndexSize(CommandBuffer* buf, std::uint8_t indexSize, std::uint8_t cachePolicy); +std::uint32_t APS5_VABI sceAgcDcbSetIndexSizeGetSize(); +std::uint32_t* APS5_VABI sceAgcDcbSetIndexSize_0600(CommandBuffer* buf, std::uint8_t indexSize, std::uint8_t cachePolicy, std::uint8_t perInstanceObjectId); +std::uint32_t* APS5_VABI sceAgcDcbSetIndexIndirectArgs(CommandBuffer* buf, std::uint64_t attributeAddress, std::uint32_t attributeIndex); +std::uint32_t APS5_VABI sceAgcDcbSetIndexIndirectArgsGetSize(); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbDraw/include/Instancing.hpp b/core/libs/prx/libSceAgc/DcbDraw/include/Instancing.hpp index b67b2b5bac..8f74423854 100644 --- a/core/libs/prx/libSceAgc/DcbDraw/include/Instancing.hpp +++ b/core/libs/prx/libSceAgc/DcbDraw/include/Instancing.hpp @@ -1,4 +1,15 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_DCBDRAW_INCLUDE_INSTANCING_HPP #define CORE_LIBS_PRX_LIBSCEAGC_DCBDRAW_INCLUDE_INSTANCING_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t* APS5_VABI sceAgcDcbSetNumInstances(CommandBuffer* buf, std::uint32_t numInstances); +std::uint32_t APS5_VABI sceAgcDcbSetNumInstancesGetSize(); +uint32_t* APS5_VABI sceAgcDcbSetBaseIndirectArgs(CommandBuffer* buf, uint32_t shaderType, const volatile void* indirectBaseAddr); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbDraw/include/Stats.hpp b/core/libs/prx/libSceAgc/DcbDraw/include/Stats.hpp index a2bd44d8bc..de4d9fcf72 100644 --- a/core/libs/prx/libSceAgc/DcbDraw/include/Stats.hpp +++ b/core/libs/prx/libSceAgc/DcbDraw/include/Stats.hpp @@ -1,4 +1,15 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_DCBDRAW_INCLUDE_STATS_HPP #define CORE_LIBS_PRX_LIBSCEAGC_DCBDRAW_INCLUDE_STATS_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t* APS5_VABI sceAgcDcbGetLodStats(CommandBuffer* buf, std::uint8_t cachePolicy, const volatile void* buffer, std::uint32_t bufferSizeInBytes, std::uint32_t resetCount, std::uint8_t forceReset, std::uint8_t reportAndReset, std::uint32_t reportingIntervalIn100kClocks); +std::uint32_t APS5_VABI sceAgcDcbBeginOcclusionQueryGetSize(std::int32_t queryType); +std::uint32_t APS5_VABI sceAgcDcbEndOcclusionQueryGetSize(); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbFlow/include/Control.hpp b/core/libs/prx/libSceAgc/DcbFlow/include/Control.hpp index 6ded533662..2890339f5b 100644 --- a/core/libs/prx/libSceAgc/DcbFlow/include/Control.hpp +++ b/core/libs/prx/libSceAgc/DcbFlow/include/Control.hpp @@ -9,4 +9,18 @@ std::uint32_t* APS5_VABI sceAgcDcbAtomicGds(CommandBuffer* buf, std::uint32_t co std::uint32_t* APS5_VABI sceAgcDcbAtomicGds_0900(CommandBuffer* buf, std::uint32_t control, std::uint32_t mode, std::uint32_t gdsOp, std::uint32_t src, std::uint16_t offset, std::uint16_t index, std::uint32_t mask, std::uint32_t data, std::uint64_t compareData, std::uint64_t extraData); } +#include "SceShaders.hpp" + +extern "C" { + +uint32_t* APS5_VABI sceAgcDcbJump(CommandBuffer* buf, uint8_t mode, uint8_t cachePolicy, const uint32_t* target, uint32_t sizeInDwords); +std::uint32_t APS5_VABI sceAgcDcbJumpGetSize(); +std::uint32_t* APS5_VABI sceAgcDcbResetQueue(CommandBuffer* buf, std::uint32_t op, std::uint32_t state); +std::uint32_t* APS5_VABI sceAgcDcbClearState(CommandBuffer* buf, std::uint32_t command); +uint32_t* APS5_VABI sceAgcDcbRewind(CommandBuffer* buf, uint32_t initialState); +uint32_t APS5_VABI sceAgcDcbRewindGetSize(void); +uint32_t* APS5_VABI sceAgcDcbWaitUntilSafeForRendering(CommandBuffer* buf, uint32_t videoOutHandle, uint32_t displayBufferIndex); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbFlow/include/Dispatch.hpp b/core/libs/prx/libSceAgc/DcbFlow/include/Dispatch.hpp index 025f84ad5c..4266a8cf60 100644 --- a/core/libs/prx/libSceAgc/DcbFlow/include/Dispatch.hpp +++ b/core/libs/prx/libSceAgc/DcbFlow/include/Dispatch.hpp @@ -1,4 +1,14 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_DCBFLOW_INCLUDE_DISPATCH_HPP #define CORE_LIBS_PRX_LIBSCEAGC_DCBFLOW_INCLUDE_DISPATCH_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +uint32_t* APS5_VABI sceAgcDcbDispatchIndirect(CommandBuffer* buf, uint32_t dataOffsetInBytes, uint32_t flags); +std::uint32_t APS5_VABI sceAgcDcbDispatchIndirectGetSize(); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbFlow/include/Memory.hpp b/core/libs/prx/libSceAgc/DcbFlow/include/Memory.hpp index f089c9a83e..e9202cd6b5 100644 --- a/core/libs/prx/libSceAgc/DcbFlow/include/Memory.hpp +++ b/core/libs/prx/libSceAgc/DcbFlow/include/Memory.hpp @@ -9,4 +9,20 @@ std::uint32_t* APS5_VABI sceAgcDcbAcquireMem(CommandBuffer* buf, std::uint8_t en std::uint32_t APS5_VABI sceAgcDcbAtomicGdsGetSize(); } +#include "SceShaders.hpp" + +extern "C" { + +uint32_t APS5_VABI sceAgcDcbAcquireMemGetSize(void); +uint32_t* APS5_VABI sceAgcDcbCopyData(CommandBuffer* buf, uint8_t dst, uint8_t dstCachePolicy, uint64_t dstAddress, uint8_t src, uint8_t srcCachePolicy, uint64_t srcAddressOrImmediate, uint8_t itemSize, uint8_t writeConfirm); +std::uint64_t APS5_VABI sceAgcDcbCopyDataGetSize(); +std::uint32_t* APS5_VABI sceAgcDcbDmaData(CommandBuffer* buf, std::uint8_t engine, std::uint8_t dst, std::uint8_t dstCachePolicy, std::uint64_t dstAddress, std::uint8_t src, std::uint8_t srcCachePolicy, std::uint64_t srcAddress, std::uint32_t numBytes, std::uint8_t waitForPrevious, std::uint8_t writeConfirm, std::uint8_t blockEngine); +std::uint32_t APS5_VABI sceAgcDcbDmaDataGetSize(); +std::uint32_t* APS5_VABI sceAgcDcbAtomicMem(CommandBuffer* buf, std::uint8_t atomicOp, std::uint8_t command, std::uint8_t cachePolicy, const volatile void* address, std::uint64_t srcData, std::uint64_t compareData, std::uint16_t loopInterval); +std::uint32_t APS5_VABI sceAgcDcbAtomicMemGetSize(); +std::uint32_t* APS5_VABI sceAgcDcbWriteData(CommandBuffer* buf, std::uint8_t dst, std::uint8_t cachePolicy, std::uint64_t address, const void* data, std::uint32_t numDwords, std::uint8_t increment, std::uint8_t writeConfirm); +uint32_t APS5_VABI sceAgcDcbWriteDataGetSize(uint32_t numDwords); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbFlow/include/Sync.hpp b/core/libs/prx/libSceAgc/DcbFlow/include/Sync.hpp index 6cad00334a..fa07f43e62 100644 --- a/core/libs/prx/libSceAgc/DcbFlow/include/Sync.hpp +++ b/core/libs/prx/libSceAgc/DcbFlow/include/Sync.hpp @@ -1,5 +1,21 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_DCBFLOW_INCLUDE_SYNC_HPP #define CORE_LIBS_PRX_LIBSCEAGC_DCBFLOW_INCLUDE_SYNC_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +uint32_t* APS5_VABI sceAgcDcbCondExec(CommandBuffer* buf, const volatile uint32_t* address, uint32_t numDwords); +uint32_t APS5_VABI sceAgcDcbCondExecGetSize(void); +std::uint32_t* APS5_VABI sceAgcDcbWaitRegMem(CommandBuffer* buf, std::uint8_t size, std::uint8_t compareFunction, std::uint8_t operation, std::uint8_t cachePolicy, const volatile void* address, std::uint64_t reference, std::uint64_t mask, std::uint32_t pollCycles); +uint32_t APS5_VABI sceAgcDcbWaitOnAddressGetSize(uint32_t size); +std::uint32_t* APS5_VABI sceAgcDcbEventWrite(CommandBuffer* buf, std::uint8_t eventType, const volatile void* address); +std::uint64_t APS5_VABI sceAgcDcbEventWriteGetSize(std::uint8_t eventType); +std::uint32_t* APS5_VABI sceAgcDcbStallCommandBufferParser(CommandBuffer* buf); +std::uint32_t APS5_VABI sceAgcDcbStallCommandBufferParserGetSize(); +std::uint32_t* APS5_VABI sceAgcDcbMemSemaphore(CommandBuffer* buf, const volatile void* address, std::uint8_t waitForMailbox, std::uint8_t signalType, std::uint8_t operation); + +} #endif diff --git a/core/libs/prx/libSceAgc/DcbState/include/ContextState.hpp b/core/libs/prx/libSceAgc/DcbState/include/ContextState.hpp index 99d37d3c6a..19d2e85ba7 100644 --- a/core/libs/prx/libSceAgc/DcbState/include/ContextState.hpp +++ b/core/libs/prx/libSceAgc/DcbState/include/ContextState.hpp @@ -4,8 +4,6 @@ #include "SceTypes.hpp" #include -struct CommandBuffer; - extern "C" { uint32_t* APS5_VABI sceAgcDcbContextStateOp(CommandBuffer* buf, uint32_t operation); @@ -14,4 +12,15 @@ uint64_t APS5_VABI sceAgcDcbContextStateOpGetSize(uint32_t operation); } +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t APS5_VABI sceAgcDcbSetBaseDispatchIndirectArgsGetSize(); +std::uint32_t APS5_VABI sceAgcDcbSetBaseDrawIndirectArgsGetSize(); +std::uint32_t APS5_VABI sceAgcDcbQueueEndOfShaderActionGetSize(); +std::uint32_t APS5_VABI sceAgcDcbGetLodStatsGetSize(); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbState/include/Display.hpp b/core/libs/prx/libSceAgc/DcbState/include/Display.hpp index 74fb8caf0d..e6868d17f4 100644 --- a/core/libs/prx/libSceAgc/DcbState/include/Display.hpp +++ b/core/libs/prx/libSceAgc/DcbState/include/Display.hpp @@ -1,4 +1,15 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_DCBSTATE_INCLUDE_DISPLAY_HPP #define CORE_LIBS_PRX_LIBSCEAGC_DCBSTATE_INCLUDE_DISPLAY_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +uint32_t* APS5_VABI sceAgcDcbSetFlip(CommandBuffer* buf, uint32_t videoOutHandle, int32_t displayBufferIndex, uint32_t flipMode, int64_t flipArg); +uint32_t* APS5_VABI sceAgcDcbPrimeUtcl2(CommandBuffer* buf, const volatile void* address, uint32_t sizeInBytes); +std::uint32_t APS5_VABI sceAgcDcbPrimeUtcl2GetSize(); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbState/include/Init.hpp b/core/libs/prx/libSceAgc/DcbState/include/Init.hpp index de641fea3d..8e278b3fc3 100644 --- a/core/libs/prx/libSceAgc/DcbState/include/Init.hpp +++ b/core/libs/prx/libSceAgc/DcbState/include/Init.hpp @@ -1,4 +1,14 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_DCBSTATE_INCLUDE_INIT_HPP #define CORE_LIBS_PRX_LIBSCEAGC_DCBSTATE_INCLUDE_INIT_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcInit(std::uint32_t version); +int APS5_VABI sceAgcInit_0090(std::uint32_t* state, std::uint32_t version); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbState/include/Marker.hpp b/core/libs/prx/libSceAgc/DcbState/include/Marker.hpp index 688c0a80b2..bb626aa02e 100644 --- a/core/libs/prx/libSceAgc/DcbState/include/Marker.hpp +++ b/core/libs/prx/libSceAgc/DcbState/include/Marker.hpp @@ -12,4 +12,14 @@ std::uint32_t* Pop(CommandBuffer* buf, const char* function); } +#include "SceShaders.hpp" + +extern "C" { + +uint32_t* APS5_VABI sceAgcDcbSetMarker(CommandBuffer* buf, const char* str, uint32_t color); +uint32_t* APS5_VABI sceAgcDcbPopMarker(CommandBuffer* buf); +uint32_t* APS5_VABI sceAgcDcbPushMarker(CommandBuffer* buf, const char* str, uint32_t color); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbState/include/Predication.hpp b/core/libs/prx/libSceAgc/DcbState/include/Predication.hpp index 65f64a14eb..5d56b7066a 100644 --- a/core/libs/prx/libSceAgc/DcbState/include/Predication.hpp +++ b/core/libs/prx/libSceAgc/DcbState/include/Predication.hpp @@ -1,4 +1,16 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_DCBSTATE_INCLUDE_PREDICATION_HPP #define CORE_LIBS_PRX_LIBSCEAGC_DCBSTATE_INCLUDE_PREDICATION_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +uint32_t* APS5_VABI sceAgcDcbSetPredication(CommandBuffer* buf, uint8_t condition, uint8_t op, uint8_t waitOp, const volatile void* address, uint32_t countInDwords); +std::uint32_t APS5_VABI sceAgcDcbSetZPassPredicationEnableGetSize(); +std::uint32_t APS5_VABI sceAgcDcbSetPredicationDisableGetSize(); +std::uint32_t APS5_VABI sceAgcDcbSetBoolPredicationEnableGetSize(); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbState/include/Registers.hpp b/core/libs/prx/libSceAgc/DcbState/include/Registers.hpp index b7beea1499..015d0ed7b2 100644 --- a/core/libs/prx/libSceAgc/DcbState/include/Registers.hpp +++ b/core/libs/prx/libSceAgc/DcbState/include/Registers.hpp @@ -1,4 +1,26 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_DCBSTATE_INCLUDE_REGISTERS_HPP #define CORE_LIBS_PRX_LIBSCEAGC_DCBSTATE_INCLUDE_REGISTERS_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t* APS5_VABI sceAgcDcbSetCfRegisterDirect(CommandBuffer* buf, ShaderRegister reg); +std::uint32_t* APS5_VABI sceAgcDcbSetCfRegisterRangeDirect(CommandBuffer* buf, std::uint32_t offset, const std::uint32_t* values, std::uint32_t numValues); +uint32_t* APS5_VABI sceAgcDcbSetCxRegisterDirect(CommandBuffer* buf, ShaderRegister reg); +uint32_t APS5_VABI sceAgcDcbSetCxRegisterDirectGetSize(void); +std::uint32_t* APS5_VABI sceAgcDcbSetCxRegistersIndirect(CommandBuffer* buf, const volatile ShaderRegister* regs, std::uint32_t numRegs); +std::uint32_t APS5_VABI sceAgcDcbSetCxRegistersIndirectGetSize(std::uint32_t numRegs); +uint32_t* APS5_VABI sceAgcDcbSetShRegisterDirect(CommandBuffer* buf, ShaderRegister reg); +std::uint32_t APS5_VABI sceAgcDcbSetShRegisterDirectGetSize(); +std::uint32_t* APS5_VABI sceAgcDcbSetShRegistersIndirect(CommandBuffer* buf, const volatile ShaderRegister* regs, std::uint32_t numRegs); +std::uint32_t APS5_VABI sceAgcDcbSetShRegistersIndirectGetSize(std::uint32_t numRegs); +uint32_t* APS5_VABI sceAgcDcbSetUcRegisterDirect(CommandBuffer* buf, ShaderRegister reg); +std::uint32_t APS5_VABI sceAgcDcbSetUcRegisterDirectGetSize(); +std::uint32_t* APS5_VABI sceAgcDcbSetUcRegistersIndirect(CommandBuffer* buf, const volatile ShaderRegister* regs, std::uint32_t numRegs); +std::uint32_t APS5_VABI sceAgcDcbSetUcRegistersIndirectGetSize(std::uint32_t numRegs); + +} + #endif diff --git a/core/libs/prx/libSceAgc/DcbState/include/Workload.hpp b/core/libs/prx/libSceAgc/DcbState/include/Workload.hpp index 3d5d6cac71..562ab7678f 100644 --- a/core/libs/prx/libSceAgc/DcbState/include/Workload.hpp +++ b/core/libs/prx/libSceAgc/DcbState/include/Workload.hpp @@ -1,4 +1,15 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_DCBSTATE_INCLUDE_WORKLOAD_HPP #define CORE_LIBS_PRX_LIBSCEAGC_DCBSTATE_INCLUDE_WORKLOAD_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +uint32_t* APS5_VABI sceAgcDcbSetWorkloadComplete(CommandBuffer* buf, uint32_t streamId, uint32_t workloadId); +uint32_t* APS5_VABI sceAgcDcbSetWorkloadsActive(CommandBuffer* buf, uint32_t streamId, const uint32_t* workloadIds, uint32_t workloadCount); +uint32_t* APS5_VABI sceAgcDcbSetWorkloadStreamInactive(CommandBuffer* buf, uint32_t streamId); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Export.cpp b/core/libs/prx/libSceAgc/Export.cpp index 8e933ec1cf..3bab548078 100644 --- a/core/libs/prx/libSceAgc/Export.cpp +++ b/core/libs/prx/libSceAgc/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/include/Agc.hpp" #include #include #include "SceTypes.hpp" diff --git a/core/libs/prx/libSceAgc/Misc/include/Debug.hpp b/core/libs/prx/libSceAgc/Misc/include/Debug.hpp index 58286eb85c..6647ed5d6a 100644 --- a/core/libs/prx/libSceAgc/Misc/include/Debug.hpp +++ b/core/libs/prx/libSceAgc/Misc/include/Debug.hpp @@ -1,4 +1,15 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_MISC_INCLUDE_DEBUG_HPP #define CORE_LIBS_PRX_LIBSCEAGC_MISC_INCLUDE_DEBUG_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcDebugRaiseException(std::uint32_t exceptionId); +int APS5_VABI sceAgcSetShaderInstrumentation(std::uint32_t flags); +std::uint32_t APS5_VABI sceAgcGetShaderInstrumentation(); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Misc/include/PacketInfo.hpp b/core/libs/prx/libSceAgc/Misc/include/PacketInfo.hpp index 04a3d07eb6..29d7253eee 100644 --- a/core/libs/prx/libSceAgc/Misc/include/PacketInfo.hpp +++ b/core/libs/prx/libSceAgc/Misc/include/PacketInfo.hpp @@ -14,4 +14,14 @@ int APS5_VABI sceAgcGetDataPacketPayloadAddress(uint32_t** addr, uint32_t* cmd, int APS5_VABI sceAgcGetDataPacketPayloadAddress_0090(uint32_t** addr, uint32_t* cmd, int type); } +#include "SceShaders.hpp" + +extern "C" { + +uint32_t APS5_VABI sceAgcGetPacketSize(uint32_t* packet); +int APS5_VABI sceAgcGetDataPacketPayloadRange(SceAgcMemoryRange* range, uint32_t* cmd, int type); +int APS5_VABI sceAgcDcbGetSystemSoftwareVersion(uint32_t* destination, const uint32_t* packet); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Misc/include/Platform.hpp b/core/libs/prx/libSceAgc/Misc/include/Platform.hpp index fd07f976ab..37e71bb0bd 100644 --- a/core/libs/prx/libSceAgc/Misc/include/Platform.hpp +++ b/core/libs/prx/libSceAgc/Misc/include/Platform.hpp @@ -1,4 +1,13 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_MISC_INCLUDE_PLATFORM_HPP #define CORE_LIBS_PRX_LIBSCEAGC_MISC_INCLUDE_PLATFORM_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcGetIsTrinityMode(bool* isTrinityMode); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Misc/include/RegisterDefaults.hpp b/core/libs/prx/libSceAgc/Misc/include/RegisterDefaults.hpp index c7eb4fea76..f8934d9fb0 100644 --- a/core/libs/prx/libSceAgc/Misc/include/RegisterDefaults.hpp +++ b/core/libs/prx/libSceAgc/Misc/include/RegisterDefaults.hpp @@ -4,6 +4,18 @@ #include extern "C" { -int APS5_VABI sceAgcGetDefaultCxStateFlat(void* out_state, std::uint32_t size); +int APS5_VABI sceAgcGetDefaultCxStateFlat(void* outState, std::uint32_t size); } + +#include "SceShaders.hpp" + +extern "C" { + +void* APS5_VABI sceAgcGetRegisterDefaults(); +void* APS5_VABI sceAgcGetRegisterDefaultsInternal(); +void* APS5_VABI sceAgcGetRegisterDefaults2(std::uint32_t version); +void* APS5_VABI sceAgcGetRegisterDefaults2Internal(std::uint32_t version); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Misc/include/Semaphore.hpp b/core/libs/prx/libSceAgc/Misc/include/Semaphore.hpp index 834dcdd962..3f0602453c 100644 --- a/core/libs/prx/libSceAgc/Misc/include/Semaphore.hpp +++ b/core/libs/prx/libSceAgc/Misc/include/Semaphore.hpp @@ -1,4 +1,14 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_MISC_INCLUDE_SEMAPHORE_HPP #define CORE_LIBS_PRX_LIBSCEAGC_MISC_INCLUDE_SEMAPHORE_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcSetAmmSemaphoreMemory(void* memory, std::uint64_t sizeInBytes); +int APS5_VABI sceAgcGetSemaphoreLabel(std::uint32_t index, void** label); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Misc/include/ShaderFusion.hpp b/core/libs/prx/libSceAgc/Misc/include/ShaderFusion.hpp index 0927dc9e51..d90e4d427e 100644 --- a/core/libs/prx/libSceAgc/Misc/include/ShaderFusion.hpp +++ b/core/libs/prx/libSceAgc/Misc/include/ShaderFusion.hpp @@ -10,7 +10,16 @@ struct SizeAlign { std::size_t m_align; }; -extern "C" int APS5_VABI sceAgcFuseShaderHalves_0200(Shader* fused_result, const Shader* front, const Shader* back, void* scratch_mem); +extern "C" int APS5_VABI sceAgcFuseShaderHalves_0200(Shader* fusedResult, const Shader* front, const Shader* back, void* scratchMem); extern "C" int APS5_VABI sceAgcGetFusedShaderSize_0080(SizeAlign* dst, const Shader* front, const Shader* back); +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcFuseShaderHalves_nid_postfix(Shader* fusedResult, const Shader* front, const Shader* back, void* scratchMem); +int APS5_VABI sceAgcUpdateInterpolantMapping_0100(ShaderRegister* regs, const Shader* vs, const Shader* ps); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Misc/include/Suspend.hpp b/core/libs/prx/libSceAgc/Misc/include/Suspend.hpp index 25b2dd5bf7..295d3761ce 100644 --- a/core/libs/prx/libSceAgc/Misc/include/Suspend.hpp +++ b/core/libs/prx/libSceAgc/Misc/include/Suspend.hpp @@ -1,4 +1,14 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_MISC_INCLUDE_SUSPEND_HPP #define CORE_LIBS_PRX_LIBSCEAGC_MISC_INCLUDE_SUSPEND_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcSuspendPoint(void); +int APS5_VABI sceAgcSetSubmitMode(std::uint32_t mode); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Patch/include/Branch.hpp b/core/libs/prx/libSceAgc/Patch/include/Branch.hpp index f4b7c44624..2e13cbeab4 100644 --- a/core/libs/prx/libSceAgc/Patch/include/Branch.hpp +++ b/core/libs/prx/libSceAgc/Patch/include/Branch.hpp @@ -1,4 +1,17 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_BRANCH_HPP #define CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_BRANCH_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcBranchPatchSetCompareAddress(std::uint32_t* cmd, const volatile std::uint64_t* compareAddress); +int APS5_VABI sceAgcBranchPatchSetThenTarget(std::uint32_t* cmd, const volatile std::uint32_t* target, std::uint32_t sizeInDwords); +int APS5_VABI sceAgcBranchPatchSetElseTarget(std::uint32_t* cmd, const volatile std::uint32_t* target, std::uint32_t sizeInDwords); +int APS5_VABI sceAgcBranchPatchSetThenTarget_0300(std::uint32_t* cmd, std::uint8_t cachePolicy, const volatile std::uint32_t* target, std::uint32_t sizeInDwords); +int APS5_VABI sceAgcBranchPatchSetElseTarget_0300(std::uint32_t* cmd, std::uint8_t cachePolicy, const volatile std::uint32_t* target, std::uint32_t sizeInDwords); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Patch/include/CondExec.hpp b/core/libs/prx/libSceAgc/Patch/include/CondExec.hpp index 8d81efe673..6db4bcedb9 100644 --- a/core/libs/prx/libSceAgc/Patch/include/CondExec.hpp +++ b/core/libs/prx/libSceAgc/Patch/include/CondExec.hpp @@ -1,4 +1,16 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_CONDEXEC_HPP #define CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_CONDEXEC_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcCondExecPatchSetCommandAddress(uint32_t* cmd, const volatile uint32_t* command); +int APS5_VABI sceAgcCondExecPatchSetEnd(uint32_t* cmd, const volatile uint32_t* buffer); +int APS5_VABI sceAgcAsyncCondExecPatchSetCommandAddress(std::uint32_t* cmd, const volatile std::uint32_t* command); +int APS5_VABI sceAgcAsyncCondExecPatchSetEnd(std::uint32_t* cmd, const volatile std::uint32_t* buffer); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Patch/include/Dma.hpp b/core/libs/prx/libSceAgc/Patch/include/Dma.hpp index d28d24df89..50dfc239b6 100644 --- a/core/libs/prx/libSceAgc/Patch/include/Dma.hpp +++ b/core/libs/prx/libSceAgc/Patch/include/Dma.hpp @@ -1,4 +1,14 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_DMA_HPP #define CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_DMA_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcDmaDataPatchSetDstAddressOrOffset(std::uint32_t* cmd, std::uint64_t address); +int APS5_VABI sceAgcDmaDataPatchSetSrcAddressOrOffsetOrImmediate(std::uint32_t* cmd, std::uint64_t address); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Patch/include/IndirectRegisters.hpp b/core/libs/prx/libSceAgc/Patch/include/IndirectRegisters.hpp index 72863129b7..9de388c582 100644 --- a/core/libs/prx/libSceAgc/Patch/include/IndirectRegisters.hpp +++ b/core/libs/prx/libSceAgc/Patch/include/IndirectRegisters.hpp @@ -1,4 +1,21 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_INDIRECTREGISTERS_HPP #define CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_INDIRECTREGISTERS_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcSetCxRegIndirectPatchAddRegisters(std::uint32_t* cmd, std::uint32_t numRegs); +int APS5_VABI sceAgcSetCxRegIndirectPatchSetAddress(std::uint32_t* cmd, const volatile ShaderRegister* regs); +int APS5_VABI sceAgcSetCxRegIndirectPatchSetNumRegisters(std::uint32_t* cmd, std::uint32_t numRegs); +int APS5_VABI sceAgcSetShRegIndirectPatchAddRegisters(std::uint32_t* cmd, std::uint32_t numRegs); +int APS5_VABI sceAgcSetShRegIndirectPatchSetAddress(std::uint32_t* cmd, const volatile ShaderRegister* regs); +int APS5_VABI sceAgcSetShRegIndirectPatchSetNumRegisters(std::uint32_t* cmd, std::uint32_t numRegs); +int APS5_VABI sceAgcSetUcRegIndirectPatchAddRegisters(std::uint32_t* cmd, std::uint32_t numRegs); +int APS5_VABI sceAgcSetUcRegIndirectPatchSetAddress(std::uint32_t* cmd, const volatile ShaderRegister* regs); +int APS5_VABI sceAgcSetUcRegIndirectPatchSetNumRegisters(std::uint32_t* cmd, std::uint32_t numRegs); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Patch/include/Jump.hpp b/core/libs/prx/libSceAgc/Patch/include/Jump.hpp index b5820f260d..1d6ba6899e 100644 --- a/core/libs/prx/libSceAgc/Patch/include/Jump.hpp +++ b/core/libs/prx/libSceAgc/Patch/include/Jump.hpp @@ -1,4 +1,14 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_JUMP_HPP #define CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_JUMP_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcJumpPatchSetTarget(uint32_t* cmd, const volatile uint32_t* target, uint32_t sizeInDwords); +int APS5_VABI sceAgcJumpPatchSetTarget_0300(uint32_t* cmd, uint64_t cachePolicy, const volatile uint32_t* target, uint32_t sizeInDwords); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Patch/include/Nop.hpp b/core/libs/prx/libSceAgc/Patch/include/Nop.hpp index 9958a2cbc6..390c3de34c 100644 --- a/core/libs/prx/libSceAgc/Patch/include/Nop.hpp +++ b/core/libs/prx/libSceAgc/Patch/include/Nop.hpp @@ -1,4 +1,13 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_NOP_HPP #define CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_NOP_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +std::uint32_t* APS5_VABI sceAgcSetNop(CommandBuffer* buf, std::uint32_t sizeDw); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Patch/include/QueueEndOfPipeAction.hpp b/core/libs/prx/libSceAgc/Patch/include/QueueEndOfPipeAction.hpp index eb06c3a58d..7c7d61b7cc 100644 --- a/core/libs/prx/libSceAgc/Patch/include/QueueEndOfPipeAction.hpp +++ b/core/libs/prx/libSceAgc/Patch/include/QueueEndOfPipeAction.hpp @@ -1,4 +1,16 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_QUEUEENDOFPIPEACTION_HPP #define CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_QUEUEENDOFPIPEACTION_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcQueueEndOfPipeActionPatchAddress(std::uint32_t* cmd, const volatile Label* address); +int APS5_VABI sceAgcQueueEndOfPipeActionPatchData(uint32_t* cmd, uint64_t data); +int APS5_VABI sceAgcQueueEndOfPipeActionPatchGcrCntl(std::uint32_t* cmd, std::uint16_t gcrControl); +int APS5_VABI sceAgcQueueEndOfPipeActionPatchType(std::uint32_t* cmd, std::uint8_t action); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Patch/include/Rewind.hpp b/core/libs/prx/libSceAgc/Patch/include/Rewind.hpp index 52e1bc2625..9752bd43da 100644 --- a/core/libs/prx/libSceAgc/Patch/include/Rewind.hpp +++ b/core/libs/prx/libSceAgc/Patch/include/Rewind.hpp @@ -1,4 +1,14 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_REWIND_HPP #define CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_REWIND_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcRewindPatchSetRewindState(uint32_t* cmd, uint8_t state); +int APS5_VABI sceAgcAsyncRewindPatchSetRewindState(std::uint32_t* cmd, std::uint8_t state); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Patch/include/WaitRegMem.hpp b/core/libs/prx/libSceAgc/Patch/include/WaitRegMem.hpp index 8e14191a5e..0bdd3d5fd6 100644 --- a/core/libs/prx/libSceAgc/Patch/include/WaitRegMem.hpp +++ b/core/libs/prx/libSceAgc/Patch/include/WaitRegMem.hpp @@ -1,4 +1,22 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_WAITREGMEM_HPP #define CORE_LIBS_PRX_LIBSCEAGC_PATCH_INCLUDE_WAITREGMEM_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcWaitRegMemPatchAddress(std::uint32_t* cmd, const volatile void* address); +int APS5_VABI sceAgcWaitRegMemPatchReference(std::uint32_t* cmd, std::uint32_t reference); +int APS5_VABI sceAgcWaitRegMemPatchMask(std::uint32_t* cmd, std::uint32_t mask); +int APS5_VABI sceAgcWaitRegMemPatchCompareFunction(std::uint32_t* cmd, std::uint8_t compareFunction); +int APS5_VABI sceAgcWriteDataPatchSetAddressOrOffset(std::uint32_t* cmd, std::uint64_t address); +int APS5_VABI sceAgcAsyncWriteDataPatchSetAddressOrOffset(std::uint32_t* cmd, std::uint64_t address); +int APS5_VABI sceAgcWriteDataPatchSetDst(std::uint32_t* cmd, std::uint8_t dst); +int APS5_VABI sceAgcAsyncWriteDataPatchSetDst(std::uint32_t* cmd, std::uint8_t dst); +int APS5_VABI sceAgcWriteDataPatchSetCachePolicy(std::uint32_t* cmd, std::uint8_t cachePolicy); +int APS5_VABI sceAgcAsyncWriteDataPatchSetCachePolicy(std::uint32_t* cmd, std::uint8_t cachePolicy); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Predication/include/Predication.hpp b/core/libs/prx/libSceAgc/Predication/include/Predication.hpp index 7ae84c8a76..cad10cd236 100644 --- a/core/libs/prx/libSceAgc/Predication/include/Predication.hpp +++ b/core/libs/prx/libSceAgc/Predication/include/Predication.hpp @@ -1,4 +1,14 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_PREDICATION_INCLUDE_PREDICATION_HPP #define CORE_LIBS_PRX_LIBSCEAGC_PREDICATION_INCLUDE_PREDICATION_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcSetPacketPredication(uint32_t* packet, uint32_t predication); +int APS5_VABI sceAgcSetRangePredication(uint32_t* start, const volatile uint32_t* end, uint32_t predication); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Shader/include/CreateShader.hpp b/core/libs/prx/libSceAgc/Shader/include/CreateShader.hpp index 68117f4735..044d288596 100644 --- a/core/libs/prx/libSceAgc/Shader/include/CreateShader.hpp +++ b/core/libs/prx/libSceAgc/Shader/include/CreateShader.hpp @@ -1,4 +1,13 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_SHADER_INCLUDE_CREATESHADER_HPP #define CORE_LIBS_PRX_LIBSCEAGC_SHADER_INCLUDE_CREATESHADER_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcCreateShader(Shader** dst, void* header, const volatile void* code); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Shader/include/GsOversubscription.hpp b/core/libs/prx/libSceAgc/Shader/include/GsOversubscription.hpp new file mode 100644 index 0000000000..b454416920 --- /dev/null +++ b/core/libs/prx/libSceAgc/Shader/include/GsOversubscription.hpp @@ -0,0 +1,10 @@ +#pragma once + +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcGetGsOversubscription(ShaderRegister* regs, const Shader* gs, std::uint32_t budget, float factor); + +} diff --git a/core/libs/prx/libSceAgc/Shader/include/GsPrimPayload.hpp b/core/libs/prx/libSceAgc/Shader/include/GsPrimPayload.hpp new file mode 100644 index 0000000000..d72b485767 --- /dev/null +++ b/core/libs/prx/libSceAgc/Shader/include/GsPrimPayload.hpp @@ -0,0 +1,10 @@ +#pragma once + +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcGetGsPrimPayload(std::uint32_t* payload, const Shader* gs); + +} diff --git a/core/libs/prx/libSceAgc/Shader/include/InterpolantMapping.hpp b/core/libs/prx/libSceAgc/Shader/include/InterpolantMapping.hpp index 91ffb9eeb8..7085d35fe0 100644 --- a/core/libs/prx/libSceAgc/Shader/include/InterpolantMapping.hpp +++ b/core/libs/prx/libSceAgc/Shader/include/InterpolantMapping.hpp @@ -1,4 +1,17 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_SHADER_INCLUDE_INTERPOLANTMAPPING_HPP #define CORE_LIBS_PRX_LIBSCEAGC_SHADER_INCLUDE_INTERPOLANTMAPPING_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcCreateInterpolantMapping_0100(ShaderRegister* regs, const Shader* gs, const Shader* ps); +int APS5_VABI sceAgcCreateInterpolantMapping_10000(ShaderRegister* regs, const Shader* gs, const Shader* ps); +int APS5_VABI sceAgcUpdateInterpolantMapping_10000(ShaderRegister* regs, const Shader* gs, const Shader* ps); +int APS5_VABI sceAgcCreateInterpolantMapping_nid_postfix(ShaderRegister* regs, const Shader* gs, const Shader* ps); +int APS5_VABI sceAgcUpdateInterpolantMapping_nid_postfix(ShaderRegister* regs, const Shader* gs, const Shader* ps); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Shader/include/LinkShaders.hpp b/core/libs/prx/libSceAgc/Shader/include/LinkShaders.hpp new file mode 100644 index 0000000000..99d9e328a3 --- /dev/null +++ b/core/libs/prx/libSceAgc/Shader/include/LinkShaders.hpp @@ -0,0 +1,10 @@ +#pragma once + +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcLinkShaders(ShaderRegister* context, ShaderRegister* primitive, const void* reserved, const Shader* vertex, const Shader* pixel, std::uint32_t primitiveType); + +} diff --git a/core/libs/prx/libSceAgc/Shader/include/PrimState.hpp b/core/libs/prx/libSceAgc/Shader/include/PrimState.hpp index 1dda27a825..090a9a78e6 100644 --- a/core/libs/prx/libSceAgc/Shader/include/PrimState.hpp +++ b/core/libs/prx/libSceAgc/Shader/include/PrimState.hpp @@ -1,4 +1,14 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGC_SHADER_INCLUDE_PRIMSTATE_HPP #define CORE_LIBS_PRX_LIBSCEAGC_SHADER_INCLUDE_PRIMSTATE_HPP +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcCreatePrimState(ShaderRegister* cxRegs, ShaderRegister* ucRegs, const Shader* hs, const Shader* gs, std::uint32_t primType); +int APS5_VABI sceAgcUpdatePrimState(ShaderRegister* cxRegs, ShaderRegister* ucRegs, std::uint32_t primType); + +} + #endif diff --git a/core/libs/prx/libSceAgc/Shader/src/GsOversubscription.cpp b/core/libs/prx/libSceAgc/Shader/src/GsOversubscription.cpp index 029ec1c099..79209401f3 100644 --- a/core/libs/prx/libSceAgc/Shader/src/GsOversubscription.cpp +++ b/core/libs/prx/libSceAgc/Shader/src/GsOversubscription.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/Shader/include/GsOversubscription.hpp" #include #include #include diff --git a/core/libs/prx/libSceAgc/Shader/src/GsPrimPayload.cpp b/core/libs/prx/libSceAgc/Shader/src/GsPrimPayload.cpp index 722ade98c6..2815c5a02b 100644 --- a/core/libs/prx/libSceAgc/Shader/src/GsPrimPayload.cpp +++ b/core/libs/prx/libSceAgc/Shader/src/GsPrimPayload.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/Shader/include/GsPrimPayload.hpp" #include #include #include diff --git a/core/libs/prx/libSceAgc/Shader/src/LinkShaders.cpp b/core/libs/prx/libSceAgc/Shader/src/LinkShaders.cpp index 59a43354c8..8b6a8ff132 100644 --- a/core/libs/prx/libSceAgc/Shader/src/LinkShaders.cpp +++ b/core/libs/prx/libSceAgc/Shader/src/LinkShaders.cpp @@ -1,3 +1,6 @@ +#include "prx/libSceAgc/Shader/include/PrimState.hpp" +#include "prx/libSceAgc/Shader/include/LinkShaders.hpp" +#include "prx/libSceAgc/Shader/include/InterpolantMapping.hpp" #include "SceShaders.hpp" #include "prx/libSceAgcDriver/Execution/include/ShaderPreparationScope.hpp" #include "prx/libSceAgcDriver/Execution/include/Driver.hpp" @@ -6,9 +9,6 @@ #include #include -extern "C" int APS5_VABI sceAgcCreatePrimState(ShaderRegister*, ShaderRegister*, const Shader*, const Shader*, std::uint32_t); -extern "C" int APS5_VABI sceAgcCreateInterpolantMapping_0100(ShaderRegister*, const Shader*, const Shader*); - extern "C" int APS5_VABI sceAgcLinkShaders(ShaderRegister* context, ShaderRegister* primitive, const void* reserved, const Shader* vertex, const Shader* pixel, std::uint32_t primitiveType) { using namespace ShaderRegs; diff --git a/core/libs/prx/libSceAgc/Unimplemented.cpp b/core/libs/prx/libSceAgc/Unimplemented.cpp index 487d737193..919f2d8b77 100644 --- a/core/libs/prx/libSceAgc/Unimplemented.cpp +++ b/core/libs/prx/libSceAgc/Unimplemented.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/include/Agc.hpp" #include #include #include "SceTypes.hpp" diff --git a/core/libs/prx/libSceAgc/include/Agc.hpp b/core/libs/prx/libSceAgc/include/Agc.hpp new file mode 100644 index 0000000000..4658865104 --- /dev/null +++ b/core/libs/prx/libSceAgc/include/Agc.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include "SceTypes.hpp" +#include "SceShaders.hpp" + +extern "C" { + +int APS5_VABI sceAgcSuspendPointAndCheckStatus(void); +std::uint32_t* APS5_VABI sceAgcAcbPushMarkerSpan(CommandBuffer* buffer, const char* text, std::uint32_t length, std::uint32_t color); +std::uint32_t* APS5_VABI sceAgcAcbSetMarkerSpan(CommandBuffer* buffer, const char* text, std::uint32_t length, std::uint32_t color); +int APS5_VABI sceAgcAcquireMemSetEngine(std::uint32_t* packet, std::uint8_t engine); +std::uint32_t* APS5_VABI sceAgcDcbPushMarkerSpan(CommandBuffer* buffer, const char* text, std::uint32_t length, std::uint32_t color); +std::uint32_t* APS5_VABI sceAgcDcbSetMarkerSpan(CommandBuffer* buffer, const char* text, std::uint32_t length, std::uint32_t color); +int APS5_VABI sceAgcSetSemaphoreMemory(void* memory, std::uint64_t size); +std::uint32_t* APS5_VABI sceAgcCbMemsetExclusive(CommandBuffer* buffer, void* destination, const void* pattern, std::uint64_t size); + +} diff --git a/core/libs/prx/libSceAgc/libSceAgc.hpp b/core/libs/prx/libSceAgc/libSceAgc.hpp new file mode 100644 index 0000000000..407e5b809c --- /dev/null +++ b/core/libs/prx/libSceAgc/libSceAgc.hpp @@ -0,0 +1,51 @@ +#pragma once + +#include "prx/libSceAgc/Acb/include/Control.hpp" +#include "prx/libSceAgc/Acb/include/Dispatch.hpp" +#include "prx/libSceAgc/Acb/include/Memory.hpp" +#include "prx/libSceAgc/Acb/include/Sync.hpp" +#include "prx/libSceAgc/Cb/include/Branch.hpp" +#include "prx/libSceAgc/Cb/include/Dispatch.hpp" +#include "prx/libSceAgc/Cb/include/Registers.hpp" +#include "prx/libSceAgc/Cb/include/Sync.hpp" +#include "prx/libSceAgc/DcbDraw/include/DrawIndexed.hpp" +#include "prx/libSceAgc/DcbDraw/include/DrawNonIndexed.hpp" +#include "prx/libSceAgc/DcbDraw/include/IndexBuffer.hpp" +#include "prx/libSceAgc/DcbDraw/include/Instancing.hpp" +#include "prx/libSceAgc/DcbDraw/include/Stats.hpp" +#include "prx/libSceAgc/DcbFlow/include/Control.hpp" +#include "prx/libSceAgc/DcbFlow/include/Dispatch.hpp" +#include "prx/libSceAgc/DcbFlow/include/Memory.hpp" +#include "prx/libSceAgc/DcbFlow/include/Sync.hpp" +#include "prx/libSceAgc/DcbState/include/ContextState.hpp" +#include "prx/libSceAgc/DcbState/include/Display.hpp" +#include "prx/libSceAgc/DcbState/include/Init.hpp" +#include "prx/libSceAgc/DcbState/include/Marker.hpp" +#include "prx/libSceAgc/DcbState/include/Predication.hpp" +#include "prx/libSceAgc/DcbState/include/Registers.hpp" +#include "prx/libSceAgc/DcbState/include/Workload.hpp" +#include "prx/libSceAgc/include/Agc.hpp" +#include "prx/libSceAgc/Misc/include/Debug.hpp" +#include "prx/libSceAgc/Misc/include/PacketInfo.hpp" +#include "prx/libSceAgc/Misc/include/Platform.hpp" +#include "prx/libSceAgc/Misc/include/RegisterDefaults.hpp" +#include "prx/libSceAgc/Misc/include/Semaphore.hpp" +#include "prx/libSceAgc/Misc/include/ShaderFusion.hpp" +#include "prx/libSceAgc/Misc/include/StaticBuffer.hpp" +#include "prx/libSceAgc/Misc/include/Suspend.hpp" +#include "prx/libSceAgc/Patch/include/Branch.hpp" +#include "prx/libSceAgc/Patch/include/CondExec.hpp" +#include "prx/libSceAgc/Patch/include/Dma.hpp" +#include "prx/libSceAgc/Patch/include/IndirectRegisters.hpp" +#include "prx/libSceAgc/Patch/include/Jump.hpp" +#include "prx/libSceAgc/Patch/include/Nop.hpp" +#include "prx/libSceAgc/Patch/include/QueueEndOfPipeAction.hpp" +#include "prx/libSceAgc/Patch/include/Rewind.hpp" +#include "prx/libSceAgc/Patch/include/WaitRegMem.hpp" +#include "prx/libSceAgc/Predication/include/Predication.hpp" +#include "prx/libSceAgc/Shader/include/CreateShader.hpp" +#include "prx/libSceAgc/Shader/include/GsOversubscription.hpp" +#include "prx/libSceAgc/Shader/include/GsPrimPayload.hpp" +#include "prx/libSceAgc/Shader/include/InterpolantMapping.hpp" +#include "prx/libSceAgc/Shader/include/LinkShaders.hpp" +#include "prx/libSceAgc/Shader/include/PrimState.hpp" diff --git a/core/libs/prx/libSceAgc/tests/AtomicGdsSize.cpp b/core/libs/prx/libSceAgc/tests/AtomicGdsSize.cpp index bbc5416bd3..3315cd1312 100644 --- a/core/libs/prx/libSceAgc/tests/AtomicGdsSize.cpp +++ b/core/libs/prx/libSceAgc/tests/AtomicGdsSize.cpp @@ -1,14 +1,11 @@ +#include "prx/libSceAgc/Acb/include/Memory.hpp" +#include "prx/libSceAgc/Acb/include/Control.hpp" #include "prx/libSceAgc/Command/include/Packet.hpp" #include #include #include -extern "C" std::uint32_t APS5_VABI sceAgcAcbAtomicGdsGetSize(); -extern "C" std::uint32_t* APS5_VABI sceAgcAcbAtomicGds_0900(CommandBuffer* buf, std::uint32_t control, std::uint32_t mode, - std::uint32_t gdsOp, std::uint32_t src, std::uint16_t offset, std::uint16_t index, std::uint32_t mask, - std::uint32_t data, std::uint64_t compareData, std::uint64_t extraData); - int main() { constexpr std::uint32_t expectedSize = 11u * sizeof(std::uint32_t); if (sceAgcAcbAtomicGdsGetSize() != expectedSize) { diff --git a/core/libs/prx/libSceAgc/tests/BranchPatch.cpp b/core/libs/prx/libSceAgc/tests/BranchPatch.cpp index 58afe9b1c9..24c0f213b0 100644 --- a/core/libs/prx/libSceAgc/tests/BranchPatch.cpp +++ b/core/libs/prx/libSceAgc/tests/BranchPatch.cpp @@ -1,3 +1,5 @@ +#include "prx/libSceAgc/Patch/include/Branch.hpp" +#include "prx/libSceAgc/Cb/include/Branch.hpp" #include "prx/libSceAgc/Command/include/Packet.hpp" #include @@ -7,16 +9,6 @@ #include #include -extern "C" { -std::uint32_t* APS5_VABI sceAgcCbBranch(CommandBuffer*, std::uint8_t, std::uint8_t, const volatile std::uint64_t*, std::uint64_t, std::uint64_t, std::uint8_t, const volatile std::uint32_t*, std::uint32_t, std::uint8_t, const volatile std::uint32_t*, std::uint32_t); -std::uint32_t APS5_VABI sceAgcCbBranchGetSize(); -int APS5_VABI sceAgcBranchPatchSetCompareAddress(std::uint32_t*, const volatile std::uint64_t*); -int APS5_VABI sceAgcBranchPatchSetThenTarget(std::uint32_t*, const volatile std::uint32_t*, std::uint32_t); -int APS5_VABI sceAgcBranchPatchSetElseTarget(std::uint32_t*, const volatile std::uint32_t*, std::uint32_t); -int APS5_VABI sceAgcBranchPatchSetThenTarget_0300(std::uint32_t*, std::uint8_t, const volatile std::uint32_t*, std::uint32_t); -int APS5_VABI sceAgcBranchPatchSetElseTarget_0300(std::uint32_t*, std::uint8_t, const volatile std::uint32_t*, std::uint32_t); -} - namespace { void check(bool condition, const char* message) { diff --git a/core/libs/prx/libSceAgc/tests/CbCondWrite.cpp b/core/libs/prx/libSceAgc/tests/CbCondWrite.cpp index 69186e10ba..f08ab6e67b 100644 --- a/core/libs/prx/libSceAgc/tests/CbCondWrite.cpp +++ b/core/libs/prx/libSceAgc/tests/CbCondWrite.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/Cb/include/Branch.hpp" #include "prx/libSceAgc/Command/include/Packet.hpp" #include @@ -5,11 +6,6 @@ #include #include -extern "C" { -std::uint32_t* APS5_VABI sceAgcCbCondWrite(CommandBuffer*, std::uint32_t, std::uint32_t, const volatile void*, std::uint32_t, const volatile void*, std::uint32_t, std::uint32_t); -std::uint32_t APS5_VABI sceAgcCbCondWriteGetSize(); -} - namespace { constexpr std::uint32_t Sentinel = 0xabcdef01u; diff --git a/core/libs/prx/libSceAgc/tests/Commands.cpp b/core/libs/prx/libSceAgc/tests/Commands.cpp index bcda442f6b..d1de10f3c2 100644 --- a/core/libs/prx/libSceAgc/tests/Commands.cpp +++ b/core/libs/prx/libSceAgc/tests/Commands.cpp @@ -1,3 +1,22 @@ +#include "prx/libSceAgcDriver/Resource/include/Registration.hpp" +#include "prx/libSceAgc/Patch/include/WaitRegMem.hpp" +#include "prx/libSceAgc/Patch/include/Nop.hpp" +#include "prx/libSceAgc/Misc/include/Suspend.hpp" +#include "prx/libSceAgc/Misc/include/RegisterDefaults.hpp" +#include "prx/libSceAgc/Misc/include/PacketInfo.hpp" +#include "prx/libSceAgc/Misc/include/Debug.hpp" +#include "prx/libSceAgc/DcbState/include/Workload.hpp" +#include "prx/libSceAgc/DcbState/include/Marker.hpp" +#include "prx/libSceAgc/DcbState/include/Init.hpp" +#include "prx/libSceAgc/DcbState/include/Display.hpp" +#include "prx/libSceAgc/DcbState/include/ContextState.hpp" +#include "prx/libSceAgc/DcbFlow/include/Sync.hpp" +#include "prx/libSceAgc/DcbFlow/include/Control.hpp" +#include "prx/libSceAgc/DcbDraw/include/Instancing.hpp" +#include "prx/libSceAgc/DcbDraw/include/IndexBuffer.hpp" +#include "prx/libSceAgc/DcbDraw/include/DrawIndexed.hpp" +#include "prx/libSceAgc/Cb/include/Registers.hpp" +#include "prx/libSceAgc/Acb/include/Control.hpp" #include "prx/libSceAgc/Command/include/Packet.hpp" #include "prx/libSceAgc/Command/include/Memory.hpp" #include "prx/libSceAgc/Command/include/RegisterDefaults.hpp" @@ -10,57 +29,6 @@ #include #include -extern "C" std::uint32_t* APS5_VABI sceAgcDcbEventWrite(CommandBuffer* buf, std::uint8_t eventType, const volatile void* address); -extern "C" std::uint64_t APS5_VABI sceAgcDcbEventWriteGetSize(std::uint8_t eventType); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbResetQueue(CommandBuffer* buf, std::uint32_t op, std::uint32_t state); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbClearState(CommandBuffer* buf, std::uint32_t command); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbSetFlip(CommandBuffer* buf, std::uint32_t handle, std::int32_t index, std::uint32_t mode, std::int64_t argument); -extern "C" std::uint32_t* APS5_VABI sceAgcAcbWaitUntilSafeForRendering(CommandBuffer* buf, std::uint32_t handle, std::uint32_t index); -extern "C" std::uint32_t* APS5_VABI sceAgcAcbSetFlip(CommandBuffer* buf, std::uint32_t handle, std::int32_t index, std::uint32_t mode, std::int64_t argument); -extern "C" int APS5_VABI sceAgcSuspendPoint(); -extern "C" int APS5_VABI sceAgcInit(std::uint32_t version); -extern "C" void* APS5_VABI sceAgcGetRegisterDefaults(); -extern "C" void* APS5_VABI sceAgcGetRegisterDefaults2(std::uint32_t version); -extern "C" void* APS5_VABI sceAgcGetRegisterDefaultsInternal(); -extern "C" void* APS5_VABI sceAgcGetRegisterDefaults2Internal(std::uint32_t version); -extern "C" int APS5_VABI sceAgcGetDefaultCxStateFlat(void* out_state, std::uint32_t size); -extern "C" int APS5_VABI sceAgcInit_0090(std::uint32_t* state, std::uint32_t version); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbDrawIndexAuto(CommandBuffer* buf, std::uint32_t indexCount, std::uint64_t modifier); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbDrawIndexIndirect(CommandBuffer* buf, std::uint32_t dataOffsetInBytes, std::uint64_t modifier); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbDrawIndexIndirectMulti(CommandBuffer* buf, std::uint32_t dataOffsetInBytes, std::uint32_t countIndirect, std::uint32_t maxCountOrCount, const volatile void* countAddress, std::uint32_t strideInBytes, std::uint64_t modifier); -extern "C" int APS5_VABI sceAgcWaitRegMemPatchAddress(std::uint32_t* cmd, const volatile void* address); -extern "C" int APS5_VABI sceAgcWaitRegMemPatchCompareFunction(std::uint32_t* cmd, std::uint8_t compareFunction); -extern "C" int APS5_VABI sceAgcWaitRegMemPatchReference(std::uint32_t* cmd, std::uint32_t reference); -extern "C" int APS5_VABI sceAgcWaitRegMemPatchMask(std::uint32_t* cmd, std::uint32_t mask); -extern "C" int APS5_VABI sceAgcGetDataPacketPayloadAddress_0090(std::uint32_t** addr, std::uint32_t* cmd, int type); -extern "C" std::uint32_t* APS5_VABI sceAgcCbSetShRegisterRangeDirect(CommandBuffer* buf, std::uint32_t offset, const std::uint32_t* values, std::uint32_t numValues); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbContextStateOp_0100(CommandBuffer* buf, std::uint32_t operation); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbPushMarker(CommandBuffer* buf, const char* str, std::uint32_t color); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbPopMarker(CommandBuffer* buf); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbSetWorkloadComplete(CommandBuffer* buf, std::uint32_t stream_id, std::uint32_t workload_id); -extern "C" int APS5_VABI sceAgcDriverRegisterWorkloadStream(std::uint32_t stream_id, const void* stream); -extern "C" int APS5_VABI sceAgcDriverUnregisterWorkloadStream(std::uint32_t stream_id); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbSetWorkloadsActive(CommandBuffer* buf, std::uint32_t stream_id, const std::uint32_t* workload_ids, std::uint32_t workload_count); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbSetWorkloadStreamInactive(CommandBuffer* buf, std::uint32_t streamId); -extern "C" std::uint32_t* APS5_VABI sceAgcAcbSetWorkloadsActive(CommandBuffer* buf, std::uint32_t streamId, const std::uint32_t* workloadIds, std::uint32_t workloadCount); -extern "C" std::uint32_t* APS5_VABI sceAgcAcbSetWorkloadComplete(CommandBuffer* buf, std::uint32_t streamId, std::uint32_t workloadId); -extern "C" std::uint32_t* APS5_VABI sceAgcAcbSetWorkloadStreamInactive(CommandBuffer* buf, std::uint32_t streamId); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbSetMarker(CommandBuffer* buf, const char* str, std::uint32_t color); -extern "C" std::uint32_t* APS5_VABI sceAgcAcbPushMarker(CommandBuffer* buf, const char* str, std::uint32_t color); -extern "C" std::uint32_t* APS5_VABI sceAgcAcbPopMarker(CommandBuffer* buf); -extern "C" std::uint32_t* APS5_VABI sceAgcAcbPushMarkerSpan(CommandBuffer* buf, const char* str, std::uint32_t length, std::uint32_t color); -extern "C" std::uint32_t* APS5_VABI sceAgcAcbSetMarkerSpan(CommandBuffer* buf, const char* str, std::uint32_t length, std::uint32_t color); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbPushMarkerSpan(CommandBuffer* buf, const char* str, std::uint32_t length, std::uint32_t color); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbSetMarkerSpan(CommandBuffer* buf, const char* str, std::uint32_t length, std::uint32_t color); -extern "C" std::uint32_t* APS5_VABI sceAgcAcbSetMarker(CommandBuffer* buf, const char* str, std::uint32_t color); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbSetIndexBuffer(CommandBuffer* buf, std::uint64_t indexAddress); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbSetIndexIndirectArgs(CommandBuffer* buf, std::uint64_t attributeAddress, std::uint32_t attributeIndex); -extern "C" std::uint32_t APS5_VABI sceAgcDcbSetIndexIndirectArgsGetSize(); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbSetBaseIndirectArgs(CommandBuffer* buf, std::uint32_t shaderType, const volatile void* indirectBaseAddr); -extern "C" std::uint32_t* APS5_VABI sceAgcSetNop(CommandBuffer* buf, std::uint32_t sizeDw); -extern "C" int APS5_VABI sceAgcDebugRaiseException(std::uint32_t exceptionId); -extern "C" std::uint32_t* APS5_VABI sceAgcAcbAtomicGds_0900(CommandBuffer* buf, std::uint32_t control, std::uint32_t mode, std::uint32_t gdsOp, std::uint32_t src, std::uint16_t offset, std::uint16_t index, std::uint32_t mask, std::uint32_t data, std::uint64_t compareData, std::uint64_t extraData); - namespace { void check(bool condition, const char* message) { diff --git a/core/libs/prx/libSceAgc/tests/CondExecPatch.cpp b/core/libs/prx/libSceAgc/tests/CondExecPatch.cpp index 762f40b1a7..b5939e0c46 100644 --- a/core/libs/prx/libSceAgc/tests/CondExecPatch.cpp +++ b/core/libs/prx/libSceAgc/tests/CondExecPatch.cpp @@ -1,3 +1,6 @@ +#include "prx/libSceAgc/Patch/include/CondExec.hpp" +#include "prx/libSceAgc/DcbFlow/include/Sync.hpp" +#include "prx/libSceAgc/Acb/include/Sync.hpp" #include "prx/libSceAgc/Command/include/Packet.hpp" #include @@ -7,15 +10,6 @@ #include #include -extern "C" { -std::uint32_t* APS5_VABI sceAgcDcbCondExec(CommandBuffer*, const volatile std::uint32_t*, std::uint32_t); -std::uint32_t* APS5_VABI sceAgcAcbCondExec(CommandBuffer*, const volatile std::uint32_t*, std::uint32_t); -int APS5_VABI sceAgcCondExecPatchSetCommandAddress(std::uint32_t*, const volatile std::uint32_t*); -int APS5_VABI sceAgcCondExecPatchSetEnd(std::uint32_t*, const volatile std::uint32_t*); -int APS5_VABI sceAgcAsyncCondExecPatchSetCommandAddress(std::uint32_t*, const volatile std::uint32_t*); -int APS5_VABI sceAgcAsyncCondExecPatchSetEnd(std::uint32_t*, const volatile std::uint32_t*); -} - namespace { constexpr std::uint32_t Sentinel = 0xabcdef01u; diff --git a/core/libs/prx/libSceAgc/tests/ContextStateSize.cpp b/core/libs/prx/libSceAgc/tests/ContextStateSize.cpp index 3de0a5eda6..6d2e583e47 100644 --- a/core/libs/prx/libSceAgc/tests/ContextStateSize.cpp +++ b/core/libs/prx/libSceAgc/tests/ContextStateSize.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/DcbState/include/ContextState.hpp" #include "SceTypes.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "prx/libc/include/Shutdown.hpp" @@ -7,10 +8,6 @@ #include #include -extern "C" std::uint64_t APS5_VABI sceAgcDcbContextStateOpGetSize(std::uint32_t operation); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbContextStateOp(CommandBuffer* buf, std::uint32_t operation); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbContextStateOp_0100(CommandBuffer* buf, std::uint32_t operation); - namespace { void check(bool condition, const char* message) { diff --git a/core/libs/prx/libSceAgc/tests/DmaData.cpp b/core/libs/prx/libSceAgc/tests/DmaData.cpp index 77c80988f2..880035d394 100644 --- a/core/libs/prx/libSceAgc/tests/DmaData.cpp +++ b/core/libs/prx/libSceAgc/tests/DmaData.cpp @@ -1,3 +1,5 @@ +#include "prx/libSceAgc/DcbFlow/include/Memory.hpp" +#include "prx/libSceAgc/Acb/include/Memory.hpp" #include "prx/libSceAgc/Command/include/Packet.hpp" #include @@ -7,13 +9,6 @@ #include #include -extern "C" { -std::uint32_t* APS5_VABI sceAgcAcbDmaData(CommandBuffer*, std::uint8_t, std::uint8_t, std::uint64_t, std::uint8_t, std::uint8_t, std::uint64_t, std::uint32_t, std::uint8_t, std::uint8_t); -std::uint32_t APS5_VABI sceAgcAcbDmaDataGetSize(); -std::uint32_t* APS5_VABI sceAgcDcbDmaData(CommandBuffer*, std::uint8_t, std::uint8_t, std::uint8_t, std::uint64_t, std::uint8_t, std::uint8_t, std::uint64_t, std::uint32_t, std::uint8_t, std::uint8_t, std::uint8_t); -std::uint32_t APS5_VABI sceAgcDcbDmaDataGetSize(); -} - namespace { constexpr std::uint32_t Sentinel = 0xabcdef01u; diff --git a/core/libs/prx/libSceAgc/tests/EndOfShaderActionSize.cpp b/core/libs/prx/libSceAgc/tests/EndOfShaderActionSize.cpp index cf78ada4a3..5421cb5733 100644 --- a/core/libs/prx/libSceAgc/tests/EndOfShaderActionSize.cpp +++ b/core/libs/prx/libSceAgc/tests/EndOfShaderActionSize.cpp @@ -1,3 +1,8 @@ +#include "prx/libSceAgc/DcbState/include/ContextState.hpp" +#include "prx/libSceAgc/DcbFlow/include/Memory.hpp" +#include "prx/libSceAgc/DcbFlow/include/Control.hpp" +#include "prx/libSceAgc/Cb/include/Sync.hpp" +#include "prx/libSceAgc/Acb/include/Sync.hpp" #include "prx/libSceAgc/Command/include/Packet.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "prx/libc/include/Shutdown.hpp" @@ -8,15 +13,6 @@ #include #include -extern "C" { -std::uint32_t APS5_VABI sceAgcDcbQueueEndOfShaderActionGetSize(); -std::uint32_t APS5_VABI sceAgcAcbQueueEndOfShaderActionGetSize(); -std::uint32_t* APS5_VABI sceAgcCbReleaseMem(CommandBuffer*, std::uint8_t, std::uint16_t, std::uint8_t, std::uint8_t, const volatile Label*, std::uint8_t, std::uint64_t, std::uint16_t, std::uint16_t, std::uint8_t, std::uint32_t); -std::uint32_t APS5_VABI sceAgcDcbAtomicGdsGetSize(); -std::uint32_t* APS5_VABI sceAgcDcbAtomicGds_0900(CommandBuffer*, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t, std::uint16_t, std::uint16_t, std::uint32_t, std::uint32_t, std::uint64_t, std::uint64_t); -std::uint32_t* APS5_VABI sceAgcDcbAtomicGds(CommandBuffer*, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t, std::uint16_t, std::uint16_t, std::uint32_t, std::uint32_t, std::uint64_t, std::uint64_t); -} - namespace { void check(bool condition, const char* message) { diff --git a/core/libs/prx/libSceAgc/tests/GsOversubscription.cpp b/core/libs/prx/libSceAgc/tests/GsOversubscription.cpp index 7c312c879d..3666a2d338 100644 --- a/core/libs/prx/libSceAgc/tests/GsOversubscription.cpp +++ b/core/libs/prx/libSceAgc/tests/GsOversubscription.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/Shader/include/GsOversubscription.hpp" #include "SceShaders.hpp" #include "prx/libc/include/Shutdown.hpp" #include "prx/libc/include/general/VabiMacros.hpp" @@ -11,8 +12,6 @@ #include #include -extern "C" int APS5_VABI sceAgcGetGsOversubscription(ShaderRegister* regs, const Shader* gs, std::uint32_t budget, float factor); - namespace { using Registers = std::array; diff --git a/core/libs/prx/libSceAgc/tests/GsPrimPayload.cpp b/core/libs/prx/libSceAgc/tests/GsPrimPayload.cpp index 60f3d29b77..396311e9ee 100644 --- a/core/libs/prx/libSceAgc/tests/GsPrimPayload.cpp +++ b/core/libs/prx/libSceAgc/tests/GsPrimPayload.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/Shader/include/GsPrimPayload.hpp" #include "SceShaders.hpp" #include "prx/libc/include/Shutdown.hpp" #include "prx/libc/include/general/VabiMacros.hpp" @@ -9,8 +10,6 @@ #include #include -extern "C" int APS5_VABI sceAgcGetGsPrimPayload(std::uint32_t* payload, const Shader* gs); - namespace { constexpr std::uint32_t Sentinel = 0xccccccccu; diff --git a/core/libs/prx/libSceAgc/tests/InstrumentationQuerySize.cpp b/core/libs/prx/libSceAgc/tests/InstrumentationQuerySize.cpp index 7f75026d39..66e572d0b6 100644 --- a/core/libs/prx/libSceAgc/tests/InstrumentationQuerySize.cpp +++ b/core/libs/prx/libSceAgc/tests/InstrumentationQuerySize.cpp @@ -1,3 +1,5 @@ +#include "prx/libSceAgc/Misc/include/Debug.hpp" +#include "prx/libSceAgc/DcbDraw/include/Stats.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "prx/libc/include/Shutdown.hpp" @@ -5,13 +7,6 @@ #include #include -extern "C" { -int APS5_VABI sceAgcSetShaderInstrumentation(std::uint32_t); -std::uint32_t APS5_VABI sceAgcGetShaderInstrumentation(); -std::uint32_t APS5_VABI sceAgcDcbBeginOcclusionQueryGetSize(std::int32_t); -std::uint32_t APS5_VABI sceAgcDcbEndOcclusionQueryGetSize(); -} - namespace { void check(bool condition, const char* message) { diff --git a/core/libs/prx/libSceAgc/tests/InterpolantMapping.cpp b/core/libs/prx/libSceAgc/tests/InterpolantMapping.cpp index 1b38f7df08..2fbd372623 100644 --- a/core/libs/prx/libSceAgc/tests/InterpolantMapping.cpp +++ b/core/libs/prx/libSceAgc/tests/InterpolantMapping.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/Shader/include/InterpolantMapping.hpp" #include "SceShaders.hpp" #include "prx/libc/include/Shutdown.hpp" #include "prx/libc/include/general/VabiMacros.hpp" @@ -11,12 +12,6 @@ #include #include -extern "C" int APS5_VABI sceAgcCreateInterpolantMapping_0100(ShaderRegister* regs, const Shader* gs, const Shader* ps); -extern "C" int APS5_VABI sceAgcCreateInterpolantMapping_10000(ShaderRegister* regs, const Shader* gs, const Shader* ps); -extern "C" int APS5_VABI sceAgcUpdateInterpolantMapping_10000(ShaderRegister* regs, const Shader* gs, const Shader* ps); -extern "C" int APS5_VABI sceAgcCreateInterpolantMapping_nid_postfix(ShaderRegister* regs, const Shader* gs, const Shader* ps); -extern "C" int APS5_VABI sceAgcUpdateInterpolantMapping_nid_postfix(ShaderRegister* regs, const Shader* gs, const Shader* ps); - namespace { using Registers = std::array; diff --git a/core/libs/prx/libSceAgc/tests/PacketInfo.cpp b/core/libs/prx/libSceAgc/tests/PacketInfo.cpp index 5e95906b5a..9054c828ba 100644 --- a/core/libs/prx/libSceAgc/tests/PacketInfo.cpp +++ b/core/libs/prx/libSceAgc/tests/PacketInfo.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/Misc/include/PacketInfo.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "prx/libc/include/Shutdown.hpp" @@ -7,8 +8,6 @@ #include #include -extern "C" std::uint32_t APS5_VABI sceAgcGetPacketSize(std::uint32_t* packet); - namespace { void check(bool condition, const char* message) { diff --git a/core/libs/prx/libSceAgc/tests/PayloadRange.cpp b/core/libs/prx/libSceAgc/tests/PayloadRange.cpp index f920eb0384..d070135e43 100644 --- a/core/libs/prx/libSceAgc/tests/PayloadRange.cpp +++ b/core/libs/prx/libSceAgc/tests/PayloadRange.cpp @@ -8,10 +8,6 @@ #include #include -extern "C" int APS5_VABI sceAgcGetDataPacketPayloadRange(SceAgcMemoryRange* range, std::uint32_t* cmd, int type); -extern "C" int APS5_VABI sceAgcGetDataPacketPayloadAddress(std::uint32_t** addr, std::uint32_t* cmd, int type); -extern "C" int APS5_VABI sceAgcGetDataPacketPayloadAddress_0090(std::uint32_t** addr, std::uint32_t* cmd, int type); - namespace { void check(bool condition, const char* message) { diff --git a/core/libs/prx/libSceAgc/tests/Platform.cpp b/core/libs/prx/libSceAgc/tests/Platform.cpp index daa0634cf3..5ed2b2aea1 100644 --- a/core/libs/prx/libSceAgc/tests/Platform.cpp +++ b/core/libs/prx/libSceAgc/tests/Platform.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/Misc/include/Platform.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "prx/libc/include/Shutdown.hpp" @@ -5,8 +6,6 @@ #include #include -extern "C" int APS5_VABI sceAgcGetIsTrinityMode(bool* isTrinityMode); - namespace { void check(bool condition, const char* message) { diff --git a/core/libs/prx/libSceAgc/tests/Predication.cpp b/core/libs/prx/libSceAgc/tests/Predication.cpp index 32a6619ed5..7d9511f10f 100644 --- a/core/libs/prx/libSceAgc/tests/Predication.cpp +++ b/core/libs/prx/libSceAgc/tests/Predication.cpp @@ -1,3 +1,6 @@ +#include "prx/libSceAgc/Predication/include/Predication.hpp" +#include "prx/libSceAgc/DcbState/include/Predication.hpp" +#include "prx/libSceAgc/DcbDraw/include/IndexBuffer.hpp" #include "prx/libSceAgc/Command/include/Packet.hpp" #include @@ -5,17 +8,6 @@ #include #include -extern "C" { -std::uint32_t* APS5_VABI sceAgcDcbSetPredication(CommandBuffer*, std::uint8_t, std::uint8_t, std::uint8_t, const volatile void*, std::uint32_t); -std::uint32_t APS5_VABI sceAgcDcbSetZPassPredicationEnableGetSize(); -std::uint32_t APS5_VABI sceAgcDcbSetPredicationDisableGetSize(); -std::uint32_t APS5_VABI sceAgcDcbSetBoolPredicationEnableGetSize(); -std::uint32_t* APS5_VABI sceAgcDcbSetIndexCount(CommandBuffer*, std::uint32_t); -std::uint32_t* APS5_VABI sceAgcDcbSetIndexBuffer(CommandBuffer*, std::uint64_t); -int APS5_VABI sceAgcSetPacketPredication(std::uint32_t*, std::uint32_t); -int APS5_VABI sceAgcSetRangePredication(std::uint32_t*, const volatile std::uint32_t*, std::uint32_t); -} - namespace { void check(bool condition, const char* message) { diff --git a/core/libs/prx/libSceAgc/tests/PrimeUtcl2.cpp b/core/libs/prx/libSceAgc/tests/PrimeUtcl2.cpp index b1e702d246..4e7791491c 100644 --- a/core/libs/prx/libSceAgc/tests/PrimeUtcl2.cpp +++ b/core/libs/prx/libSceAgc/tests/PrimeUtcl2.cpp @@ -1,3 +1,5 @@ +#include "prx/libSceAgc/DcbState/include/Display.hpp" +#include "prx/libSceAgc/Acb/include/Memory.hpp" #include "prx/libSceAgc/Command/include/Packet.hpp" #include @@ -7,13 +9,6 @@ #include #include -extern "C" { -std::uint32_t* APS5_VABI sceAgcAcbPrimeUtcl2(CommandBuffer*, const volatile void*, std::uint32_t); -std::uint32_t APS5_VABI sceAgcAcbPrimeUtcl2GetSize(); -std::uint32_t* APS5_VABI sceAgcDcbPrimeUtcl2(CommandBuffer*, const volatile void*, std::uint32_t); -std::uint32_t APS5_VABI sceAgcDcbPrimeUtcl2GetSize(); -} - namespace { constexpr std::uint32_t Sentinel = 0xabcdef01u; diff --git a/core/libs/prx/libSceAgc/tests/RegisterCommands.cpp b/core/libs/prx/libSceAgc/tests/RegisterCommands.cpp index 5e6be0c709..985ed914f6 100644 --- a/core/libs/prx/libSceAgc/tests/RegisterCommands.cpp +++ b/core/libs/prx/libSceAgc/tests/RegisterCommands.cpp @@ -1,3 +1,6 @@ +#include "prx/libSceAgc/Patch/include/IndirectRegisters.hpp" +#include "prx/libSceAgc/DcbState/include/Registers.hpp" +#include "prx/libSceAgc/Cb/include/Registers.hpp" #include "prx/libSceAgc/Command/include/Packet.hpp" #include @@ -5,35 +8,6 @@ #include #include -extern "C" { -std::uint32_t* APS5_VABI sceAgcDcbSetCfRegisterDirect(CommandBuffer*, ShaderRegister); -std::uint32_t* APS5_VABI sceAgcDcbSetCfRegisterRangeDirect(CommandBuffer*, std::uint32_t, const std::uint32_t*, std::uint32_t); -std::uint32_t* APS5_VABI sceAgcCbSetShRegisterRangeDirect(CommandBuffer*, std::uint32_t, const std::uint32_t*, std::uint32_t); -std::uint32_t* APS5_VABI sceAgcCbSetUcRegisterRangeDirect(CommandBuffer*, std::uint32_t, const std::uint32_t*, std::uint32_t); -std::uint32_t* APS5_VABI sceAgcDcbSetCxRegisterDirect(CommandBuffer*, ShaderRegister); -std::uint32_t* APS5_VABI sceAgcDcbSetShRegisterDirect(CommandBuffer*, ShaderRegister); -std::uint32_t* APS5_VABI sceAgcDcbSetUcRegisterDirect(CommandBuffer*, ShaderRegister); -std::uint32_t APS5_VABI sceAgcDcbSetCxRegisterDirectGetSize(); -std::uint32_t APS5_VABI sceAgcDcbSetShRegisterDirectGetSize(); -std::uint32_t APS5_VABI sceAgcDcbSetUcRegisterDirectGetSize(); -std::uint32_t* APS5_VABI sceAgcDcbSetCxRegistersIndirect(CommandBuffer*, const volatile ShaderRegister*, std::uint32_t); -std::uint32_t* APS5_VABI sceAgcDcbSetShRegistersIndirect(CommandBuffer*, const volatile ShaderRegister*, std::uint32_t); -std::uint32_t* APS5_VABI sceAgcDcbSetUcRegistersIndirect(CommandBuffer*, const volatile ShaderRegister*, std::uint32_t); -std::uint32_t APS5_VABI sceAgcDcbSetCxRegistersIndirectGetSize(std::uint32_t); -std::uint32_t APS5_VABI sceAgcDcbSetShRegistersIndirectGetSize(std::uint32_t); -std::uint32_t APS5_VABI sceAgcDcbSetUcRegistersIndirectGetSize(std::uint32_t); -int APS5_VABI sceAgcSetCxRegIndirectPatchSetNumRegisters(std::uint32_t*, std::uint32_t); -int APS5_VABI sceAgcSetShRegIndirectPatchSetNumRegisters(std::uint32_t*, std::uint32_t); -int APS5_VABI sceAgcSetUcRegIndirectPatchSetNumRegisters(std::uint32_t*, std::uint32_t); -int APS5_VABI sceAgcSetCxRegIndirectPatchSetAddress(std::uint32_t*, const volatile ShaderRegister*); -int APS5_VABI sceAgcSetShRegIndirectPatchSetAddress(std::uint32_t*, const volatile ShaderRegister*); -int APS5_VABI sceAgcSetUcRegIndirectPatchSetAddress(std::uint32_t*, const volatile ShaderRegister*); -std::uint32_t* APS5_VABI sceAgcCbSetShRegistersDirect(CommandBuffer*, const volatile ShaderRegister*, std::uint32_t); -std::uint32_t* APS5_VABI sceAgcCbSetUcRegistersDirect(CommandBuffer*, const volatile ShaderRegister*, std::uint32_t); -std::uint32_t APS5_VABI sceAgcCbSetShRegistersDirectGetSize(std::uint32_t); -std::uint32_t APS5_VABI sceAgcCbSetUcRegistersDirectGetSize(std::uint32_t); -} - namespace { void check(bool condition, const char* message) { diff --git a/core/libs/prx/libSceAgc/tests/Semaphore.cpp b/core/libs/prx/libSceAgc/tests/Semaphore.cpp index 4ab4f08a83..5fdf346308 100644 --- a/core/libs/prx/libSceAgc/tests/Semaphore.cpp +++ b/core/libs/prx/libSceAgc/tests/Semaphore.cpp @@ -1,3 +1,7 @@ +#include "prx/libSceAgc/Misc/include/Semaphore.hpp" +#include "prx/libSceAgc/DcbFlow/include/Sync.hpp" +#include "prx/libSceAgc/Cb/include/Sync.hpp" +#include "prx/libSceAgc/Acb/include/Sync.hpp" #include "prx/libSceAgc/Command/include/Packet.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "prx/libc/include/Shutdown.hpp" @@ -12,13 +16,6 @@ #include #include -extern "C" int APS5_VABI sceAgcSetAmmSemaphoreMemory(void* memory, std::uint64_t sizeInBytes); -extern "C" int APS5_VABI sceAgcSetSemaphoreMemory(void* memory, std::uint64_t sizeInBytes); -extern "C" int APS5_VABI sceAgcGetSemaphoreLabel(std::uint32_t index, void** label); -extern "C" std::uint32_t* APS5_VABI sceAgcCbMemSemaphore(CommandBuffer* buf, const volatile void* address, std::uint32_t operation, std::uint32_t modifier, std::uint32_t value); -extern "C" std::uint32_t* APS5_VABI sceAgcAcbMemSemaphore(CommandBuffer* buf, const volatile void* address, std::uint8_t waitForMailbox, std::uint8_t signalType, std::uint8_t operation); -extern "C" std::uint32_t* APS5_VABI sceAgcDcbMemSemaphore(CommandBuffer* buf, const volatile void* address, std::uint8_t waitForMailbox, std::uint8_t signalType, std::uint8_t operation); - namespace { constexpr std::uint64_t blockBytes = 0x4000u; diff --git a/core/libs/prx/libSceAgc/tests/ShaderHelpers.cpp b/core/libs/prx/libSceAgc/tests/ShaderHelpers.cpp index 46f7c3c8e8..6c842de199 100644 --- a/core/libs/prx/libSceAgc/tests/ShaderHelpers.cpp +++ b/core/libs/prx/libSceAgc/tests/ShaderHelpers.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/Shader/include/LinkShaders.hpp" #include "SceShaders.hpp" #include "prx/libSceAgc/Shader/include/PrimState.hpp" #include "prx/libSceAgc/Shader/include/InterpolantMapping.hpp" @@ -11,10 +12,6 @@ #include #include -extern "C" int APS5_VABI sceAgcLinkShaders(ShaderRegister*, ShaderRegister*, const void*, const Shader*, const Shader*, std::uint32_t); -extern "C" int APS5_VABI sceAgcCreatePrimState(ShaderRegister*, ShaderRegister*, const Shader*, const Shader*, std::uint32_t); -extern "C" int APS5_VABI sceAgcCreateInterpolantMapping_0100(ShaderRegister*, const Shader*, const Shader*); - namespace { std::array preparedContext; std::array preparedPrimitive; diff --git a/core/libs/prx/libSceAgc/tests/WriteDataPatch.cpp b/core/libs/prx/libSceAgc/tests/WriteDataPatch.cpp index 5f543c8707..a8307962a4 100644 --- a/core/libs/prx/libSceAgc/tests/WriteDataPatch.cpp +++ b/core/libs/prx/libSceAgc/tests/WriteDataPatch.cpp @@ -1,3 +1,6 @@ +#include "prx/libSceAgc/Patch/include/WaitRegMem.hpp" +#include "prx/libSceAgc/DcbFlow/include/Memory.hpp" +#include "prx/libSceAgc/Acb/include/Memory.hpp" #include "prx/libSceAgc/Command/include/Packet.hpp" #include @@ -7,17 +10,6 @@ #include #include -extern "C" { -std::uint32_t* APS5_VABI sceAgcDcbWriteData(CommandBuffer*, std::uint8_t, std::uint8_t, std::uint64_t, const void*, std::uint32_t, std::uint8_t, std::uint8_t); -std::uint32_t* APS5_VABI sceAgcAcbWriteData(CommandBuffer*, std::uint8_t, std::uint8_t, std::uint64_t, const void*, std::uint32_t, std::uint8_t, std::uint8_t); -int APS5_VABI sceAgcWriteDataPatchSetAddressOrOffset(std::uint32_t*, std::uint64_t); -int APS5_VABI sceAgcAsyncWriteDataPatchSetAddressOrOffset(std::uint32_t*, std::uint64_t); -int APS5_VABI sceAgcWriteDataPatchSetDst(std::uint32_t*, std::uint8_t); -int APS5_VABI sceAgcAsyncWriteDataPatchSetDst(std::uint32_t*, std::uint8_t); -int APS5_VABI sceAgcWriteDataPatchSetCachePolicy(std::uint32_t*, std::uint8_t); -int APS5_VABI sceAgcAsyncWriteDataPatchSetCachePolicy(std::uint32_t*, std::uint8_t); -} - namespace { constexpr std::array Payload{0x11111111u, 0x22222222u, 0x33333333u}; diff --git a/core/libs/prx/libSceAgcDriver/Execution/src/FrameRecorder.cpp b/core/libs/prx/libSceAgcDriver/Execution/src/FrameRecorder.cpp index 0b64a184c8..8d34708b90 100644 --- a/core/libs/prx/libSceAgcDriver/Execution/src/FrameRecorder.cpp +++ b/core/libs/prx/libSceAgcDriver/Execution/src/FrameRecorder.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgcDriver/State/include/Configuration.hpp" #include "prx/libSceAgcDriver/Execution/include/FrameRecorder.hpp" #include "prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp" #include "prx/libSceAgcDriver/Execution/include/GuestMemory.hpp" @@ -25,8 +26,6 @@ #include #endif -extern "C" int APS5_VABI sceAgcDriverGetTFRing(uintptr_t* base, uint32_t* size); - namespace AgcDriver { namespace { diff --git a/core/libs/prx/libSceAgcDriver/Export.cpp b/core/libs/prx/libSceAgcDriver/Export.cpp index 18cd1da5d8..fd98ebbdb5 100644 --- a/core/libs/prx/libSceAgcDriver/Export.cpp +++ b/core/libs/prx/libSceAgcDriver/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgcDriver/include/AgcDriver.hpp" #include #include #include "SceTypes.hpp" diff --git a/core/libs/prx/libSceAgcDriver/Resource/include/Lifecycle.hpp b/core/libs/prx/libSceAgcDriver/Resource/include/Lifecycle.hpp index d2485e8727..8d49017a87 100644 --- a/core/libs/prx/libSceAgcDriver/Resource/include/Lifecycle.hpp +++ b/core/libs/prx/libSceAgcDriver/Resource/include/Lifecycle.hpp @@ -1,4 +1,13 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGCDRIVER_RESOURCE_INCLUDE_LIFECYCLE_HPP #define CORE_LIBS_PRX_LIBSCEAGCDRIVER_RESOURCE_INCLUDE_LIFECYCLE_HPP +#include "SceTypes.hpp" + +extern "C" { + +uint32_t APS5_VABI sceAgcDriverInitResourceRegistration(void); +uint32_t APS5_VABI sceAgcDriverQueryResourceRegistrationUserMemoryRequirements(uint64_t* sizeInBytes); + +} + #endif diff --git a/core/libs/prx/libSceAgcDriver/Resource/include/Registration.hpp b/core/libs/prx/libSceAgcDriver/Resource/include/Registration.hpp index d30f27839a..6cbdcce863 100644 --- a/core/libs/prx/libSceAgcDriver/Resource/include/Registration.hpp +++ b/core/libs/prx/libSceAgcDriver/Resource/include/Registration.hpp @@ -5,4 +5,33 @@ extern "C" bool AgcDriverWorkloadStreamRegistered_nid_postfix(std::uint32_t streamId); +#include "SceTypes.hpp" + +extern "C" { + +int APS5_VABI sceAgcDriverRegisterOwner(uint32_t* ownerHandle, const char* name); +int APS5_VABI sceAgcDriverRegisterResource(uint32_t* resourceHandle, uint32_t ownerHandle, const void* memory, size_t size, const char* name, uint32_t type, uint64_t userData); +int APS5_VABI sceAgcDriverRegisterMultipleResources(uint32_t* resourceHandle, uint32_t ownerHandle, const void* resources, uint32_t resourceCount); +int APS5_VABI sceAgcDriverRegisterWorkloadStream(uint32_t streamId, const void* stream); +int APS5_VABI sceAgcDriverUnregisterOwnerAndResources(uint32_t ownerHandle); +int APS5_VABI sceAgcDriverUnregisterResource(uint32_t resourceHandle); +int APS5_VABI sceAgcDriverRegisterGdsResource(uint32_t* resourceHandle, uint32_t ownerHandle, uint32_t gdsOffset, uint32_t gdsSize, const char* name, uint32_t type, uint64_t userData); +int APS5_VABI sceAgcDriverUnregisterAllResourcesForOwner(uint32_t ownerHandle); +int APS5_VABI sceAgcDriverUnregisterWorkloadStream(uint32_t streamId); +int APS5_VABI sceAgcDriverGetDefaultOwner(uint32_t* ownerHandle); +int APS5_VABI sceAgcDriverGetResourceRegistrationMaxNameLength(uint32_t* maxLength); +int APS5_VABI sceAgcDriverGetOwnerName(uint32_t ownerHandle, const char** name); +int APS5_VABI sceAgcDriverGetResourceName(uint32_t resourceHandle, const char** name); +int APS5_VABI sceAgcDriverGetResourceType(uint32_t resourceHandle, uint32_t* type); +int APS5_VABI sceAgcDriverGetResourceUserData(uint32_t resourceHandle, uint64_t* userData); +int APS5_VABI sceAgcDriverSetResourceUserData(uint32_t resourceHandle, uint64_t userData); +int APS5_VABI sceAgcDriverGetResourceBaseAddressAndSizeInBytes(uint32_t resourceHandle, void** memory, size_t* size); +int APS5_VABI sceAgcDriverGetResourceShaderGuid(uint32_t resourceHandle, void* guid); +int APS5_VABI sceAgcDriverFindResourcesPublic(const void* callback, void* userData); +int APS5_VABI sceAgcDriverRegisterOwnerForSystem(); +int APS5_VABI sceAgcDriverInitResourceRegistrationInterface(); +int APS5_VABI sceAgcDriverSetResourceRegistrationInfo(); + +} + #endif diff --git a/core/libs/prx/libSceAgcDriver/State/include/Configuration.hpp b/core/libs/prx/libSceAgcDriver/State/include/Configuration.hpp index aadd076ce7..54c8fc2cca 100644 --- a/core/libs/prx/libSceAgcDriver/State/include/Configuration.hpp +++ b/core/libs/prx/libSceAgcDriver/State/include/Configuration.hpp @@ -1,4 +1,14 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGCDRIVER_STATE_INCLUDE_CONFIGURATION_HPP #define CORE_LIBS_PRX_LIBSCEAGCDRIVER_STATE_INCLUDE_CONFIGURATION_HPP +#include "SceTypes.hpp" + +extern "C" { + +int APS5_VABI sceAgcDriverSetHsOffchipParam(uint64_t value0, uint64_t value1, uint64_t value2); +int APS5_VABI sceAgcDriverSetTFRing(const volatile void* base, uint32_t size); +int APS5_VABI sceAgcDriverGetTFRing(uintptr_t* base, uint32_t* size); + +} + #endif diff --git a/core/libs/prx/libSceAgcDriver/State/include/Status.hpp b/core/libs/prx/libSceAgcDriver/State/include/Status.hpp index d7184e323f..822d5016ab 100644 --- a/core/libs/prx/libSceAgcDriver/State/include/Status.hpp +++ b/core/libs/prx/libSceAgcDriver/State/include/Status.hpp @@ -1,4 +1,17 @@ #ifndef CORE_LIBS_PRX_LIBSCEAGCDRIVER_STATE_INCLUDE_STATUS_HPP #define CORE_LIBS_PRX_LIBSCEAGCDRIVER_STATE_INCLUDE_STATUS_HPP +#include "SceTypes.hpp" + +extern "C" { + +bool APS5_VABI sceAgcDriverIsCaptureInProgress(void); +bool APS5_VABI sceAgcDriverIsTraceInProgress(void); +bool APS5_VABI sceAgcDriverIsSubmitValidationEnabled(void); +int APS5_VABI sceAgcDriverRequestCaptureStart(const char* path); +int APS5_VABI sceAgcDriverRequestCaptureStop(); +int APS5_VABI sceAgcDriverTriggerCapture(); + +} + #endif diff --git a/core/libs/prx/libSceAgcDriver/Submit/include/Acb.hpp b/core/libs/prx/libSceAgcDriver/Submit/include/Acb.hpp index d6d7244c58..d39b6ce6e9 100644 --- a/core/libs/prx/libSceAgcDriver/Submit/include/Acb.hpp +++ b/core/libs/prx/libSceAgcDriver/Submit/include/Acb.hpp @@ -4,6 +4,6 @@ #include "SceTypes.hpp" extern "C" int APS5_VABI sceAgcDriverSubmitAcb(std::uint32_t queue, const Packet* packet); -extern "C" int APS5_VABI sceAgcDriverSubmitMultiAcbs(std::uint32_t queue, std::uint32_t* const* acbs, const std::uint32_t* sizes_in_dwords, std::uint32_t count); +extern "C" int APS5_VABI sceAgcDriverSubmitMultiAcbs(std::uint32_t queue, std::uint32_t* const* acbs, const std::uint32_t* sizesInDwords, std::uint32_t count); #endif diff --git a/core/libs/prx/libSceAgcDriver/Submit/include/CommandBuffer.hpp b/core/libs/prx/libSceAgcDriver/Submit/include/CommandBuffer.hpp index 52fb4cb31d..bf355fbe65 100644 --- a/core/libs/prx/libSceAgcDriver/Submit/include/CommandBuffer.hpp +++ b/core/libs/prx/libSceAgcDriver/Submit/include/CommandBuffer.hpp @@ -4,12 +4,10 @@ #include "SceTypes.hpp" #include -struct Packet; - extern "C" { -int APS5_VABI sceAgcDriverSubmitCommandBuffer(void* queue_context, const Packet* packet); -int APS5_VABI sceAgcDriverSubmitMultiCommandBuffers(void* queue_context, uint32_t* const* command_buffers, const uint32_t* sizes_in_dwords, uint32_t count); +int APS5_VABI sceAgcDriverSubmitCommandBuffer(void* queueContext, const Packet* packet); +int APS5_VABI sceAgcDriverSubmitMultiCommandBuffers(void* queueContext, uint32_t* const* commandBuffers, const uint32_t* sizesInDwords, uint32_t count); } diff --git a/core/libs/prx/libSceAgcDriver/Submit/include/Dcb.hpp b/core/libs/prx/libSceAgcDriver/Submit/include/Dcb.hpp index 9e8fe9fdf7..78cfda269b 100644 --- a/core/libs/prx/libSceAgcDriver/Submit/include/Dcb.hpp +++ b/core/libs/prx/libSceAgcDriver/Submit/include/Dcb.hpp @@ -18,4 +18,15 @@ extern "C" int APS5_VABI sceAgcDriverAgrSubmitDcb(const Packet* packet); extern "C" int APS5_VABI sceAgcDriverSubmitMultiDcbs(std::uint32_t* const* dcbGpuAddrs, const std::uint32_t* dcbSizesInDwords, std::uint32_t count); extern "C" int APS5_VABI sceAgcDriverAgrSubmitMultiDcbs(std::uint32_t* const* dcbGpuAddrs, const std::uint32_t* dcbSizesInDwords, std::uint32_t count); +extern "C" { + +std::uint32_t APS5_VABI sceAgcDriverGetSetWorkloadsActivePacketSize(); +std::uint32_t APS5_VABI sceAgcDriverGetSetWorkloadCompletePacketSize(); +std::uint32_t APS5_VABI sceAgcDriverGetSetWorkloadStreamInactivePacketSize(); +std::uint32_t APS5_VABI sceAgcDriverNopDataGetPacketSize(std::uint32_t bytes); +std::uint32_t APS5_VABI sceAgcDriverUserDataGetPacketSize(std::uint32_t bytes); +std::uint32_t APS5_VABI sceAgcDriverWaitUntilSafeForRendering(std::uint32_t** command, std::uint32_t capacity, std::uint32_t mode, std::uint32_t handle, int index); + +} + #endif diff --git a/core/libs/prx/libSceAgcDriver/Unimplemented.cpp b/core/libs/prx/libSceAgcDriver/Unimplemented.cpp index dd330964bc..f361aacbe8 100644 --- a/core/libs/prx/libSceAgcDriver/Unimplemented.cpp +++ b/core/libs/prx/libSceAgcDriver/Unimplemented.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgcDriver/include/AgcDriver.hpp" #include #include #include @@ -68,7 +69,6 @@ int APS5_VABI sceAgcDriverNopDataWritePacket(void* destination, uint32_t address return data == nullptr || bytes == 0 ? 2 : static_cast(totalBytes / 4); } - int APS5_VABI sceAgcDriverSetValidationDisabled() { return DEBUG_UNAVAILABLE; } diff --git a/core/libs/prx/libSceAgcDriver/include/AgcDriver.hpp b/core/libs/prx/libSceAgcDriver/include/AgcDriver.hpp new file mode 100644 index 0000000000..6c6e8fea9b --- /dev/null +++ b/core/libs/prx/libSceAgcDriver/include/AgcDriver.hpp @@ -0,0 +1,85 @@ +#pragma once + +#include "SceTypes.hpp" + +extern "C" { + +int APS5_VABI sceAgcDriverAcquireRazorACQ(void); +int APS5_VABI sceAgcDriverCreateQueue(void); +int APS5_VABI sceAgcDriverCwsrResumeAcq(void); +int APS5_VABI sceAgcDriverCwsrSuspendAcq(void); +int APS5_VABI sceAgcDriverDebugHardwareStatus(void); +int APS5_VABI sceAgcDriverDestroyQueue(void); +int APS5_VABI sceAgcDriverGetPaDebugInterfaceVersion(void); +int APS5_VABI sceAgcDriverGetRegShadowInfo(void); +int APS5_VABI sceAgcDriverGetRegShadowInfoAgr(void); +int APS5_VABI sceAgcDriverGetReservedDmemForAgc(void); +int APS5_VABI sceAgcDriverGetWorkloadStreamInfo(void); +int APS5_VABI sceAgcDriverIDHSSubmit(void); +int APS5_VABI sceAgcDriverModuleRegistration(void); +int APS5_VABI sceAgcDriverNotifyDefaultStates(void); +int APS5_VABI sceAgcDriverPassInfoDownward(void); +int APS5_VABI sceAgcDriverPatchClearState(void); +int APS5_VABI sceAgcDriverSetFlip(void); +int APS5_VABI sceAgcDriverSetHsOffchipParamDirect(void); +int APS5_VABI sceAgcDriverSetWorkloadComplete(void); +int APS5_VABI sceAgcDriverSetWorkloadsActive(void); +int APS5_VABI sceAgcDriverSetupAsyncGraphics(void); +int APS5_VABI sceAgcDriverSetupRegisterShadow(void); +int APS5_VABI sceAgcDriverSubmitMultiCommandBuffersDirect(void); +int APS5_VABI sceAgcDriverSubmitToHDRScopesACQ(void); +int APS5_VABI sceAgcDriverSubmitToRazorACQ(void); +int APS5_VABI sceAgcDriverSuspendPointSubmit(void); +int APS5_VABI sceAgcDriverSuspendPointSubmitDirect(void); +int APS5_VABI sceAgcDriverSysEnableSubmitDone45Exception(void); +int APS5_VABI sceAgcDriverSysGetClientNumber(void); +int APS5_VABI sceAgcDriverSysIsGameClosed(void); +int APS5_VABI sceAgcDriverTmpInitIdhs(void); +int APS5_VABI sceAgcDriverUserDataWritePacket(void); +int APS5_VABI sceAgcDriverUserDataWritePopMarker(void); +int APS5_VABI sceAgcDriverUserDataWritePushMarker(void); +int APS5_VABI sceAgcDriverUserDataWriteSetMarker(void); +int APS5_VABI sceAgcDriverGetShaderDebuggingStatus(); +int APS5_VABI sceAgcDriverRegisterDefaultOwner(uint32_t owner); +int APS5_VABI sceAgcDriverSetValidationErrorOutputFrequency(uint32_t frequency); +int APS5_VABI sceAgcDriverSetSubmitValidationMode(uint32_t mode); +int APS5_VABI sceAgcDriverGetSubmitValidationConfig(void* config); +int APS5_VABI sceAgcDriverGetSubmitValidationMode(uint32_t* mode); +int APS5_VABI sceAgcDriverSetSubmitValidationConfig(const void* config); +int APS5_VABI sceAgcDriverGetHsOffchipParam(uint16_t* first, uint16_t* second); +int APS5_VABI sceAgcDriverNopDataWritePacket(void* destination, uint32_t address, const void* data, uint32_t bytes); +int APS5_VABI sceAgcDriverSetValidationDisabled(); +int APS5_VABI sceAgcDriverGetCaptureConfig(); +int APS5_VABI sceAgcDriverSetCaptureConfig(); +int APS5_VABI sceAgcDriverGetGpuPrintfWorkArea(); +int APS5_VABI sceAgcDriverSetGpuPrintfEnabled(); +int APS5_VABI sceAgcDriverDbgReadRegister(); +int APS5_VABI sceAgcDriverDbgWriteRegister(); +int APS5_VABI sceAgcDriverGetGpuRefClks(); +int APS5_VABI sceAgcDriverIsSuspendPointInFlight(); +int APS5_VABI sceAgcDriverIsPaDebug(); +int APS5_VABI sceAgcDriverGetExceptionStatus(); +int APS5_VABI sceAgcDriverGetTraceInitiator(); +int APS5_VABI sceAgcDriverRegisterGpuResetCallbacks(); +int APS5_VABI sceAgcDriverUnregisterGpuResetCallbacks(); +int APS5_VABI sceAgdResetGpu(); +int APS5_VABI sceAgcDriverSysSubmitFlipHandleProxy(); +int APS5_VABI sceAgcDriverUserDataImmediateWrite(); +int APS5_VABI sceAgcDriverUserDataImmediateWritePacket(); +int APS5_VABI sceAgcDriverGetCoredumpMode(uint32_t* mode); +int APS5_VABI sceAgcDriverAllocateToolMemoryForGpuReset(uint64_t, uint64_t, uint64_t, void* range); +int APS5_VABI sceAgcDriverGetAllocatedToolMemoryForGpuReset(uint64_t, void* range); +int APS5_VABI sceAgcDriverAcquireHDRScopesACQ(); +void* APS5_VABI sceAgcDriverGetCoredumpAddress(); +int APS5_VABI sceAgcDriverHp3dLockEnd(); +int APS5_VABI sceAgcDriverHp3dLockStart(); +int APS5_VABI sceAgcDriverIsEsvmProcess(); +int APS5_VABI sceAgcDriverReleaseHDRScopesACQ(); +int APS5_VABI sceAgcDriverSetTargetRingForDiag(); +int APS5_VABI sceAgcDriverSetValueToSharedGds(); +int APS5_VABI sceAgcDriverSetWorkloadStreamInactive(); +int APS5_VABI sceAgcDriverSubmitReprojectionAcb(); +int APS5_VABI sceAgcDriverSuspendPointSubmitCdbg(); +int APS5_VABI sceAgcDriverSysGetGfxAppGpuResetStatus(); + +} diff --git a/core/libs/prx/libSceAgcDriver/libSceAgcDriver.hpp b/core/libs/prx/libSceAgcDriver/libSceAgcDriver.hpp new file mode 100644 index 0000000000..342610270a --- /dev/null +++ b/core/libs/prx/libSceAgcDriver/libSceAgcDriver.hpp @@ -0,0 +1,12 @@ +#pragma once + +#include "prx/libSceAgcDriver/Eq/include/Event.hpp" +#include "prx/libSceAgcDriver/Eq/include/Query.hpp" +#include "prx/libSceAgcDriver/include/AgcDriver.hpp" +#include "prx/libSceAgcDriver/Resource/include/Lifecycle.hpp" +#include "prx/libSceAgcDriver/Resource/include/Registration.hpp" +#include "prx/libSceAgcDriver/State/include/Configuration.hpp" +#include "prx/libSceAgcDriver/State/include/Status.hpp" +#include "prx/libSceAgcDriver/Submit/include/Acb.hpp" +#include "prx/libSceAgcDriver/Submit/include/CommandBuffer.hpp" +#include "prx/libSceAgcDriver/Submit/include/Dcb.hpp" diff --git a/core/libs/prx/libSceAgcDriver/tests/FrameReplay.cpp b/core/libs/prx/libSceAgcDriver/tests/FrameReplay.cpp index 56d6b1c40d..dc652cddfe 100644 --- a/core/libs/prx/libSceAgcDriver/tests/FrameReplay.cpp +++ b/core/libs/prx/libSceAgcDriver/tests/FrameReplay.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/DcbFlow/include/Memory.hpp" #include "prx/libSceAgcDriver/Execution/include/Driver.hpp" #include "prx/libSceAgcDriver/Execution/include/FrameCapture.hpp" #include "prx/libSceAgcDriver/Execution/include/VideoOutput.hpp" @@ -21,11 +22,6 @@ #include #endif -extern "C" { -std::uint32_t* APS5_VABI sceAgcDcbWriteData(CommandBuffer*, std::uint8_t, std::uint8_t, std::uint64_t, const void*, std::uint32_t, std::uint8_t, std::uint8_t); -std::uint32_t* APS5_VABI sceAgcDcbDmaData(CommandBuffer*, std::uint8_t, std::uint8_t, std::uint8_t, std::uint64_t, std::uint8_t, std::uint8_t, std::uint64_t, std::uint32_t, std::uint8_t, std::uint8_t, std::uint8_t); -} - namespace { using AgcDriver::FrameCallKind; diff --git a/core/libs/prx/libSceAgcDriver/tests/NopDataWritePacket.cpp b/core/libs/prx/libSceAgcDriver/tests/NopDataWritePacket.cpp index 587bc082bc..d3e4092bd2 100644 --- a/core/libs/prx/libSceAgcDriver/tests/NopDataWritePacket.cpp +++ b/core/libs/prx/libSceAgcDriver/tests/NopDataWritePacket.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgcDriver/include/AgcDriver.hpp" #include "SceTypes.hpp" #include #include @@ -5,8 +6,6 @@ #include #include -extern "C" int APS5_VABI sceAgcDriverNopDataWritePacket(void* destination, uint32_t address, const void* data, uint32_t bytes); - int main() { std::array storage; storage.fill(std::byte{0xaa}); diff --git a/core/libs/prx/libSceAgcDriver/tests/Pm4Replay.cpp b/core/libs/prx/libSceAgcDriver/tests/Pm4Replay.cpp index 8668696b41..7359bc4598 100644 --- a/core/libs/prx/libSceAgcDriver/tests/Pm4Replay.cpp +++ b/core/libs/prx/libSceAgcDriver/tests/Pm4Replay.cpp @@ -1,3 +1,10 @@ +#include "prx/libSceAgc/Patch/include/Rewind.hpp" +#include "prx/libSceAgc/DcbFlow/include/Sync.hpp" +#include "prx/libSceAgc/DcbFlow/include/Memory.hpp" +#include "prx/libSceAgc/Cb/include/Sync.hpp" +#include "prx/libSceAgc/Acb/include/Sync.hpp" +#include "prx/libSceAgc/Acb/include/Memory.hpp" +#include "prx/libSceAgc/Acb/include/Control.hpp" #include "../tools/Pm4Analysis.hpp" #include "prx/libSceAgcDriver/Execution/include/Driver.hpp" #include "prx/libSceAgcDriver/Execution/include/Driver/Synchronization/LabelStores.hpp" @@ -21,18 +28,6 @@ #include #include -extern "C" { -std::uint32_t* APS5_VABI sceAgcDcbWriteData(CommandBuffer*, std::uint8_t, std::uint8_t, std::uint64_t, const void*, std::uint32_t, std::uint8_t, std::uint8_t); -std::uint32_t* APS5_VABI sceAgcAcbWriteData(CommandBuffer*, std::uint8_t, std::uint8_t, std::uint64_t, const void*, std::uint32_t, std::uint8_t, std::uint8_t); -std::uint32_t* APS5_VABI sceAgcDcbWaitRegMem(CommandBuffer*, std::uint8_t, std::uint8_t, std::uint8_t, std::uint8_t, const volatile void*, std::uint64_t, std::uint64_t, std::uint32_t); -std::uint32_t* APS5_VABI sceAgcAcbWaitRegMem(CommandBuffer*, std::uint8_t, std::uint8_t, std::uint8_t, const volatile void*, std::uint64_t, std::uint64_t, std::uint32_t); -std::uint32_t* APS5_VABI sceAgcCbReleaseMem(CommandBuffer*, std::uint8_t, std::uint16_t, std::uint8_t, std::uint8_t, const volatile Label*, std::uint8_t, std::uint64_t, std::uint16_t, std::uint16_t, std::uint8_t, std::uint32_t); -std::uint32_t* APS5_VABI sceAgcDcbDmaData(CommandBuffer*, std::uint8_t, std::uint8_t, std::uint8_t, std::uint64_t, std::uint8_t, std::uint8_t, std::uint64_t, std::uint32_t, std::uint8_t, std::uint8_t, std::uint8_t); -std::uint32_t* APS5_VABI sceAgcDcbCondExec(CommandBuffer*, const volatile std::uint32_t*, std::uint32_t); -std::uint32_t* APS5_VABI sceAgcAcbRewind(CommandBuffer*, std::uint32_t); -int APS5_VABI sceAgcAsyncRewindPatchSetRewindState(std::uint32_t*, std::uint8_t); -} - namespace { using AgcDriver::CapturedSubmission; diff --git a/core/libs/prx/libSceAgcDriver/tests/TessellationFactorRing.cpp b/core/libs/prx/libSceAgcDriver/tests/TessellationFactorRing.cpp index f302a0d119..c6bbb71920 100644 --- a/core/libs/prx/libSceAgcDriver/tests/TessellationFactorRing.cpp +++ b/core/libs/prx/libSceAgcDriver/tests/TessellationFactorRing.cpp @@ -1,14 +1,10 @@ +#include "prx/libSceAgcDriver/State/include/Configuration.hpp" #include "SceTypes.hpp" #include #include #include #include -extern "C" { -int APS5_VABI sceAgcDriverSetTFRing(const volatile void* base, uint32_t size); -int APS5_VABI sceAgcDriverGetTFRing(uintptr_t* base, uint32_t* size); -} - namespace { constexpr uint32_t Canary = 0xa5a5a5a5; diff --git a/core/libs/prx/libSceAgcDriver/tests/UnsupportedDiagnostics.cpp b/core/libs/prx/libSceAgcDriver/tests/UnsupportedDiagnostics.cpp index db2f77f1ec..3217dc0eb1 100644 --- a/core/libs/prx/libSceAgcDriver/tests/UnsupportedDiagnostics.cpp +++ b/core/libs/prx/libSceAgcDriver/tests/UnsupportedDiagnostics.cpp @@ -1,8 +1,6 @@ +#include "prx/libSceAgcDriver/include/AgcDriver.hpp" #include "SceTypes.hpp" -extern "C" void* APS5_VABI sceAgcDriverGetCoredumpAddress(); -extern "C" int APS5_VABI sceAgcDriverSetTargetRingForDiag(); - int main() { if (sceAgcDriverGetCoredumpAddress() != nullptr) return 1; if (sceAgcDriverSetTargetRingForDiag() != static_cast(0x8A6D0001)) return 2; diff --git a/core/libs/prx/libSceAgcDriver/tests/execution/PreparationScopeSettle.cpp b/core/libs/prx/libSceAgcDriver/tests/execution/PreparationScopeSettle.cpp index b67059d036..ab06a87e40 100644 --- a/core/libs/prx/libSceAgcDriver/tests/execution/PreparationScopeSettle.cpp +++ b/core/libs/prx/libSceAgcDriver/tests/execution/PreparationScopeSettle.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgc/Shader/include/InterpolantMapping.hpp" #include "VulkanTestDevice.hpp" #include "SceShaders.hpp" #include "prx/libSceAgcDriver/Execution/include/Driver.hpp" @@ -15,8 +16,6 @@ #include #include -extern "C" int APS5_VABI sceAgcCreateInterpolantMapping_0100(ShaderRegister* regs, const Shader* gs, const Shader* ps); - namespace { void Require(bool condition, const char* message) { diff --git a/core/libs/prx/libSceAgcDriver/tools/FrameReplay.cpp b/core/libs/prx/libSceAgcDriver/tools/FrameReplay.cpp index ac6a434a0e..943f962b6e 100644 --- a/core/libs/prx/libSceAgcDriver/tools/FrameReplay.cpp +++ b/core/libs/prx/libSceAgcDriver/tools/FrameReplay.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAgcDriver/State/include/Configuration.hpp" #include "prx/libSceAgcDriver/Execution/include/DisplayBuffer.hpp" #include "prx/libSceAgcDriver/Execution/include/Driver.hpp" #include "prx/libSceAgcDriver/Execution/include/FrameCapture.hpp" @@ -35,8 +36,6 @@ #include #endif -extern "C" int APS5_VABI sceAgcDriverSetTFRing(const volatile void* base, std::uint32_t size); - namespace { using AgcDriver::FrameCall; diff --git a/core/libs/prx/libSceAudio3d/Export.cpp b/core/libs/prx/libSceAudio3d/Export.cpp index eed6da479e..0eddd25c80 100644 --- a/core/libs/prx/libSceAudio3d/Export.cpp +++ b/core/libs/prx/libSceAudio3d/Export.cpp @@ -1,3 +1,6 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" +#include "prx/libSceAudioOut/include/AudioOut.hpp" +#include "prx/libSceAudio3d/include/Audio3d.hpp" #include #include #include @@ -14,12 +17,6 @@ #include "SceTypes.hpp" #include "prx/libc/include/General.hpp" -extern "C" { -int APS5_VABI sceAudioOutOpen(int user_id, int type, int index, std::uint32_t len, std::uint32_t freq, std::uint32_t param); -int APS5_VABI sceAudioOutOutput(int handle, const void* ptr); -int APS5_VABI sceAudioOutClose(int handle); -} - namespace { constexpr int AUDIO3D_ERROR_INVALID_PORT = static_cast(0x80EA0002); @@ -472,19 +469,6 @@ int APS5_VABI sceAudio3dReportUnregisterHandler(void) { return 0; } -size_t APS5_VABI sceAudioOut2GetSpeakerArrayMemorySize(uint32_t num_speakers, uint8_t is_3d, uint8_t is_ambisonics); -int APS5_VABI sceAudioOut2SpeakerArrayCreate(AudioOut2SpeakerArrayHandle* handle, const void* vbap_params, const void* ambi_params); -int APS5_VABI sceAudioOut2SpeakerArrayDestroy(AudioOut2SpeakerArrayHandle handle); -int APS5_VABI sceAudioOut2GetSpeakerArrayCoefficients(AudioOut2SpeakerArrayHandle handle, AudioOut2Position pos, float spread, float* coefficients, uint32_t num_coefficients, uint8_t height_aware, float downmix_spread_radius); - -struct Audio3dSpeakerArrayParameters { - const AudioOut2Position* positions; - std::uint32_t numSpeakers; - std::uint8_t is3d; - void* memory; - std::size_t memorySize; -}; - static_assert(sizeof(Audio3dSpeakerArrayParameters) == 0x20); size_t APS5_VABI sceAudio3dGetSpeakerArrayMemorySize(uint32_t num_speakers, uint8_t is_3d) { diff --git a/core/libs/prx/libSceAudio3d/include/Audio3d.hpp b/core/libs/prx/libSceAudio3d/include/Audio3d.hpp new file mode 100644 index 0000000000..54c1e127b3 --- /dev/null +++ b/core/libs/prx/libSceAudio3d/include/Audio3d.hpp @@ -0,0 +1,48 @@ +#pragma once + +#include "SceTypes.hpp" + +struct Audio3dSpeakerArrayParameters { + const AudioOut2Position* positions; + std::uint32_t numSpeakers; + std::uint8_t is3d; + void* memory; + std::size_t memorySize; +}; + +extern "C" { + +void APS5_VABI sceAudio3dGetDefaultOpenParameters(Audio3dOpenParameters* p); +int APS5_VABI sceAudio3dInitialize(int64_t reserved); +int APS5_VABI sceAudio3dTerminate(); +int APS5_VABI sceAudio3dPortAdvance(uint32_t portId); +int APS5_VABI sceAudio3dPortClose(uint32_t portId); +int APS5_VABI sceAudio3dPortGetQueueLevel(uint32_t portId, uint32_t* queueLevel, uint32_t* queueAvailable); +int APS5_VABI sceAudio3dPortGetAttributesSupported(uint32_t portId, uint32_t* attributes, uint32_t* numAttributes); +int APS5_VABI sceAudio3dPortOpen(int userId, const Audio3dOpenParameters* parameters, uint32_t* id); +int APS5_VABI sceAudio3dPortPush(uint32_t portId, uint32_t blocking); +int APS5_VABI sceAudio3dPortSetAttribute(uint32_t portId, uint32_t attributeId, const void* attribute, size_t attributeSize); +int APS5_VABI sceAudio3dObjectReserve(uint32_t portId, uint32_t* objectId); +int APS5_VABI sceAudio3dObjectUnreserve(uint32_t portId, uint32_t objectId); +int APS5_VABI sceAudio3dObjectSetAttributes(uint32_t portId, uint32_t objectId, uint64_t numAttributes, const Audio3dAttribute* attributeArray); +int APS5_VABI sceAudio3dPortFlush(uint32_t portId); +int APS5_VABI sceAudio3dBedWrite2(uint32_t portId, uint32_t numChannels, uint32_t format, const void* buffer, uint32_t numSamples, uint32_t outputRoute, bool); +int APS5_VABI sceAudio3dBedWrite(uint32_t portId, uint32_t numChannels, uint32_t format, const void* buffer, uint32_t numSamples); +int APS5_VABI sceAudio3dAudioOutOpen(uint32_t portId, int userId, std::int32_t type, std::int32_t index, uint32_t len, uint32_t freq, uint32_t param); +int APS5_VABI sceAudio3dAudioOutClose(std::int32_t handle); +int APS5_VABI sceAudio3dAudioOutOutput(std::int32_t handle, const void* ptr); +int APS5_VABI sceAudio3dAudioOutOutputs(AudioOutOutputParam* param, uint32_t num); +int APS5_VABI sceAudio3dStrError(void); +int APS5_VABI sceAudio3dPortOpenEx(void); +int APS5_VABI sceAudio3dPortCreate(void); +int APS5_VABI sceAudio3dPortDestroy(void); +int APS5_VABI sceAudio3dPortGetStatus(void); +int APS5_VABI sceAudio3dReportRegisterHandler(void); +int APS5_VABI sceAudio3dReportUnregisterHandler(void); +size_t APS5_VABI sceAudio3dGetSpeakerArrayMemorySize(uint32_t numSpeakers, uint8_t is3d); +int APS5_VABI sceAudio3dCreateSpeakerArray(AudioOut2SpeakerArrayHandle* handle, const Audio3dSpeakerArrayParameters* parameters); +int APS5_VABI sceAudio3dDeleteSpeakerArray(AudioOut2SpeakerArrayHandle handle); +int APS5_VABI sceAudio3dGetSpeakerArrayMixCoefficients(AudioOut2SpeakerArrayHandle handle, AudioOut2Position pos, float spread, float* coefficients, uint32_t numCoefficients); +int APS5_VABI sceAudio3dGetSpeakerArrayMixCoefficients2(AudioOut2SpeakerArrayHandle handle, AudioOut2Position pos, float spread, float* coefficients, uint32_t numCoefficients, uint8_t heightAware, float downmixSpreadRadius); + +} diff --git a/core/libs/prx/libSceAudio3d/libSceAudio3d.hpp b/core/libs/prx/libSceAudio3d/libSceAudio3d.hpp new file mode 100644 index 0000000000..dcdc650f61 --- /dev/null +++ b/core/libs/prx/libSceAudio3d/libSceAudio3d.hpp @@ -0,0 +1,3 @@ +#pragma once + +#include "prx/libSceAudio3d/include/Audio3d.hpp" diff --git a/core/libs/prx/libSceAudioIn/Export.cpp b/core/libs/prx/libSceAudioIn/Export.cpp index 0a1712b5da..b1d4089ca1 100644 --- a/core/libs/prx/libSceAudioIn/Export.cpp +++ b/core/libs/prx/libSceAudioIn/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioIn/include/AudioIn.hpp" #include #include #include "SceTypes.hpp" diff --git a/core/libs/prx/libSceAudioIn/include/AudioIn.hpp b/core/libs/prx/libSceAudioIn/include/AudioIn.hpp new file mode 100644 index 0000000000..f4d273aab6 --- /dev/null +++ b/core/libs/prx/libSceAudioIn/include/AudioIn.hpp @@ -0,0 +1,50 @@ +#pragma once + +#include "SceTypes.hpp" + +extern "C" { + +int APS5_VABI sceAudioInInit(); +int APS5_VABI sceAudioInGetSilentState(int handle); +int APS5_VABI sceAudioInInput(int handle, void* dest); +int APS5_VABI sceAudioInOpen(int userId, uint32_t type, uint32_t index, uint32_t len, uint32_t freq, uint32_t param); +int32_t APS5_VABI sceAudioInClose(int32_t handle); +int32_t APS5_VABI sceAudioInHqOpen(int32_t userId, uint32_t type, uint32_t index, uint32_t len, uint32_t freq, uint32_t param); +int32_t APS5_VABI sceAudioInAsyncOpen(int32_t userId, uint32_t type, uint32_t index, uint32_t len, uint32_t freq, uint32_t param); +int32_t APS5_VABI sceAudioInIsPadEmbeddedMic(int32_t handle); +int32_t APS5_VABI sceAudioInGetGain(int32_t handle, float* gain); +int32_t APS5_VABI sceAudioInGetRerouteCount(int32_t handle); +int APS5_VABI sceAudioInDeviceIdOpen(void); +int APS5_VABI sceAudioInDeviceIdAsyncOpen(void); +int APS5_VABI sceAudioInSetUsbGain(void); +int APS5_VABI sceAudioInIsSharedDevice(void); +int APS5_VABI sceAudioInDeviceIdHqOpen(void); +int APS5_VABI sceAudioInDeviceHqOpen(void); +int APS5_VABI sceAudioInSetConnections(void); +int APS5_VABI sceAudioInSetPortConnections(void); +int APS5_VABI sceAudioInSetPortStatuses(void); +int APS5_VABI sceAudioInGetHandleStatusInfo(void); +int APS5_VABI sceAudioInOpenEx(int userId, uint32_t type, uint32_t index, uint32_t extra, uint32_t len, uint32_t freq, uint32_t param); +int APS5_VABI sceAudioInHqOpenEx(int userId, uint32_t type, uint32_t index, uint32_t extra, uint32_t len, uint32_t freq, uint32_t param); +int APS5_VABI sceAudioInDeviceOpenEx(void); +int APS5_VABI sceAudioInChangeAppModuleState(void); +int APS5_VABI sceAudioInSetSparkParam(void); +int APS5_VABI sceAudioInSetSparkSideTone(void); +int APS5_VABI sceAudioInSetCompressorPreGain(void); +int APS5_VABI sceAudioInSetNoiseGateThreshold(void); +int APS5_VABI sceAudioInSetMicLevel(void); +int APS5_VABI sceAudioInSetDeviceMuteStatus(void); +int APS5_VABI sceAudioInSetDevConnection(void); +int APS5_VABI sceAudioInCountPorts(void); +int APS5_VABI sceAudioInSetUserMute(void); +int APS5_VABI sceAudioInVmicCreate(void); +int APS5_VABI sceAudioInVmicDestroy(void); +int APS5_VABI sceAudioInVmicWrite(void); +int APS5_VABI sceAudioInVmicGetStatus(void); +int APS5_VABI sceAudioInVmicSetMute(void); +int APS5_VABI sceAudioInSetMode(void); +int APS5_VABI sceAudioInSetMode2(void); +int APS5_VABI sceAudioInExtCtrl(void); +int APS5_VABI sceAudioInInputs(void); + +} diff --git a/core/libs/prx/libSceAudioIn/libSceAudioIn.hpp b/core/libs/prx/libSceAudioIn/libSceAudioIn.hpp new file mode 100644 index 0000000000..6da8abb473 --- /dev/null +++ b/core/libs/prx/libSceAudioIn/libSceAudioIn.hpp @@ -0,0 +1,3 @@ +#pragma once + +#include "prx/libSceAudioIn/include/AudioIn.hpp" diff --git a/core/libs/prx/libSceAudioOut/include/AudioOut.hpp b/core/libs/prx/libSceAudioOut/include/AudioOut.hpp new file mode 100644 index 0000000000..0cdeb9d06e --- /dev/null +++ b/core/libs/prx/libSceAudioOut/include/AudioOut.hpp @@ -0,0 +1,80 @@ +#pragma once + +#include "SceTypes.hpp" + +extern "C" { + +int APS5_VABI sceAudioOutInit(); +int APS5_VABI sceAudioOutOpen(int userId, int type, int index, std::uint32_t len, std::uint32_t freq, std::uint32_t param); +int APS5_VABI sceAudioOutClose(int handle); +int APS5_VABI sceAudioOutOutput(int handle, const void* ptr); +int APS5_VABI sceAudioOutOutputs(AudioOutOutputParam* param, std::uint32_t num); +int APS5_VABI sceAudioOutSetVolume(int handle, std::uint32_t flag, int* vol); +int APS5_VABI sceAudioOutGetLastOutputTime(int handle, std::uint64_t* outputTime); +int APS5_VABI sceAudioOutGetPortState(int handle, AudioOutPortState* state); +int APS5_VABI sceAudioOutDeviceIdOpen(std::uint64_t deviceId, std::int32_t type, std::int32_t index, std::uint32_t length, std::int32_t frequency, std::uint32_t parameter); +int APS5_VABI sceAudioOutSysClose(int handle); +int APS5_VABI sceAudioOutSysConfigureOutput(int type, std::uint64_t flags, std::uint32_t mode, std::uint32_t target, std::uint64_t option); +int APS5_VABI sceAudioOutSysGetHdmiMonitorInfo(int type, void* info, std::uint32_t size); +int APS5_VABI sceAudioOutSysOpen(int userId, std::uint32_t mode); +int APS5_VABI sceAudioOutSetMixLevelPadSpk(int handle, std::uint32_t mixLevel); +int APS5_VABI sceAudioOutExClose(int handle); +int APS5_VABI sceAudioOutExConfigureOutput(int control, std::uint64_t flags, std::uint32_t mode, std::uint32_t target, std::uint64_t option); +int APS5_VABI sceAudioOutExGetMonitorInfo(int type, int index, void* info, std::uint32_t size); +int APS5_VABI sceAudioOutExOpen(int userId, std::uint32_t mode); +int APS5_VABI sceAudioOutGetSystemState(AudioOutSystemState* state); +int APS5_VABI sceAudioOutOpenEx(void); +int APS5_VABI sceAudioOutSetSystemDebugState(void); +int APS5_VABI sceAudioOutGetHandleStatusInfo(void); +int APS5_VABI sceAudioOutGetSimulatedHandleStatusInfo2(void); +int APS5_VABI sceAudioOutChangeAppModuleState(void); +int APS5_VABI sceAudioOutGetSimulatedHandleStatusInfo(void); +int APS5_VABI sceAudioOutGetSimulatedBusUsableStatusByBusType(void); +int APS5_VABI sceAudioOutAttachToApplicationByPid(void); +int APS5_VABI sceAudioOutDetachFromApplicationByPid(void); +int APS5_VABI sceAudioOutPtOpen(void); +int APS5_VABI sceAudioOutPtClose(void); +int APS5_VABI sceAudioOutPtGetLastOutputTime(void); +int APS5_VABI sceAudioOutExPtOpen(void); +int APS5_VABI sceAudioOutExPtClose(void); +int APS5_VABI sceAudioOutExPtGetLastOutputTime(void); +int APS5_VABI sceAudioOutExGetLastOutputTime(void); +int APS5_VABI sceAudioOutGetInfoOpenNum(void); +int APS5_VABI sceAudioOutGetInfo(void); +int APS5_VABI sceAudioOutMasteringInit(void); +int APS5_VABI sceAudioOutMasteringSetParam(void); +int APS5_VABI sceAudioOutMasteringGetState(void); +int APS5_VABI sceAudioOutMasteringTerm(void); +int APS5_VABI sceAudioOutSetPadSpkVolume(void); +int APS5_VABI sceAudioOutSetPadJackVolume(void); +int APS5_VABI sceAudioOutSetUsbVolume(void); +int APS5_VABI sceAudioOutSetCaesarVolume(void); +int APS5_VABI sceAudioOutSetHeadphoneOutMode(void); +int APS5_VABI sceAudioOutGetFocusEnablePid(void); +int APS5_VABI sceAudioOutSetMainOutput(void); +int APS5_VABI sceAudioOutSetVolumeDown(void); +int APS5_VABI sceAudioOutSetChatBalance(void); +int APS5_VABI sceAudioOutSetRecMode(void); +int APS5_VABI sceAudioOutSetAllMute(void); +int APS5_VABI sceAudioOutSetSparkEQ(void); +int APS5_VABI sceAudioOutArbitrationInitialize(void); +int APS5_VABI sceAudioOutEnable3DAudioByArbitration(void); +int APS5_VABI sceAudioOutAssignHRTF(void); +int APS5_VABI sceAudioOutEnable3DAudioForUser(void); +int APS5_VABI sceAudioOutEnableMonoHpOutput(void); +int APS5_VABI sceAudioOutEnableTVVirtual(void); +int APS5_VABI sceAudioOutEnableTVCorrection(void); +int APS5_VABI sceAudioOutEnableVrControllerLowPowerMode(void); +int APS5_VABI sceAudioOutEnableCinematicVrRotation(void); +int APS5_VABI sceAudioOutCustomHrtfIsExist(void); +int APS5_VABI sceAudioOutExConfigureOutputMode(void); +int APS5_VABI sceAudioOutExSystemInfoIsSupportedAudioOutExMode(void); +int APS5_VABI sceAudioOutExGetSystemInfo(void); +int APS5_VABI sceAudioOutExGetOutputInfo(void); +int APS5_VABI sceAudioOutSysConfigureOutputMode(void); +int APS5_VABI sceAudioOutSysGetMonitorInfo(void); +int APS5_VABI sceAudioOutSysHdmiMonitorInfoIsSupportedAudioOutMode(void); +int APS5_VABI sceAudioOutSysGetSystemInfo(void); +int APS5_VABI sceAudioOutSysGetOutputInfo(void); + +} diff --git a/core/libs/prx/libSceAudioOut/include/AudioOut2.hpp b/core/libs/prx/libSceAudioOut/include/AudioOut2.hpp new file mode 100644 index 0000000000..d7212024f9 --- /dev/null +++ b/core/libs/prx/libSceAudioOut/include/AudioOut2.hpp @@ -0,0 +1,82 @@ +#pragma once + +#include "SceTypes.hpp" + +extern "C" { + +int APS5_VABI sceAudioOut2ContextAdvance(AudioOut2ContextHandle ctx); +int APS5_VABI sceAudioOut2ContextCreate(const AudioOut2ContextParam* params, void* buffer, size_t bufferSize, AudioOut2ContextHandle* ctx); +int APS5_VABI sceAudioOut2ContextDestroy(AudioOut2ContextHandle ctx); +int APS5_VABI sceAudioOut2ContextGetQueueLevel(AudioOut2ContextHandle ctx, uint32_t* queueLevel, uint32_t* availableQueue); +int APS5_VABI sceAudioOut2ContextPush(AudioOut2ContextHandle ctx, uint32_t blocking); +int APS5_VABI sceAudioOut2ContextQueryMemory(const AudioOut2ContextParam* params, size_t* memorySize); +int APS5_VABI sceAudioOut2ContextResetParam(AudioOut2ContextParam* params); +int APS5_VABI sceAudioOut2ContextSetAttributes(AudioOut2ContextHandle ctx, const AudioOut2Attribute* attributes, uint32_t num); +int APS5_VABI sceAudioOut2LoInit(void); +int APS5_VABI sceAudioOut2LoTerminate(void); +int APS5_VABI sceAudioOut2LoContextQueryMemory(const AudioOut2ContextParam* params, size_t* memorySize); +int APS5_VABI sceAudioOut2LoContextCreate(const AudioOut2ContextParam* params, void* buffer, size_t bufferSize, AudioOut2ContextHandle* ctx); +int APS5_VABI sceAudioOut2LoContextDestroy(AudioOut2ContextHandle ctx); +int APS5_VABI sceAudioOut2LoContextSetAttributes(AudioOut2ContextHandle ctx, const AudioOut2Attribute* attributes, uint32_t num); +int APS5_VABI sceAudioOut2LoContextAdvance(AudioOut2ContextHandle ctx); +int APS5_VABI sceAudioOut2LoContextPush(AudioOut2ContextHandle ctx, uint32_t blocking); +int APS5_VABI sceAudioOut2LoContextGetQueueLevel(AudioOut2ContextHandle ctx, uint32_t* queueLevel, uint32_t* availableQueue); +int APS5_VABI sceAudioOut2LoPortCreate(AudioOut2ContextHandle ctx, const AudioOut2PortParam* params, AudioOut2PortHandle* port); +int APS5_VABI sceAudioOut2LoPortDestroy(AudioOut2PortHandle port); +int APS5_VABI sceAudioOut2LoPortSetAttributes(AudioOut2PortHandle port, const AudioOut2Attribute* attributes, uint32_t num); +int APS5_VABI sceAudioOut2LoPortGetState(AudioOut2PortHandle port, AudioOut2PortState* state); +int APS5_VABI sceAudioOut2MasteringInit(uint32_t flags); +int APS5_VABI sceAudioOut2MasteringInitEx(uint32_t flags); +int APS5_VABI sceAudioOut2MasteringTerm(void); +int APS5_VABI sceAudioOut2MasteringGetState(AudioOut2MasteringStatesHeader* state, uint32_t output, AudioOut2UserHandle user); +int APS5_VABI sceAudioOut2MasteringSetParam(const AudioOut2MasteringParamsHeader* param, uint32_t output, uint32_t flags); +int APS5_VABI sceAudioOut2PortCreate(AudioOut2ContextHandle ctx, const AudioOut2PortParam* params, AudioOut2PortHandle* port); +int APS5_VABI sceAudioOut2PortDestroy(AudioOut2PortHandle port); +int APS5_VABI sceAudioOut2PortGetState(AudioOut2PortHandle port, AudioOut2PortState* state); +int APS5_VABI sceAudioOut2PortSetAttributes(AudioOut2PortHandle port, const AudioOut2Attribute* attributes, uint32_t num); +int APS5_VABI sceAudioOut2SpeakerArrayCreate(AudioOut2SpeakerArrayHandle* handle, const void* vbapParams, const void* ambiParams); +int APS5_VABI sceAudioOut2SpeakerArrayDestroy(AudioOut2SpeakerArrayHandle handle); +int APS5_VABI sceAudioOut2GetSpeakerArrayAmbisonicsCoefficients(AudioOut2SpeakerArrayHandle handle, uint32_t ambisonicsChannel, float* coefficients, uint32_t numCoefficients); +int APS5_VABI sceAudioOut2GetSpeakerArrayCoefficients(AudioOut2SpeakerArrayHandle handle, AudioOut2Position pos, float spread, float* coefficients, uint32_t numCoefficients, uint8_t heightAware, float downmixSpreadRadius); +size_t APS5_VABI sceAudioOut2GetSpeakerArrayMemorySize(uint32_t numSpeakers, uint8_t is3d, uint8_t isAmbisonics); +int APS5_VABI sceAudioOut2GetSpeakerInfo(AudioOut2SpeakerInfo* info, uint32_t flags); +int APS5_VABI sceAudioOut2Initialize(void); +int APS5_VABI sceAudioOut2InitializeEx(std::uint32_t param); +int APS5_VABI sceAudioOut2Set3DLatency(int userId, std::uint32_t output); +int APS5_VABI sceAudioOut2GetSystemState(AudioOut2SystemState* state); +int APS5_VABI sceAudioOut2SetSystemDebugState(const AudioOut2SystemDebugStateParam* param); +int APS5_VABI sceAudioOut2EnableChat(void); +int APS5_VABI sceAudioOut2DisableChat(void); +int APS5_VABI sceAudioOut2UserCreate(uint32_t userId, AudioOut2UserHandle* handle); +int APS5_VABI sceAudioOut2UserDestroy(AudioOut2UserHandle handle); +int APS5_VABI sceAudioOut2UserGetSupportedAttributes(AudioOut2UserHandle handle, uint32_t* contextAttributes, uint32_t* portAttributes); +int APS5_VABI sceAudioOut2UserCreateEx(void); +int APS5_VABI sceAudioOut2ArbitrationInitialize(void); +int APS5_VABI sceAudioOut2MbusInit(void); +int APS5_VABI sceAudioOut2MbusSetPortConnections(void); +int APS5_VABI sceAudioOut2MbusSetConnections(void); +int APS5_VABI sceAudioOut2MbusSetPortStatuses(void); +int APS5_VABI sceAudioOut2MbusSetHeadphoneOutMode(void); +int APS5_VABI sceAudioOut2MbusUserLoginFor3DAudio(void); +int APS5_VABI sceAudioOut2MbusSetDeviceConnections(void); +int APS5_VABI sceAudioOut2MbusSetMorpheusParam(void); +int APS5_VABI sceAudioOut2MbusSetCaesarParam(void); +int APS5_VABI sceAudioOut2MbusSetSparkParam(void); +int APS5_VABI sceAudioOut2AllAudioMainToHeadphoneForDiag(void); +int APS5_VABI sceAudioOut2LoPortGetStateEx(void); +int APS5_VABI sceAudioOut2ReportRegisterHandler(void); +int APS5_VABI sceAudioOut2ReportUnregisterHandler(void); +int APS5_VABI sceAudioOut2GetTvCorrectionInfo(void); +int APS5_VABI sceAudioOut2GetIpcHandle(void); +int APS5_VABI sceAudioOut2GetSystemStateEx(void); +int APS5_VABI sceAudioOut2SetDebugHeadphoneMode(void); +int APS5_VABI sceAudioOut2DebugStateCtrl(void); +int APS5_VABI sceAudioOut2ContextBedWrite(void); +int APS5_VABI sceAudioOut2PortCreateEx(void); +int APS5_VABI sceAudioOut2Terminate(void); +int APS5_VABI sceAudioOut2PortRegister(void); +int APS5_VABI sceAudioOut2PortUnregister(void); +int APS5_VABI sceAudioOut2GetAmbisonicsEncodeCoefficients(void); +int APS5_VABI sceAudioOut2GetHrtfIdForCronos(void); + +} diff --git a/core/libs/prx/libSceAudioOut/libSceAudioOut.hpp b/core/libs/prx/libSceAudioOut/libSceAudioOut.hpp new file mode 100644 index 0000000000..d092ed95af --- /dev/null +++ b/core/libs/prx/libSceAudioOut/libSceAudioOut.hpp @@ -0,0 +1,4 @@ +#pragma once + +#include "prx/libSceAudioOut/include/AudioOut.hpp" +#include "prx/libSceAudioOut/include/AudioOut2.hpp" diff --git a/core/libs/prx/libSceAudioOut/src/AudioOut.cpp b/core/libs/prx/libSceAudioOut/src/AudioOut.cpp index c5051500a0..4459dc8152 100644 --- a/core/libs/prx/libSceAudioOut/src/AudioOut.cpp +++ b/core/libs/prx/libSceAudioOut/src/AudioOut.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include #include #include diff --git a/core/libs/prx/libSceAudioOut/src/AudioOut2Context.cpp b/core/libs/prx/libSceAudioOut/src/AudioOut2Context.cpp index e11ee633e5..905eaa42f5 100644 --- a/core/libs/prx/libSceAudioOut/src/AudioOut2Context.cpp +++ b/core/libs/prx/libSceAudioOut/src/AudioOut2Context.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" #include #include #include diff --git a/core/libs/prx/libSceAudioOut/src/AudioOut2Low.cpp b/core/libs/prx/libSceAudioOut/src/AudioOut2Low.cpp index eac5204b6d..e427f40302 100644 --- a/core/libs/prx/libSceAudioOut/src/AudioOut2Low.cpp +++ b/core/libs/prx/libSceAudioOut/src/AudioOut2Low.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" #include #include #include "SceTypes.hpp" @@ -5,19 +6,6 @@ extern "C" { -int APS5_VABI sceAudioOut2Initialize(void); -int APS5_VABI sceAudioOut2ContextQueryMemory(const AudioOut2ContextParam* params, size_t* memory_size); -int APS5_VABI sceAudioOut2ContextCreate(const AudioOut2ContextParam* params, void* buffer, size_t buffer_size, AudioOut2ContextHandle* ctx); -int APS5_VABI sceAudioOut2ContextDestroy(AudioOut2ContextHandle ctx); -int APS5_VABI sceAudioOut2ContextSetAttributes(AudioOut2ContextHandle ctx, const AudioOut2Attribute* attributes, uint32_t num); -int APS5_VABI sceAudioOut2ContextAdvance(AudioOut2ContextHandle ctx); -int APS5_VABI sceAudioOut2ContextPush(AudioOut2ContextHandle ctx, uint32_t blocking); -int APS5_VABI sceAudioOut2ContextGetQueueLevel(AudioOut2ContextHandle ctx, uint32_t* queue_level, uint32_t* available_queue); -int APS5_VABI sceAudioOut2PortCreate(AudioOut2ContextHandle ctx, const AudioOut2PortParam* params, AudioOut2PortHandle* port); -int APS5_VABI sceAudioOut2PortDestroy(AudioOut2PortHandle port); -int APS5_VABI sceAudioOut2PortSetAttributes(AudioOut2PortHandle port, const AudioOut2Attribute* attributes, uint32_t num); -int APS5_VABI sceAudioOut2PortGetState(AudioOut2PortHandle port, AudioOut2PortState* state); - int APS5_VABI sceAudioOut2LoInit(void) { return sceAudioOut2Initialize(); } diff --git a/core/libs/prx/libSceAudioOut/src/AudioOut2Mastering.cpp b/core/libs/prx/libSceAudioOut/src/AudioOut2Mastering.cpp index 2a5d1be319..88e948e434 100644 --- a/core/libs/prx/libSceAudioOut/src/AudioOut2Mastering.cpp +++ b/core/libs/prx/libSceAudioOut/src/AudioOut2Mastering.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" #include #include #include diff --git a/core/libs/prx/libSceAudioOut/src/AudioOut2Port.cpp b/core/libs/prx/libSceAudioOut/src/AudioOut2Port.cpp index 14c9bc2c63..e8a547fefc 100644 --- a/core/libs/prx/libSceAudioOut/src/AudioOut2Port.cpp +++ b/core/libs/prx/libSceAudioOut/src/AudioOut2Port.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" #include #include #include diff --git a/core/libs/prx/libSceAudioOut/src/AudioOut2SpeakerArray.cpp b/core/libs/prx/libSceAudioOut/src/AudioOut2SpeakerArray.cpp index cee71ecc16..36b6746149 100644 --- a/core/libs/prx/libSceAudioOut/src/AudioOut2SpeakerArray.cpp +++ b/core/libs/prx/libSceAudioOut/src/AudioOut2SpeakerArray.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" #include #include #include diff --git a/core/libs/prx/libSceAudioOut/src/AudioOut2System.cpp b/core/libs/prx/libSceAudioOut/src/AudioOut2System.cpp index 0be9bc4cf3..b687f162e3 100644 --- a/core/libs/prx/libSceAudioOut/src/AudioOut2System.cpp +++ b/core/libs/prx/libSceAudioOut/src/AudioOut2System.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" #include #include #include diff --git a/core/libs/prx/libSceAudioOut/src/AudioOut2User.cpp b/core/libs/prx/libSceAudioOut/src/AudioOut2User.cpp index 1a514be246..5a8bce8592 100644 --- a/core/libs/prx/libSceAudioOut/src/AudioOut2User.cpp +++ b/core/libs/prx/libSceAudioOut/src/AudioOut2User.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" #include #include "SceTypes.hpp" #include "prx/libc/include/General.hpp" diff --git a/core/libs/prx/libSceAudioOut/src/Unimplemented.cpp b/core/libs/prx/libSceAudioOut/src/Unimplemented.cpp index 4afa07f903..1e44d76aa6 100644 --- a/core/libs/prx/libSceAudioOut/src/Unimplemented.cpp +++ b/core/libs/prx/libSceAudioOut/src/Unimplemented.cpp @@ -1,3 +1,5 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include #include #include "SceTypes.hpp" diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOut2DeviceState.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOut2DeviceState.cpp index 5ada5b5529..5743296d2f 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOut2DeviceState.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOut2DeviceState.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" #include "SceTypes.hpp" #include @@ -8,19 +9,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOutInit(); -int APS5_VABI sceAudioOut2Initialize(); -int APS5_VABI sceAudioOut2ContextResetParam(AudioOut2ContextParam*); -int APS5_VABI sceAudioOut2ContextCreate(const AudioOut2ContextParam*, void*, std::size_t, AudioOut2ContextHandle*); -int APS5_VABI sceAudioOut2ContextDestroy(AudioOut2ContextHandle); -int APS5_VABI sceAudioOut2PortCreate(AudioOut2ContextHandle, const AudioOut2PortParam*, AudioOut2PortHandle*); -int APS5_VABI sceAudioOut2PortDestroy(AudioOut2PortHandle); -int APS5_VABI sceAudioOut2PortGetState(AudioOut2PortHandle, AudioOut2PortState*); -int APS5_VABI sceAudioOut2GetSpeakerInfo(AudioOut2SpeakerInfo*, std::uint32_t); -int APS5_VABI sceAudioOut2GetSystemState(AudioOut2SystemState*); -} - static void Require(bool value) { if (!value) std::abort(); } namespace { diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOut2Latency.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOut2Latency.cpp index df12a6d6a9..f338921a8f 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOut2Latency.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOut2Latency.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" #include "SceTypes.hpp" #include "prx/libc/include/general/VabiMacros.hpp" @@ -9,26 +10,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOut2Initialize(); -int APS5_VABI sceAudioOut2InitializeEx(std::uint32_t); -int APS5_VABI sceAudioOut2LoInit(); -int APS5_VABI sceAudioOut2LoTerminate(); -int APS5_VABI sceAudioOut2Set3DLatency(int, std::uint32_t); -int APS5_VABI sceAudioOut2MasteringInit(std::uint32_t); -int APS5_VABI sceAudioOut2MasteringInitEx(std::uint32_t); -int APS5_VABI sceAudioOut2MasteringTerm(); -int APS5_VABI sceAudioOut2MasteringSetParam(const void*, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioOut2MasteringGetState(void*, std::uint32_t, std::uint64_t); -int APS5_VABI sceAudioOut2SetSystemDebugState(const void*); -int APS5_VABI sceAudioOutMasteringInit(std::uint32_t); -int APS5_VABI sceAudioOutMasteringTerm(); -int APS5_VABI sceAudioOutMasteringSetParam(const void*, std::uint32_t); -int APS5_VABI sceAudioOutMasteringGetState(void*); -int APS5_VABI sceAudioOut2EnableChat(); -int APS5_VABI sceAudioOut2DisableChat(); -} - static void Require(bool value, const char* message) { if (value) return; std::fprintf(stderr, "%s\n", message); @@ -86,12 +67,12 @@ void TestSet3DLatency() { } void TestMasteringInit() { - const std::uint32_t params[4] = {1u, 0u, 0u, 0u}; - alignas(16) std::uint8_t storage[512] {}; + const AudioOut2MasteringParamsHeader params{1u}; + AudioOut2MasteringStates storage{}; Require(sceAudioOut2MasteringTerm() == errorMasteringNotInitialized, "termination before initialization is refused"); - Require(sceAudioOut2MasteringSetParam(params, 0, 0) == errorMasteringNotInitialized, "parameters before initialization are refused"); + Require(sceAudioOut2MasteringSetParam(¶ms, 0, 0) == errorMasteringNotInitialized, "parameters before initialization are refused"); Require(sceAudioOut2MasteringGetState(nullptr, 0, 0) == errorMasteringNotInitialized, "the initialization check comes before the null check"); - Require(sceAudioOut2MasteringGetState(storage, 0, 0) == errorMasteringNotInitialized, "states before initialization are refused"); + Require(sceAudioOut2MasteringGetState(&storage.states_header, 0, 0) == errorMasteringNotInitialized, "states before initialization are refused"); Require(sceAudioOut2MasteringInit(1) == errorMasteringInvalidApiParam, "flags 1 are refused"); Require(sceAudioOut2MasteringInit(0x80000000u) == errorMasteringInvalidApiParam, "sceAudioOut2MasteringInit accepts no flag"); Require(sceAudioOut2MasteringInit(0) == 0, "flags 0 must be accepted"); @@ -110,37 +91,37 @@ void TestMasteringTerm() { } void TestMasteringSetParam() { - const std::uint32_t params[4] = {1u, 0u, 0u, 0u}; - Require(sceAudioOut2MasteringSetParam(params, 0, 0) == 0, "mastering parameters must be accepted"); - Require(sceAudioOut2MasteringSetParam(params, 2, 0) == 0, "mastering parameters for output 2 must be accepted"); + const AudioOut2MasteringParamsHeader params{1u}; + Require(sceAudioOut2MasteringSetParam(¶ms, 0, 0) == 0, "mastering parameters must be accepted"); + Require(sceAudioOut2MasteringSetParam(¶ms, 2, 0) == 0, "mastering parameters for output 2 must be accepted"); Require(sceAudioOut2MasteringSetParam(nullptr, 0, 0) == errorMasteringInvalidApiParam, "null mastering parameters return the invalid API parameter error"); Require(sceAudioOut2MasteringSetParam(nullptr, 0, 2) == errorMasteringInvalidApiParam, "the null check comes before the flag check"); - Require(sceAudioOut2MasteringSetParam(params, 0, 1) == 0, "flags 1 must be accepted"); - Require(sceAudioOut2MasteringSetParam(params, 0, 2) == errorMasteringInvalidFlag, "flags above 1 are refused"); + Require(sceAudioOut2MasteringSetParam(¶ms, 0, 1) == 0, "flags 1 must be accepted"); + Require(sceAudioOut2MasteringSetParam(¶ms, 0, 2) == errorMasteringInvalidFlag, "flags above 1 are refused"); } void TestMasteringGetState() { alignas(16) std::uint8_t storage[512]; Require(sceAudioOut2MasteringGetState(nullptr, 0, 0) == errorInvalidPointer, "a null state returns the invalid pointer error"); - auto* header = reinterpret_cast(storage); + auto* header = reinterpret_cast(storage); auto* words = reinterpret_cast(storage); - *header = 1u; - Require(sceAudioOut2MasteringGetState(storage, 0, 0) == 0, "states id 1 must be accepted"); - Require(*header == 1u, "states id 1 is kept"); + header->states_id = 1u; + Require(sceAudioOut2MasteringGetState(header, 0, 0) == 0, "states id 1 must be accepted"); + Require(header->states_id == 1u, "states id 1 is kept"); Require(words[4] == 0x01010001u && words[5] == 8u + 8u + 3u * 8u * 4u * 2u, "the compressor states descriptor is filled"); Require(words[56] == 0x01010003u && words[57] == 8u + 8u + 8u * 4u * 3u, "the limiter states descriptor is filled"); std::fill(storage, storage + sizeof(storage), 0xA5); - *header = 2u; - Require(sceAudioOut2MasteringGetState(storage, 2, 1) == 0, "states id 2 must be accepted"); - Require(*header == 2u, "states id 2 is kept"); + header->states_id = 2u; + Require(sceAudioOut2MasteringGetState(header, 2, 1) == 0, "states id 2 must be accepted"); + Require(header->states_id == 2u, "states id 2 is kept"); Require(words[4] == 0x01020001u && words[5] == 8u + 8u + 4u * 8u * 4u * 2u, "the V2 compressor states descriptor is filled"); Require(words[72] == 0x01010003u && words[73] == 8u + 8u + 8u * 4u * 3u, "the V2 limiter states descriptor is filled"); Require(std::all_of(storage + 8, storage + 16, [](std::uint8_t byte) { return byte == 0; }), "the reserved words are zeroed"); Require(std::all_of(storage + 24, storage + 288, [](std::uint8_t byte) { return byte == 0; }), "the V2 compressor states are zeroed"); - *header = 3u; - Require(sceAudioOut2MasteringGetState(storage, 0, 0) == errorMasteringInvalidStatesId, "an unknown states id is refused"); - *header = 0u; - Require(sceAudioOut2MasteringGetState(storage, 0, 0) == errorMasteringInvalidStatesId, "states id 0 is refused"); + header->states_id = 3u; + Require(sceAudioOut2MasteringGetState(header, 0, 0) == errorMasteringInvalidStatesId, "an unknown states id is refused"); + header->states_id = 0u; + Require(sceAudioOut2MasteringGetState(header, 0, 0) == errorMasteringInvalidStatesId, "states id 0 is refused"); } void TestLegacyMasteringInit() { diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOut2PortBuffers.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOut2PortBuffers.cpp index b1d5725eca..fff06c8167 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOut2PortBuffers.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOut2PortBuffers.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" #include "SceTypes.hpp" #include @@ -17,18 +18,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOut2ContextResetParam(AudioOut2ContextParam*); -int APS5_VABI sceAudioOut2ContextCreate(const AudioOut2ContextParam*, void*, std::size_t, AudioOut2ContextHandle*); -int APS5_VABI sceAudioOut2ContextDestroy(AudioOut2ContextHandle); -int APS5_VABI sceAudioOut2ContextAdvance(AudioOut2ContextHandle); -int APS5_VABI sceAudioOut2ContextGetQueueLevel(AudioOut2ContextHandle, std::uint32_t*, std::uint32_t*); -int APS5_VABI sceAudioOut2ContextPush(AudioOut2ContextHandle, std::uint32_t); -int APS5_VABI sceAudioOut2PortCreate(AudioOut2ContextHandle, const AudioOut2PortParam*, AudioOut2PortHandle*); -int APS5_VABI sceAudioOut2PortDestroy(AudioOut2PortHandle); -int APS5_VABI sceAudioOut2PortSetAttributes(AudioOut2PortHandle, const AudioOut2Attribute*, std::uint32_t); -} - static void Require(bool value) { if (!value) std::abort(); } static void SetEnvironment(const char* name, const std::string& value) { diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOut2PortLayouts.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOut2PortLayouts.cpp index 7fcfa50334..dcdcb0268c 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOut2PortLayouts.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOut2PortLayouts.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" #include "SceTypes.hpp" #include @@ -14,19 +15,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOut2UserCreate(std::uint32_t, AudioOut2UserHandle*); -int APS5_VABI sceAudioOut2UserDestroy(AudioOut2UserHandle); -int APS5_VABI sceAudioOut2UserGetSupportedAttributes(AudioOut2UserHandle, std::uint32_t*, std::uint32_t*); -int APS5_VABI sceAudioOut2ContextResetParam(AudioOut2ContextParam*); -int APS5_VABI sceAudioOut2ContextCreate(const AudioOut2ContextParam*, void*, std::size_t, AudioOut2ContextHandle*); -int APS5_VABI sceAudioOut2ContextDestroy(AudioOut2ContextHandle); -int APS5_VABI sceAudioOut2ContextPush(AudioOut2ContextHandle, std::uint32_t); -int APS5_VABI sceAudioOut2PortCreate(AudioOut2ContextHandle, const AudioOut2PortParam*, AudioOut2PortHandle*); -int APS5_VABI sceAudioOut2PortDestroy(AudioOut2PortHandle); -int APS5_VABI sceAudioOut2PortSetAttributes(AudioOut2PortHandle, const AudioOut2Attribute*, std::uint32_t); -} - static void Require(bool value) { if (!value) std::abort(); } static void SetEnvironment(const char* name, const std::string& value) { diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOut2Timing.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOut2Timing.cpp index 36074daece..0dfd811378 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOut2Timing.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOut2Timing.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" #include "SceTypes.hpp" #include @@ -14,29 +15,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOut2ContextResetParam(AudioOut2ContextParam*); -int APS5_VABI sceAudioOut2ContextQueryMemory(const AudioOut2ContextParam*, std::size_t*); -int APS5_VABI sceAudioOut2ContextCreate(const AudioOut2ContextParam*, void*, std::size_t, AudioOut2ContextHandle*); -int APS5_VABI sceAudioOut2ContextDestroy(AudioOut2ContextHandle); -int APS5_VABI sceAudioOut2ContextPush(AudioOut2ContextHandle, std::uint32_t); -int APS5_VABI sceAudioOut2ContextGetQueueLevel(AudioOut2ContextHandle, std::uint32_t*, std::uint32_t*); -int APS5_VABI sceAudioOut2PortCreate(AudioOut2ContextHandle, const AudioOut2PortParam*, AudioOut2PortHandle*); -int APS5_VABI sceAudioOut2PortDestroy(AudioOut2PortHandle); -int APS5_VABI sceAudioOut2PortSetAttributes(AudioOut2PortHandle, const AudioOut2Attribute*, std::uint32_t); -int APS5_VABI sceAudioOut2LoContextQueryMemory(const AudioOut2ContextParam*, std::size_t*); -int APS5_VABI sceAudioOut2LoContextCreate(const AudioOut2ContextParam*, void*, std::size_t, AudioOut2ContextHandle*); -int APS5_VABI sceAudioOut2LoContextDestroy(AudioOut2ContextHandle); -int APS5_VABI sceAudioOut2LoContextSetAttributes(AudioOut2ContextHandle, const AudioOut2Attribute*, std::uint32_t); -int APS5_VABI sceAudioOut2LoContextAdvance(AudioOut2ContextHandle); -int APS5_VABI sceAudioOut2LoContextPush(AudioOut2ContextHandle, std::uint32_t); -int APS5_VABI sceAudioOut2LoContextGetQueueLevel(AudioOut2ContextHandle, std::uint32_t*, std::uint32_t*); -int APS5_VABI sceAudioOut2LoPortCreate(AudioOut2ContextHandle, const AudioOut2PortParam*, AudioOut2PortHandle*); -int APS5_VABI sceAudioOut2LoPortDestroy(AudioOut2PortHandle); -int APS5_VABI sceAudioOut2LoPortSetAttributes(AudioOut2PortHandle, const AudioOut2Attribute*, std::uint32_t); -int APS5_VABI sceAudioOut2LoPortGetState(AudioOut2PortHandle, AudioOut2PortState*); -} - static void Require(bool value) { if (!value) std::abort(); } static void SetEnvironment(const char* name, const std::string& value) { diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutBufferSize.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutBufferSize.cpp index d51eda399a..6b2eaaef4e 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutBufferSize.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutBufferSize.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "SDL.h" #include "prx/libSceAudioOut/include/AudioOutSdl.hpp" #include "prx/libc/include/general/VabiMacros.hpp" @@ -8,12 +9,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOutOpen(int, int, int, std::uint32_t, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioOutClose(int); -int APS5_VABI sceAudioOutOutput(int, const void*); -} - namespace { constexpr SDL_AudioDeviceID device = 7; int opened = 0; diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutEx.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutEx.cpp index b96f9dd570..0242fe8839 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutEx.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutEx.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include @@ -5,13 +6,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOutExOpen(int userId, std::uint32_t mode); -int APS5_VABI sceAudioOutExConfigureOutput(int control, std::uint64_t flags, std::uint32_t mode, std::uint32_t target, std::uint64_t option); -int APS5_VABI sceAudioOutExClose(int handle); -int APS5_VABI sceAudioOutOutput(int handle, const void* ptr); -} - static constexpr int SYSTEM_USER = 0xFF; static constexpr int ERROR_EX_INVALID_MODE = static_cast(0x80260015u); static constexpr int ERROR_EX_INVALID_CONTROL = static_cast(0x80268009u); diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutExMonitorInfo.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutExMonitorInfo.cpp index 6fcced4ffb..6e6194c862 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutExMonitorInfo.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutExMonitorInfo.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include @@ -6,10 +7,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOutExGetMonitorInfo(int, int, void*, std::uint32_t); -} - static void Require(bool value, const char* message) { if (value) return; std::fprintf(stderr, "%s\n", message); diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutInfo.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutInfo.cpp index 78d9fe32cb..f246625a21 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutInfo.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutInfo.cpp @@ -1,14 +1,9 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include #include -extern "C" { -int APS5_VABI sceAudioOutGetSimulatedHandleStatusInfo(); -int APS5_VABI sceAudioOutGetInfoOpenNum(); -int APS5_VABI sceAudioOutGetInfo(); -} - static void Require(bool value, const char* message) { if (value) return; std::fprintf(stderr, "%s\n", message); diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutLastOutputTime.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutLastOutputTime.cpp index e6cdeed0d7..7f58f0ad8d 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutLastOutputTime.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutLastOutputTime.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "SceTypes.hpp" #include "prx/libc/include/general/VabiMacros.hpp" @@ -10,12 +11,7 @@ #include extern "C" { -int APS5_VABI sceAudioOutOpen(int, int, int, std::uint32_t, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioOutClose(int); -int APS5_VABI sceAudioOutOutput(int, const void*); -int APS5_VABI sceAudioOutOutputs(AudioOutOutputParam*, std::uint32_t); -int APS5_VABI sceAudioOutGetPortState(int, AudioOutPortState*); -int APS5_VABI sceAudioOutGetLastOutputTime(int, std::uint64_t*); + std::uint64_t APS5_VABI sceKernelGetProcessTime(); } diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutMixLevelPadSpk.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutMixLevelPadSpk.cpp index ca25acb711..ae686bee18 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutMixLevelPadSpk.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutMixLevelPadSpk.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include @@ -11,14 +12,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOutOpen(int, int, int, std::uint32_t, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioOutClose(int); -int APS5_VABI sceAudioOutOutput(int, const void*); -int APS5_VABI sceAudioOutSetVolume(int, std::uint32_t, int*); -int APS5_VABI sceAudioOutSetMixLevelPadSpk(int, std::uint32_t); -} - static void Require(bool value) { if (!value) std::abort(); } static void SetEnvironment(const char* name, const std::string& value) { diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutPortLocks.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutPortLocks.cpp index 107a2ef2f5..15703d8ba8 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutPortLocks.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutPortLocks.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "SDL.h" #include "prx/libc/include/general/VabiMacros.hpp" @@ -12,12 +13,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOutOpen(int, int, int, std::uint32_t, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioOutOutput(int, const void*); -int APS5_VABI sceAudioOutClose(int); -} - namespace { constexpr std::uint32_t Grain = 256; diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutResampling.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutResampling.cpp index c56be14970..6b9577e91d 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutResampling.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutResampling.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "SDL.h" #include "prx/libc/include/general/VabiMacros.hpp" @@ -7,12 +8,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOutOpen(int, int, int, std::uint32_t, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioOutOutput(int, const void*); -int APS5_VABI sceAudioOutClose(int); -} - namespace { constexpr std::uint32_t grain = 256; diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutShutdown.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutShutdown.cpp index dd5390753d..fcadcec548 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutShutdown.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutShutdown.cpp @@ -1,3 +1,5 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "SceTypes.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "prx/libc/include/Shutdown.hpp" @@ -11,17 +13,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOut2ContextResetParam(AudioOut2ContextParam*); -int APS5_VABI sceAudioOut2ContextCreate(const AudioOut2ContextParam*, void*, std::size_t, AudioOut2ContextHandle*); -int APS5_VABI sceAudioOut2ContextAdvance(AudioOut2ContextHandle); -int APS5_VABI sceAudioOut2ContextPush(AudioOut2ContextHandle, std::uint32_t); -int APS5_VABI sceAudioOut2PortCreate(AudioOut2ContextHandle, const AudioOut2PortParam*, AudioOut2PortHandle*); -int APS5_VABI sceAudioOut2PortSetAttributes(AudioOut2PortHandle, const AudioOut2Attribute*, std::uint32_t); -int APS5_VABI sceAudioOutOpen(int, int, int, std::uint32_t, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioOutOutput(int, const void*); -} - namespace { constexpr std::uint32_t grain = 256; diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutSys.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutSys.cpp index eb5878fc18..73ea859c0b 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutSys.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutSys.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include @@ -5,14 +6,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOutSysOpen(int userId, std::uint32_t mode); -int APS5_VABI sceAudioOutSysConfigureOutput(int type, std::uint64_t flags, std::uint32_t mode, std::uint32_t target, std::uint64_t option); -int APS5_VABI sceAudioOutSysClose(int handle); -int APS5_VABI sceAudioOutExOpen(int userId, std::uint32_t mode); -int APS5_VABI sceAudioOutOutput(int handle, const void* ptr); -} - static constexpr int SYSTEM_USER = 0xFF; static bool failed = false; diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutSysHdmiMonitorInfo.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutSysHdmiMonitorInfo.cpp index 7eb1547ce7..1ea013ca7d 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutSysHdmiMonitorInfo.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutSysHdmiMonitorInfo.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include @@ -8,10 +9,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOutSysGetHdmiMonitorInfo(int, void*, std::uint32_t); -} - static void Require(bool value, const char* message) { if (value) return; std::fprintf(stderr, "%s\n", message); diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutSystemState.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutSystemState.cpp index 614a2ba2eb..c925334fbd 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutSystemState.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutSystemState.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "SceTypes.hpp" #include "prx/libc/include/general/VabiMacros.hpp" @@ -5,10 +6,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOutGetSystemState(AudioOutSystemState*); -} - static void Require(bool value, const char* message) { if (value) return; std::fprintf(stderr, "%s\n", message); diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutVibration.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutVibration.cpp index 4f27e0bf7d..6c01a3a317 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutVibration.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutVibration.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "prx/libScePad/include/PadState.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include @@ -7,15 +8,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOutOpen(int, int, int, std::uint32_t, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioOutExOpen(int, std::uint32_t); -int APS5_VABI sceAudioOutClose(int); -int APS5_VABI sceAudioOutOutput(int, const void*); -int APS5_VABI sceAudioOutOutputs(AudioOutOutputParam*, std::uint32_t); -int APS5_VABI sceAudioOutSetVolume(int, std::uint32_t, int*); -} - static void Require(bool value, const char* message) { if (!value) throw std::runtime_error(message); } diff --git a/core/libs/prx/libSceAudioOut/tests/AudioOutVibrationDevice.cpp b/core/libs/prx/libSceAudioOut/tests/AudioOutVibrationDevice.cpp index 6d0a7ca4f1..79681dff96 100644 --- a/core/libs/prx/libSceAudioOut/tests/AudioOutVibrationDevice.cpp +++ b/core/libs/prx/libSceAudioOut/tests/AudioOutVibrationDevice.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" #include "SDL.h" #include "prx/libSceAudioOut/include/AudioOutSdl.hpp" #include "prx/libScePad/include/PadState.hpp" @@ -13,15 +14,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioOutOpen(int, int, int, std::uint32_t, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioOutClose(int); -int APS5_VABI sceAudioOutOutput(int, const void*); -int APS5_VABI sceAudioOutOutputs(AudioOutOutputParam*, std::uint32_t); -int APS5_VABI sceAudioOutSetVolume(int, std::uint32_t, int*); -int APS5_VABI sceAudioOutGetLastOutputTime(int, std::uint64_t*); -} - namespace { constexpr std::uint32_t frames = 256; bool available = true; diff --git a/core/libs/prx/libSceCdlgG2P/Export.cpp b/core/libs/prx/libSceCdlgG2P/Export.cpp index 43abff189e..0ed7d8ebec 100644 --- a/core/libs/prx/libSceCdlgG2P/Export.cpp +++ b/core/libs/prx/libSceCdlgG2P/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceUserService/UserService.hpp" #include "SceTypes.hpp" #include #include @@ -7,8 +8,6 @@ #include "prx/libSceCommonDialog/CommonDialog.hpp" #include "prx/libc/include/General.hpp" -extern "C" int APS5_VABI sceUserServiceGetLoginUserIdList(UserServiceLoginUserIdList* users); - namespace { constexpr int COMMON_DIALOG_STATUS_NONE = 0; diff --git a/core/libs/prx/libSceCdlgPlayerReview/Export.cpp b/core/libs/prx/libSceCdlgPlayerReview/Export.cpp index 4db4e1760e..3e71d2e463 100644 --- a/core/libs/prx/libSceCdlgPlayerReview/Export.cpp +++ b/core/libs/prx/libSceCdlgPlayerReview/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceUserService/UserService.hpp" #include "SceTypes.hpp" #include #include @@ -5,8 +6,6 @@ #include "prx/libSceCommonDialog/CommonDialog.hpp" #include "prx/libc/include/General.hpp" -extern "C" int APS5_VABI sceUserServiceGetLoginUserIdList(UserServiceLoginUserIdList* users); - namespace { std::atomic g_status{0}; diff --git a/core/libs/prx/libSceConvertKeycode/Export.cpp b/core/libs/prx/libSceConvertKeycode/Export.cpp index 0aa1387305..8895ae6d39 100644 --- a/core/libs/prx/libSceConvertKeycode/Export.cpp +++ b/core/libs/prx/libSceConvertKeycode/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceUserService/UserService.hpp" #include #include #include @@ -10,12 +11,6 @@ #include "prx/libkernel/AppMetadata/include/AppMetadata.hpp" #include -extern "C" { -int APS5_VABI sceUserServiceGetKeyboardType(int32_t userId, int32_t* type); -int APS5_VABI sceUserServiceGetJapaneseInputType(int32_t userId, int32_t* type); -int APS5_VABI sceUserServiceGetTraditionalChineseInputType(int32_t userId, int32_t* type); -} - namespace { constexpr int kErrInvalidAddress = static_cast(0x80BC0031u); constexpr std::array BaseVirtualKeys = { @@ -2306,7 +2301,6 @@ constexpr std::array KoreanFinal = { 12593, 12594, 12595, 12596, 12597, 12598, 12599, 12601, 12602, 12603, 12604, 12605, 12606, 12607, 12608, 12609, 12610, 12612, 12613, 12614, 12615, 12616, 12618, 12619, 12620, 12621, 12622 }; - std::size_t CharacterLayout(std::uint32_t type, std::uint32_t state) { constexpr std::array layouts = {18, 7, 0, 1, 14, 8, 29, 17, 9, 25, 24, 23, 10, 11, 16, 26, 27, 12, 1, 19, 28, 3, 3, 1, 1, 1, 1, 1, 1, 1, 14, 32, 14, 34, 35, 36, 37, 1, 1}; const bool imeMode = (state & 0x4000000u) != 0; diff --git a/core/libs/prx/libSceHttp/Export.cpp b/core/libs/prx/libSceHttp/Export.cpp index 1b49b9b016..ad94bc3ba5 100644 --- a/core/libs/prx/libSceHttp/Export.cpp +++ b/core/libs/prx/libSceHttp/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceHttp/include/Http.hpp" #include #include #ifdef _WIN32 @@ -24,52 +25,23 @@ // No network is emulated: contexts, templates and requests can be created, but any request // that would touch the network fails with the library's network error. static std::atomic g_nextHandle{1}; -struct HttpConnectionStat; -struct HttpRequestStat; -using HttpCookieSendCallback = int (APS5_VABI *)(std::int32_t, const char*, const char*, void*); -using HttpSocketCreationCallback = void (APS5_VABI *)(std::int32_t, std::int32_t, void*); -using HttpRequestStatusCallback = void (APS5_VABI *)(int, int, void*); struct RequestStatusRegistration { HttpRequestStatusCallback callback; void* argument; }; static std::mutex g_statusMutex; static std::map g_statusCallbacks; -struct HttpCookieStats { - std::size_t usedBytes; - std::uint32_t cookieCount; - std::uint32_t reserved; - std::size_t peakUsedBytes; - std::uint32_t peakCookieCount; - std::uint32_t evictedCookieCount; -}; static_assert(sizeof(HttpCookieStats) == 32); static_assert(offsetof(HttpCookieStats, peakUsedBytes) == 16); -struct HttpMemoryPoolStats { - std::size_t poolSize; - std::size_t peakUsedSize; - std::size_t usedSize; -}; - -struct HttpRequestHeader { - const char* name; - const char* value; -}; - static_assert(sizeof(HttpMemoryPoolStats) == 24); static_assert(offsetof(HttpMemoryPoolStats, peakUsedSize) == 8); static_assert(offsetof(HttpMemoryPoolStats, usedSize) == 16); static_assert(sizeof(HttpRequestHeader) == 16); static_assert(offsetof(HttpRequestHeader, value) == 8); -struct HttpsCaList { - void* certs; - int certsNum; -}; - #ifdef _WIN32 struct HostMutex { SRWLOCK native = SRWLOCK_INIT; @@ -495,7 +467,6 @@ int APS5_VABI sceHttpSetChunkedTransferEnabled(int id, int enable) { return 0; } - int APS5_VABI sceHttpSetInflateGZIPEnabled(int id, int enable) { (void)id; if (static_cast(enable) > 1) return ERROR_INVALID_VALUE; diff --git a/core/libs/prx/libSceHttp/include/Http.hpp b/core/libs/prx/libSceHttp/include/Http.hpp new file mode 100644 index 0000000000..505be14652 --- /dev/null +++ b/core/libs/prx/libSceHttp/include/Http.hpp @@ -0,0 +1,157 @@ +#pragma once + +#include "SceTypes.hpp" + +struct HttpConnectionStat; +struct HttpRequestStat; + +struct HttpCookieStats { + std::size_t usedBytes; + std::uint32_t cookieCount; + std::uint32_t reserved; + std::size_t peakUsedBytes; + std::uint32_t peakCookieCount; + std::uint32_t evictedCookieCount; +}; + +struct HttpMemoryPoolStats { + std::size_t poolSize; + std::size_t peakUsedSize; + std::size_t usedSize; +}; + +struct HttpRequestHeader { + const char* name; + const char* value; +}; + +struct HttpsCaList { + void* certs; + int certsNum; +}; + +using HttpCookieSendCallback = int (APS5_VABI *)(std::int32_t, const char*, const char*, void*); + +using HttpSocketCreationCallback = void (APS5_VABI *)(std::int32_t, std::int32_t, void*); + +using HttpRequestStatusCallback = void (APS5_VABI *)(int, int, void*); + +extern "C" { + +int APS5_VABI sceHttpAbortRequest(int requestId); +int APS5_VABI sceHttpAbortRequestForce(int requestId); +int APS5_VABI sceHttpAddRequestHeader(int id, const char* name, const char* value, uint32_t mode); +int APS5_VABI sceHttpAuthCacheFlush(int httpCtxId); +int APS5_VABI sceHttpCookieFlush(int httpCtxId); +int APS5_VABI sceHttpCreateConnection(int tmplId, const char* serverName, const char* scheme, uint16_t port, int enableKeepAlive); +int APS5_VABI sceHttpCreateConnectionWithURL(int tmplId, const char* url, int enableKeepAlive); +int APS5_VABI sceHttpCreateEpoll(int httpCtxId, HttpEpollHandle* eh); +int APS5_VABI sceHttpCreateRequest(int connId, int method, const char* path, uint64_t contentLength); +int APS5_VABI sceHttpCreateRequestWithURL2(int connId, const char* method, const char* url, uint64_t contentLength); +int APS5_VABI sceHttpCreateTemplate(int httpCtxId, const char* userAgent, int httpVer, int isAutoProxyConf); +int APS5_VABI sceHttpDeleteConnection(int connId); +int APS5_VABI sceHttpDeleteRequest(int reqId); +int APS5_VABI sceHttpDeleteTemplate(int tmplId); +int APS5_VABI sceHttpDestroyEpoll(int httpCtxId, HttpEpollHandle eh); +int APS5_VABI sceHttpGetAllResponseHeaders(int requestId, char** header, size_t* headerSize); +int APS5_VABI sceHttpGetResponseContentLength(int requestId, int* result, uint64_t* contentLength); +int APS5_VABI sceHttpGetStatusCode(int requestId, int* statusCode); +int APS5_VABI sceHttpInit_nid_postfix(int memid, int sslCtxId, uint64_t poolSize); +int APS5_VABI sceHttpsDisableOption(int id, uint32_t sslFlags); +int APS5_VABI sceHttpSendRequest(int requestId, const void* postData, size_t size); +int APS5_VABI sceHttpSetAuthEnabled(int id, int enable); +int APS5_VABI sceHttpSetAuthInfoCallback(int id, HttpAuthInfoCallback callback, void* userArg); +int APS5_VABI sceHttpSetCookieEnabled(int id, int enable); +int APS5_VABI sceHttpSetAutoRedirect(int id, int enable); +int APS5_VABI sceHttpSetConnectTimeOut(int id, uint32_t usec); +int APS5_VABI sceHttpSetEpoll(int id, HttpEpollHandle eh, void* userArg); +int APS5_VABI sceHttpSetNonblock(int id, int enable); +int APS5_VABI sceHttpTrySetNonblock(int id, int enable); +int APS5_VABI sceHttpSetRecvTimeOut(int id, uint32_t usec); +int APS5_VABI sceHttpSetRecvBlockSize(int id, uint32_t blockSize); +int APS5_VABI sceHttpSetResponseHeaderMaxSize(int id, uint64_t headerSize); +int APS5_VABI sceHttpSetRequestContentLength(int requestId, uint64_t contentLength); +int APS5_VABI sceHttpSetResolveRetry(int id, int32_t retry); +int APS5_VABI sceHttpSetResolveTimeOut(int id, uint32_t usec); +int APS5_VABI sceHttpSetSendTimeOut(int id, uint32_t usec); +int APS5_VABI sceHttpsSetMinSslVersion(int id, uint32_t sslVersion); +int APS5_VABI sceHttpsSetSslCallback(int id, HttpsCallback cbfunc, void* userArg); +int APS5_VABI sceHttpTerm_nid_postfix(int httpCtxId); +int APS5_VABI sceHttpUnsetEpoll(int id); +int APS5_VABI sceHttpWaitRequest(HttpEpollHandle eh, HttpNBEvent* nbev, int maxevents, int timeout); +int APS5_VABI sceHttpCreateRequestWithURL(int connId, int method, const char* url, uint64_t contentLength); +int APS5_VABI sceHttpReadData(int requestId, void* data, size_t size); +int APS5_VABI sceHttpRedirectCacheFlush(int httpCtxId); +int APS5_VABI sceHttpSetChunkedTransferEnabled(int id, int enable); +int APS5_VABI sceHttpSetInflateGZIPEnabled(int id, int enable); +int APS5_VABI sceHttpSetRequestStatusCallback(int id, HttpRequestStatusCallback callback, void* argument); +int APS5_VABI sceHttpParseResponseHeader(const char* header, std::size_t headerLen, const char* fieldStr, const char** fieldValue, std::size_t* valueLen); +int APS5_VABI sceHttpCreateRequest2(int connId, const char* method, const char* path, uint64_t contentLength); +int APS5_VABI sceHttpsEnableOption(int id, uint32_t sslFlags); +int APS5_VABI sceHttpsLoadCert(int httpCtxId, int num, void* caList, void* cert, void* key); +int APS5_VABI sceHttpsUnloadCert(int httpCtxId); +int APS5_VABI sceHttpGetLastErrno(int requestId, int* errnoOut); +int APS5_VABI sceHttpsGetSslError(int id, int* errNum, uint32_t* detail); +int APS5_VABI sceHttpSetCookieRecvCallback(int id, HttpCookieRecvCallback cbfunc, void* userArg); +int APS5_VABI sceHttpsSetSslVersion(int id, int sslVersion); +int APS5_VABI sceHttpSetRedirectCallback(int id, HttpRedirectCallback cbfunc, void* userArg); +int APS5_VABI sceHttpAbortWaitRequest(HttpEpollHandle eh); +int APS5_VABI sceHttpsGetCaList(int httpCtxId, HttpsCaList* caList); +int APS5_VABI sceHttpsFreeCaList(int httpCtxId, HttpsCaList* caList); +int APS5_VABI sceHttpAuthCacheImport(int contextId, const void* buffer, std::size_t size); +int APS5_VABI sceHttpAuthCacheExport(int contextId, void* buffer, std::size_t size, std::size_t* requiredSize); +int APS5_VABI sceHttpDbgEnableProfile(void); +int APS5_VABI sceHttpDbgSetPrintf(void); +int APS5_VABI sceHttpDbgShowStat(void); +int APS5_VABI sceHttpGetMemoryPoolStats(int contextId, HttpMemoryPoolStats* stats); +int APS5_VABI sceHttpDbgShowConnectionStat(void); +int APS5_VABI sceHttpDbgShowRequestStat(void); +int APS5_VABI sceHttpDbgShowMemoryPoolStat(void); +int APS5_VABI sceHttpDbgGetConnectionStat(std::int32_t connectionId, HttpConnectionStat* stat); +int APS5_VABI sceHttpDbgGetRequestStat(std::int32_t requestId, HttpRequestStat* stat); +int APS5_VABI sceHttpAddRequestHeaderRaw(int id, const char* header, int mode); +int APS5_VABI sceHttpRemoveRequestHeader(int id, const char* name); +int APS5_VABI sceHttpGetAuthEnabled(int id, int* enable); +int APS5_VABI sceHttpSetEpollId(std::int32_t id, std::int32_t epollId, void* userArg); +int APS5_VABI sceHttpGetEpollId(std::int32_t id, std::int32_t* epollId, void** userArg); +int APS5_VABI sceHttpGetCookie(int contextId, const char* url, char* cookie, std::size_t* requiredSize, std::size_t size); +int APS5_VABI sceHttpGetCookieEnabled(int id, int* enable); +int APS5_VABI sceHttpAddCookie(int contextId, const char* url, const char* cookie, std::size_t size); +int APS5_VABI sceHttpSetCookieSendCallback(std::int32_t id, HttpCookieSendCallback callback, void* userArg); +int APS5_VABI sceHttpCookieExport(int contextId, void* buffer, std::size_t size, std::size_t* requiredSize); +int APS5_VABI sceHttpCookieImport(int contextId, const void* buffer, std::size_t size); +int APS5_VABI sceHttpSetCookieTotalMaxSize(int contextId, std::uint32_t size); +int APS5_VABI sceHttpSetCookieMaxSize(int contextId, std::uint32_t size); +int APS5_VABI sceHttpSetCookieMaxNum(int contextId, std::uint32_t count); +int APS5_VABI sceHttpSetCookieMaxNumPerDomain(int contextId, std::uint32_t count); +int APS5_VABI sceHttpGetCookieStats(int id, HttpCookieStats* stats); +int APS5_VABI sceHttpSetPriorityOption(int id, int priority); +int APS5_VABI sceHttpSetPolicyOption(int id, int policy); +int APS5_VABI sceHttpRequestGetAllHeaders(int requestId, HttpRequestHeader* headers, std::uint32_t* headerCount, char* contentLength, std::size_t* contentLengthSize); +int APS5_VABI sceHttpSetDefaultAcceptEncodingGZIPEnabled(int httpCtxId, int enable); +int APS5_VABI sceHttpSetProxy(int id, int, int, const char* hostname, std::uint16_t); +int APS5_VABI sceHttpSetSocketCreationCallback(std::int32_t id, HttpSocketCreationCallback callback, void* userArg); +int APS5_VABI sceHttpSetHttp09Enabled(int id, int enabled); +int APS5_VABI sceHttpGetRegisteredCtxIds(int contextId, int* netPoolId, int* sslContextId); +int APS5_VABI sceHttpGetConnectionStat(std::int32_t connectionId, HttpConnectionStat* stat); +int APS5_VABI sceHttpAddQuery(int id, const char* query); +int APS5_VABI sceHttpSetDelayBuildRequestEnabled(int id, int enabled); +int APS5_VABI sceHttpGetAutoRedirect(int id, int* enable); +int APS5_VABI sceHttpGetNonblock(int id, int* enable); +int APS5_VABI sceHttpTryGetNonblock(int id, int* enable); +int APS5_VABI sceHttpGetAcceptEncodingGZIPEnabled(int id, int* enable); +int APS5_VABI sceHttpSetAcceptEncodingGZIPEnabled(int id, int enable); +int APS5_VABI sceHttpGetEpoll(int id, HttpEpollHandle* epoll, void** argument); +int APS5_VABI sceHttpCacheRedirectedConnectionEnabled(int id, int enable); +int APS5_VABI sceHttpsEnableOptionPrivate(int id, std::uint32_t sslFlags); +int APS5_VABI sceHttpsDisableOptionPrivate(int id, std::uint32_t sslFlags); +int APS5_VABI sceHttpParseStatusLine(const char* statusLine, size_t lineLen, int32_t* httpMajorVer, int32_t* httpMinorVer, int32_t* responseCode, const char** reasonPhrase, size_t* phraseLen); +int APS5_VABI sceHttpUriBuild(char* out, size_t* requiredSize, size_t capacity, const SceHttpUriElement* element, uint32_t option); +int APS5_VABI sceHttpUriEscape(char* out, size_t* require, size_t prepare, const char* in); +int APS5_VABI sceHttpUriUnescape(char* out, size_t* requiredSize, size_t capacity, const char* input); +int APS5_VABI sceHttpUriMerge(char* mergedUrl, const char* url, const char* relativeUri, size_t* require, size_t prepare, uint32_t option); +int APS5_VABI sceHttpUriParse(SceHttpUriElement* out, const char* srcUrl, void* pool, size_t* require, size_t prepare); +int APS5_VABI sceHttpUriCopy(SceHttpUriElement* out, const SceHttpUriElement* src, void* pool, size_t prepare, size_t* require); +int APS5_VABI sceHttpUriSweepPath(char* dst, const char* src, size_t srcSize); + +} diff --git a/core/libs/prx/libSceHttp/libSceHttp.hpp b/core/libs/prx/libSceHttp/libSceHttp.hpp new file mode 100644 index 0000000000..69e0774038 --- /dev/null +++ b/core/libs/prx/libSceHttp/libSceHttp.hpp @@ -0,0 +1,3 @@ +#pragma once + +#include "prx/libSceHttp/include/Http.hpp" diff --git a/core/libs/prx/libSceHttp/src/Options.cpp b/core/libs/prx/libSceHttp/src/Options.cpp index 710b33311a..415c462ee4 100644 --- a/core/libs/prx/libSceHttp/src/Options.cpp +++ b/core/libs/prx/libSceHttp/src/Options.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceHttp/include/Http.hpp" #include "prx/libSceHttp/src/Options.hpp" #include "prx/libc/include/General.hpp" #include "prx/libSceHttp/src/HttpErrors.hpp" diff --git a/core/libs/prx/libSceHttp/src/Parse.cpp b/core/libs/prx/libSceHttp/src/Parse.cpp index 409e18cf1b..1662a05f43 100644 --- a/core/libs/prx/libSceHttp/src/Parse.cpp +++ b/core/libs/prx/libSceHttp/src/Parse.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceHttp/include/Http.hpp" #include #include #include diff --git a/core/libs/prx/libSceHttp/src/Uri.cpp b/core/libs/prx/libSceHttp/src/Uri.cpp index 2cf41f6f6b..f2c4f83d2d 100644 --- a/core/libs/prx/libSceHttp/src/Uri.cpp +++ b/core/libs/prx/libSceHttp/src/Uri.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceHttp/include/Http.hpp" #include #include #include @@ -10,8 +11,6 @@ #include "prx/libc/include/ApplicationHeap.hpp" #include "prx/libSceHttp/src/HttpErrors.hpp" -extern "C" int APS5_VABI sceHttpUriSweepPath(char* dst, const char* src, size_t srcSize); - namespace { constexpr uint32_t URI_BUILD_WITH_SCHEME = 0x01; diff --git a/core/libs/prx/libSceHttp2/Export.cpp b/core/libs/prx/libSceHttp2/Export.cpp index d97f8d6c6d..7cb14fc27a 100644 --- a/core/libs/prx/libSceHttp2/Export.cpp +++ b/core/libs/prx/libSceHttp2/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceHttp2/include/Http2.hpp" #include #include #include @@ -62,13 +63,6 @@ static bool HandleIsLive(int id) { return FindAnyHandle(id) != nullptr; } -struct Http2MemoryPoolStats { - size_t pool_size; - size_t max_inuse_size; - size_t current_inuse_size; - int32_t reserved; -}; - static std::mutex g_completionsMutex; static std::unordered_map> g_completions; @@ -104,11 +98,6 @@ static int CompleteAsync(const char* function, int req_id, const Http2AsyncOptio return 0; } -using Http2WebSocketTextCallback = void (APS5_VABI*)(std::int32_t requestId, const char* text, std::uint32_t flags, void* userData); -using Http2WebSocketDataCallback = void (APS5_VABI*)(std::int32_t requestId, const void* data, std::size_t dataSize, std::uint32_t flags, void* userData); -using Http2WebSocketCloseCallback = void (APS5_VABI*)(std::int32_t requestId, const std::uint16_t* status, const char* reason, std::uint32_t flags, void* userData); -using Http2WebSocketErrorCallback = void (APS5_VABI*)(std::int32_t requestId, std::int32_t error, void* userData); - extern "C" { int APS5_VABI sceHttp2AddRequestHeader(int id, const char* name, const char* value, uint32_t mode) { @@ -385,7 +374,6 @@ int APS5_VABI sceHttp2SetRequestNoContentLength(int id) { return 0; } - int APS5_VABI sceHttp2SetResolveRetry(int id, int32_t retry) { (void)id; (void)retry; diff --git a/core/libs/prx/libSceHttp2/include/Http2.hpp b/core/libs/prx/libSceHttp2/include/Http2.hpp new file mode 100644 index 0000000000..bf7b34e6a7 --- /dev/null +++ b/core/libs/prx/libSceHttp2/include/Http2.hpp @@ -0,0 +1,85 @@ +#pragma once + +#include "SceTypes.hpp" + +struct Http2MemoryPoolStats { + size_t pool_size; + size_t max_inuse_size; + size_t current_inuse_size; + int32_t reserved; +}; + +using Http2WebSocketTextCallback = void (APS5_VABI*)(std::int32_t requestId, const char* text, std::uint32_t flags, void* userData); + +using Http2WebSocketDataCallback = void (APS5_VABI*)(std::int32_t requestId, const void* data, std::size_t dataSize, std::uint32_t flags, void* userData); + +using Http2WebSocketCloseCallback = void (APS5_VABI*)(std::int32_t requestId, const std::uint16_t* status, const char* reason, std::uint32_t flags, void* userData); + +using Http2WebSocketErrorCallback = void (APS5_VABI*)(std::int32_t requestId, std::int32_t error, void* userData); + +extern "C" { + +int APS5_VABI sceHttp2AddRequestHeader(int id, const char* name, const char* value, uint32_t mode); +int APS5_VABI sceHttp2CreateRequestWithURL(int tmplId, const char* method, const char* url, uint64_t contentLength); +int APS5_VABI sceHttp2CreateTemplate(int libHttp2CtxId, const char* userAgent, int httpVer, int isAutoProxyConf); +int APS5_VABI sceHttp2DeleteRequest(int reqId); +int APS5_VABI sceHttp2DeleteTemplate(int tmplId); +int APS5_VABI sceHttp2GetAllResponseHeaders(int reqId, char** header, size_t* headerSize); +int APS5_VABI sceHttp2GetResponseContentLength(int reqId, int* result, uint64_t* contentLength); +int APS5_VABI sceHttp2GetStatusCode(int reqId, int* statusCode); +int APS5_VABI sceHttp2Init(int libnetMemId, int libsslCtxId, size_t poolSize, int maxConcurrentRequest); +int APS5_VABI sceHttp2ReadData(int reqId, void* data, size_t size); +int APS5_VABI sceHttp2ReadDataAsync(int reqId, void* data, size_t size, void* kqueueOption, void* option); +int APS5_VABI sceHttp2SendRequest(int reqId, const void* postData, size_t size); +int APS5_VABI sceHttp2SendRequestAsync(int reqId, const void* postData, size_t size, Http2AsyncOption* kqueueOption, void* option); +int APS5_VABI sceHttp2SetAuthEnabled(int id, int isEnable); +int APS5_VABI sceHttp2SetAutoRedirect(int id, int enable); +int APS5_VABI sceHttp2SetConnectionWaitTimeOut(int id, uint32_t usec); +int APS5_VABI sceHttp2SetConnectTimeOut(int id, uint32_t usec); +int APS5_VABI sceHttp2SetInflateGZIPEnabled(int id, int enable); +int APS5_VABI sceHttp2SetRecvTimeOut(int id, uint32_t usec); +int APS5_VABI sceHttp2SetRedirectCallback(int id, void* cbFunc, void* userArg); +int APS5_VABI sceHttp2SetRequestContentLength(int id, uint64_t contentLength); +int APS5_VABI sceHttp2SetResolveTimeOut(int id, uint32_t usec); +int APS5_VABI sceHttp2SetSendTimeOut(int id, uint32_t usec); +int APS5_VABI sceHttp2SetSslCallback(int id, void* cbFunc, void* userArg); +int APS5_VABI sceHttp2SetTimeOut(int id, uint32_t usec); +int APS5_VABI sceHttp2SslDisableOption(int id, uint32_t sslFlags); +int APS5_VABI sceHttp2SslEnableOption(int id, uint32_t sslFlags); +int APS5_VABI sceHttp2SetMinSslVersion(int id, uint32_t sslVersion); +int APS5_VABI sceHttp2Term(int libHttp2CtxId); +int APS5_VABI sceHttp2WaitAsync(int reqId, Http2AsyncResult* result, uint32_t* timeout, void* option); +int APS5_VABI sceHttp2AbortRequest(int reqId); +int APS5_VABI sceHttp2GetMemoryPoolStats(int libHttp2CtxId, Http2MemoryPoolStats* stats); +int APS5_VABI sceHttp2CookieFlush(int id); +int APS5_VABI sceHttp2CreateCookieBox(std::size_t poolSize); +int APS5_VABI sceHttp2DeleteCookieBox(int cookieBoxId); +int APS5_VABI sceHttp2SetCookieBox(int id, int cookieBoxId); +int APS5_VABI sceHttp2SetRequestNoContentLength(int id); +int APS5_VABI sceHttp2SetResolveRetry(int id, int32_t retry); +int APS5_VABI sceHttp2WebSocketCreateRequest(std::int32_t templateId, const char* url, Http2WebSocketTextCallback textCallback, Http2WebSocketDataCallback dataCallback, Http2WebSocketCloseCallback closeCallback, Http2WebSocketErrorCallback errorCallback, void* receiveBuffer, std::size_t receiveBufferSize, void* userData, const void* option); +int APS5_VABI sceHttp2WebSocketCloseAsync(std::int32_t requestId, const std::uint16_t* status, const char* reason, std::uint8_t flags, const Http2AsyncOption* asyncOption, const void* option); +int APS5_VABI sceHttp2WebSocketSendTextMessageAsync(std::int32_t requestId, const char* text, std::uint8_t flags, const Http2AsyncOption* asyncOption, const void* option); +int APS5_VABI sceHttp2WebSocketSendDataMessageAsync(std::int32_t requestId, const void* data, std::size_t dataSize, std::uint8_t flags, const Http2AsyncOption* asyncOption, const void* option); +int APS5_VABI sceHttp2WebSocketSetPingInterval(std::int32_t requestId, std::uint32_t intervalMicroseconds); +int APS5_VABI sceHttp2WebSocketSetPingTimeout(std::int32_t requestId, std::uint32_t timeoutMicroseconds); +int APS5_VABI sceHttp2AddCookie(void); +int APS5_VABI sceHttp2AuthCacheFlush(void); +int APS5_VABI sceHttp2CookieExport(void); +int APS5_VABI sceHttp2CookieImport(void); +int APS5_VABI sceHttp2GetAuthEnabled(void); +int APS5_VABI sceHttp2GetAutoRedirect(void); +int APS5_VABI sceHttp2GetCookie(void); +int APS5_VABI sceHttp2GetCookieBox(void); +int APS5_VABI sceHttp2GetCookieStats(void); +int APS5_VABI sceHttp2RedirectCacheFlush(void); +int APS5_VABI sceHttp2RemoveRequestHeader(void); +int APS5_VABI sceHttp2SetAuthInfoCallback(void); +int APS5_VABI sceHttp2SetCookieMaxNum(void); +int APS5_VABI sceHttp2SetCookieMaxNumPerDomain(void); +int APS5_VABI sceHttp2SetCookieMaxSize(void); +int APS5_VABI sceHttp2SetCookieRecvCallback(void); +int APS5_VABI sceHttp2SetCookieSendCallback(void); +int APS5_VABI sceHttp2SetPreSendCallback(void); + +} diff --git a/core/libs/prx/libSceHttp2/libSceHttp2.hpp b/core/libs/prx/libSceHttp2/libSceHttp2.hpp new file mode 100644 index 0000000000..d6ec538a09 --- /dev/null +++ b/core/libs/prx/libSceHttp2/libSceHttp2.hpp @@ -0,0 +1,3 @@ +#pragma once + +#include "prx/libSceHttp2/include/Http2.hpp" diff --git a/core/libs/prx/libSceJobManager/Export.cpp b/core/libs/prx/libSceJobManager/Export.cpp index 9030b82d22..cf3adc97c6 100644 --- a/core/libs/prx/libSceJobManager/Export.cpp +++ b/core/libs/prx/libSceJobManager/Export.cpp @@ -1,3 +1,12 @@ +#include "prx/libSceAgcDriver/Submit/include/Acb.hpp" +#include "prx/libSceAgcDriver/Eq/include/Event.hpp" +#include "prx/libSceAgc/Cb/include/Sync.hpp" +#include "prx/libSceAgc/Cb/include/Registers.hpp" +#include "prx/libSceAgc/Cb/include/Dispatch.hpp" +#include "prx/libSceAgc/Acb/include/Sync.hpp" +#include "prx/libSceAgc/Acb/include/Memory.hpp" +#include "prx/libSceAgc/Acb/include/Dispatch.hpp" +#include "prx/libSceAgc/Acb/include/Control.hpp" #include #include #include @@ -34,20 +43,7 @@ int APS5_VABI sceKernelAddUserEventEdge(KernelEqueue eq, int id); int APS5_VABI sceKernelTriggerUserEvent(KernelEqueue eq, int id, void* udata); int APS5_VABI sceKernelGetEventFilter(const KernelEvent* ev); std::uintptr_t APS5_VABI sceKernelGetEventId(const KernelEvent* ev); -int APS5_VABI sceAgcDriverAddEqEvent(KernelEqueue eq, int id, void* udata); -int APS5_VABI sceAgcDriverDeleteEqEvent(KernelEqueue eq, int id); -int APS5_VABI sceAgcDriverSubmitAcb(std::uint32_t queue, const Packet* packet); -std::uint32_t* APS5_VABI sceAgcAcbAcquireMem(CommandBuffer* buf, std::uint32_t gcrControl, const volatile void* base, std::uint64_t sizeBytes, std::uint32_t pollCycles); -std::uint32_t* APS5_VABI sceAgcCbSetShRegistersDirect(CommandBuffer* buf, const volatile ShaderRegister* regs, std::uint32_t numRegs); -std::uint32_t* APS5_VABI sceAgcCbSetShRegisterRangeDirect(CommandBuffer* buf, std::uint32_t offset, const std::uint32_t* values, std::uint32_t numValues); -std::uint32_t* APS5_VABI sceAgcAcbPushMarker(CommandBuffer* buf, const char* str, std::uint32_t color); -std::uint32_t* APS5_VABI sceAgcAcbPopMarker(CommandBuffer* buf); -std::uint32_t* APS5_VABI sceAgcCbDispatch(CommandBuffer* buf, std::uint32_t threadGroupX, std::uint32_t threadGroupY, std::uint32_t threadGroupZ, std::uint32_t modifier); -std::uint32_t* APS5_VABI sceAgcAcbDispatchIndirect(CommandBuffer* buf, const volatile void* indirectArguments, std::uint32_t modifier); -std::uint32_t* APS5_VABI sceAgcCbReleaseMem(CommandBuffer* buf, std::uint8_t action, std::uint16_t gcrControl, std::uint8_t dst, std::uint8_t cachePolicy, const volatile Label* address, std::uint8_t dataSelect, std::uint64_t data, std::uint16_t gdsOffset, std::uint16_t gdsSize, std::uint8_t interrupt, std::uint32_t interruptContextId); -std::uint32_t* APS5_VABI sceAgcAcbWaitRegMem(CommandBuffer* buf, std::uint8_t size, std::uint8_t compareFunction, std::uint8_t cachePolicy, const volatile void* address, std::uint64_t reference, std::uint64_t mask, std::uint32_t pollCycles); -std::uint32_t* APS5_VABI sceAgcAcbRewind(CommandBuffer* buf, std::uint32_t initialState); -std::uint32_t* APS5_VABI sceAgcAcbWriteData(CommandBuffer* buf, std::uint8_t dst, std::uint8_t cachePolicy, std::uint64_t address, const void* data, std::uint32_t numDwords, std::uint8_t increment, std::uint8_t writeConfirm); + } namespace { diff --git a/core/libs/prx/libSceNet/Export.cpp b/core/libs/prx/libSceNet/Export.cpp index 99b804e54e..5d4c4619a8 100644 --- a/core/libs/prx/libSceNet/Export.cpp +++ b/core/libs/prx/libSceNet/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceNet/include/Net.hpp" #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #include @@ -49,108 +50,11 @@ // Guest socket descriptors retain PS5 semantics while their transport is backed by host sockets. -struct NetWlanInformationElement; -struct NetWlanWakeParameter; -struct NetWlanScanParameter; -struct NetWlanScanResult; -struct NetWlanAdhocScanParameter; -struct NetWlanInfraScanParameter; -struct NetWlanJoinResult; -struct NetDumpFilterParameter; - -struct NetWlanAdhocParameter; -struct NetWlanWakeInfo; -struct NetWlanPspWakeInfo; -struct NetWlanPspWakeParameter; -struct NetWlanApParameter; -struct NetWlanDeviceInfo; -struct NetWlanAntennaParameter; -struct NetWlanRateParameter; -struct NetWlanDeviceConfiguration; -struct NetWlanRssiInfo; -struct NetDhcpInfo; -struct NetAutoIpInfo; -struct NetAddress6Info; - -struct NetDhcpOptionInfo { - std::uint32_t option; - std::uint32_t capacity; - void* data; - std::uint32_t size; - std::uint32_t reserved; -}; - static_assert(sizeof(NetDhcpOptionInfo) == 24); static_assert(offsetof(NetDhcpOptionInfo, capacity) == 4); static_assert(offsetof(NetDhcpOptionInfo, data) == 8); static_assert(offsetof(NetDhcpOptionInfo, size) == 16); -struct NetSockInfo6; -struct NetStatisticsInfo; -struct NetInterfaceStats; -struct NetRouteInfo; -struct NetDebugParameter; -struct NetArpInfo; -struct NetAppMemoryInfo; -struct NetSystemMemoryInfo; -struct NetBandwidthParameter; -struct NetDataTraffic; -struct NetEmulationParameter; - -struct NetResolverConnection; -struct NetThreadParameter { - void (APS5_VABI *entry)(void*); - void* arg; - std::uint64_t reserved; - std::uint32_t flags; -}; -struct NetIpv4InterfaceAddress; -struct NetStatisticsInfoInternal; -struct NetInitializeParameter; -struct NetDhcpStartParameter; -struct NetAddress6StartParameter; - -using NetAddressCallback = void (APS5_VABI *)(void* userArg, std::int32_t event, std::int32_t error); - -struct NetDhcpdStartParameter { - std::uint32_t addresses[5]; - std::uint32_t maxClients; -}; - -struct NetPppoeStartParameter { - std::uint32_t dnsAddresses[2]; - char userName[128]; - char password[128]; - std::int32_t mtu; - std::uint32_t flags; -}; - -struct NetRoutingAddressParameter { - std::uint32_t address; - std::uint32_t mask; -}; - -struct NetRoutingServerParameter { - std::int32_t count; - std::uint32_t localAddresses[2]; - std::uint32_t remoteAddresses[2]; -}; - -struct NetRoutingRule { - std::int32_t protocol; - std::uint32_t firstAddress; - std::uint16_t firstPort; - std::uint16_t reserved; - std::uint32_t secondAddress; - std::uint16_t secondPort; - std::uint16_t flags; -}; - -struct NetRoutingRuleParameter { - std::int32_t count; - const NetRoutingRule* rules; -}; - static_assert(sizeof(NetRoutingAddressParameter) == 8); static_assert(sizeof(NetRoutingServerParameter) == 20); static_assert(offsetof(NetRoutingServerParameter, remoteAddresses) == 12); @@ -169,66 +73,21 @@ static_assert(offsetof(NetPppoeStartParameter, password) == 136); static_assert(offsetof(NetPppoeStartParameter, mtu) == 264); static_assert(offsetof(NetPppoeStartParameter, flags) == 268); -struct NetInfoDumpParameter { - std::uint32_t flags; - std::uint32_t intervalSeconds; - char path[64]; -}; - static_assert(sizeof(NetInfoDumpParameter) == 72); static_assert(offsetof(NetInfoDumpParameter, path) == 8); -struct NetInterfaceInfo; -struct NetInterfaceStatistics; - -struct NetResolverConnectOption { - std::int32_t connectionTimeout; - std::int32_t resolverTimeout; - std::int32_t resolverRetryCount; - std::uint32_t reserved; -}; - static_assert(sizeof(NetResolverConnectOption) == 16); static_assert(offsetof(NetResolverConnectOption, resolverTimeout) == 4); static_assert(offsetof(NetResolverConnectOption, resolverRetryCount) == 8); static_assert(offsetof(NetResolverConnectOption, reserved) == 12); -struct NetSyncObject { - void* mutex; - void* condition; - std::uint32_t signals; - std::uint32_t reserved; -}; - static_assert(sizeof(NetSyncObject) == 24); -using NetEventCallback = std::uint64_t (APS5_VABI*)(std::uint32_t interfaceId, std::uint64_t events, void* userData, void* waitData); - -struct NetIpv6Address { - std::uint8_t bytes[16]; -}; - static_assert(sizeof(NetIpv6Address) == 16); -struct NetDnsInfo { - std::uint32_t primaryAddress; - std::uint32_t secondaryAddress; -}; - -struct NetDns6Info { - NetIpv6Address primaryAddress; - NetIpv6Address secondaryAddress; -}; - static_assert(sizeof(NetDnsInfo) == 8); static_assert(sizeof(NetDns6Info) == 32); -struct NetIpv6InterfaceAddress { - NetIpv6Address address; - std::uint8_t prefixLength; - std::uint8_t reserved[3]; -}; - static_assert(sizeof(NetIpv6InterfaceAddress) == 20); namespace { @@ -470,11 +329,6 @@ std::map g_epoll_socks; std::set g_epoll_aborted; std::map g_pools; -struct NetMemoryPoolStats { - std::size_t pool_size; - std::size_t max_inuse_size; - std::size_t current_inuse_size; -}; struct Resolver { int error = 0; int running = 0; @@ -600,20 +454,6 @@ std::uint64_t swap64(std::uint64_t v) { ((v >> 8) & 0xFF000000u) | ((v >> 24) & 0xFF0000u) | ((v >> 40) & 0xFF00u) | (v >> 56); } -struct NetIovec { - void* base; - std::uint64_t length; -}; - -struct NetMsghdr { - void* name; - std::uint32_t name_length; - NetIovec* iov; - int iov_length; - void* control; - std::uint32_t control_length; - int flags; -}; static_assert(sizeof(NetMsghdr) == 48 && offsetof(NetMsghdr, iov) == 16 && offsetof(NetMsghdr, control) == 32 && offsetof(NetMsghdr, flags) == 44); @@ -912,8 +752,6 @@ int PollSockets(KernelSocketPoll::Entry* entries, int count, int timeoutMillisec const bool g_socketPollerRegistered = (KernelSetSocketPoller_nid_no_patch(&PollSockets), true); -extern "C" int APS5_VABI sceNetSocketClose(int s); - bool CloseSocketForKernel(int descriptor, int* error) { { std::lock_guard lk(g_mutex); @@ -925,8 +763,6 @@ bool CloseSocketForKernel(int descriptor, int* error) { const bool g_socketCloserRegistered = (KernelSetSocketCloser_nid_no_patch(&CloseSocketForKernel), true); -extern "C" int APS5_VABI sceNetSetsockopt(int s, int level, int optname, const void* optval, uint32_t optlen); - bool SetSocketOptionForKernel(int descriptor, int level, int option, const void* value, std::uint32_t length, int* error) { { std::lock_guard lk(g_mutex); @@ -2306,19 +2142,6 @@ int APS5_VABI sceNetResolverStartNtoa6(int rid, const char* hostname, void* addr return 0; } -struct NetResolverRecord { - std::uint32_t address; - std::uint8_t address6[12]; - std::int32_t family; - std::int32_t reserved[3]; -}; - -struct NetResolverInfo { - NetResolverRecord records[10]; - std::int32_t count; - std::int32_t count4; - std::int32_t reserved[14]; -}; static_assert(sizeof(NetResolverRecord) == 32 && offsetof(NetResolverRecord, family) == 16); static_assert(sizeof(NetResolverInfo) == 384 && offsetof(NetResolverInfo, count) == 320 && offsetof(NetResolverInfo, count4) == 324); diff --git a/core/libs/prx/libSceNet/include/Net.hpp b/core/libs/prx/libSceNet/include/Net.hpp new file mode 100644 index 0000000000..2e526b76a1 --- /dev/null +++ b/core/libs/prx/libSceNet/include/Net.hpp @@ -0,0 +1,406 @@ +#pragma once + +#include "SceTypes.hpp" + +struct NetRoutingRule { + std::int32_t protocol; + std::uint32_t firstAddress; + std::uint16_t firstPort; + std::uint16_t reserved; + std::uint32_t secondAddress; + std::uint16_t secondPort; + std::uint16_t flags; +}; + +struct NetIovec { + void* base; + std::uint64_t length; +}; + +struct NetResolverRecord { + std::uint32_t address; + std::uint8_t address6[12]; + std::int32_t family; + std::int32_t reserved[3]; +}; + +struct NetWlanInformationElement; +struct NetWlanWakeParameter; +struct NetWlanScanParameter; +struct NetWlanScanResult; +struct NetWlanAdhocScanParameter; +struct NetWlanInfraScanParameter; +struct NetWlanJoinResult; +struct NetDumpFilterParameter; +struct NetWlanAdhocParameter; +struct NetWlanWakeInfo; +struct NetWlanPspWakeInfo; +struct NetWlanPspWakeParameter; +struct NetWlanApParameter; +struct NetWlanDeviceInfo; +struct NetWlanAntennaParameter; +struct NetWlanRateParameter; +struct NetWlanDeviceConfiguration; +struct NetWlanRssiInfo; +struct NetDhcpInfo; +struct NetAutoIpInfo; +struct NetAddress6Info; + +struct NetDhcpOptionInfo { + std::uint32_t option; + std::uint32_t capacity; + void* data; + std::uint32_t size; + std::uint32_t reserved; +}; + +struct NetSockInfo6; +struct NetStatisticsInfo; +struct NetInterfaceStats; +struct NetRouteInfo; +struct NetDebugParameter; +struct NetArpInfo; +struct NetAppMemoryInfo; +struct NetSystemMemoryInfo; +struct NetBandwidthParameter; +struct NetDataTraffic; +struct NetEmulationParameter; +struct NetResolverConnection; +struct NetThreadParameter { + void (APS5_VABI *entry)(void*); + void* arg; + std::uint64_t reserved; + std::uint32_t flags; +}; +struct NetIpv4InterfaceAddress; +struct NetStatisticsInfoInternal; +struct NetInitializeParameter; +struct NetDhcpStartParameter; +struct NetAddress6StartParameter; + +struct NetDhcpdStartParameter { + std::uint32_t addresses[5]; + std::uint32_t maxClients; +}; + +struct NetPppoeStartParameter { + std::uint32_t dnsAddresses[2]; + char userName[128]; + char password[128]; + std::int32_t mtu; + std::uint32_t flags; +}; + +struct NetRoutingAddressParameter { + std::uint32_t address; + std::uint32_t mask; +}; + +struct NetRoutingServerParameter { + std::int32_t count; + std::uint32_t localAddresses[2]; + std::uint32_t remoteAddresses[2]; +}; + +struct NetRoutingRuleParameter { + std::int32_t count; + const NetRoutingRule* rules; +}; + +struct NetInfoDumpParameter { + std::uint32_t flags; + std::uint32_t intervalSeconds; + char path[64]; +}; + +struct NetInterfaceInfo; +struct NetInterfaceStatistics; + +struct NetResolverConnectOption { + std::int32_t connectionTimeout; + std::int32_t resolverTimeout; + std::int32_t resolverRetryCount; + std::uint32_t reserved; +}; + +struct NetSyncObject { + void* mutex; + void* condition; + std::uint32_t signals; + std::uint32_t reserved; +}; + +struct NetIpv6Address { + std::uint8_t bytes[16]; +}; + +struct NetDnsInfo { + std::uint32_t primaryAddress; + std::uint32_t secondaryAddress; +}; + +struct NetDns6Info { + NetIpv6Address primaryAddress; + NetIpv6Address secondaryAddress; +}; + +struct NetIpv6InterfaceAddress { + NetIpv6Address address; + std::uint8_t prefixLength; + std::uint8_t reserved[3]; +}; + +struct NetMemoryPoolStats { + std::size_t pool_size; + std::size_t max_inuse_size; + std::size_t current_inuse_size; +}; + +struct NetMsghdr { + void* name; + std::uint32_t name_length; + NetIovec* iov; + int iov_length; + void* control; + std::uint32_t control_length; + int flags; +}; + +struct NetResolverInfo { + NetResolverRecord records[10]; + std::int32_t count; + std::int32_t count4; + std::int32_t reserved[14]; +}; + +using NetAddressCallback = void (APS5_VABI *)(void* userArg, std::int32_t event, std::int32_t error); + +using NetEventCallback = std::uint64_t (APS5_VABI*)(std::uint32_t interfaceId, std::uint64_t events, void* userData, void* waitData); + +extern "C" { + +int* APS5_VABI sceNetErrnoLoc(void); +int APS5_VABI sceNetShowNetstat(void); +int APS5_VABI sceNetInit_nid_postfix(void); +int APS5_VABI sceNetTerm(void); +int APS5_VABI sceNetPoolCreate(const char* name, int size, int flags); +int APS5_VABI sceNetPoolDestroy(int memid); +int APS5_VABI sceNetSocket(const char* name, int family, int type, int protocol); +int APS5_VABI sceNetSocketClose(int s); +int APS5_VABI sceNetSocketAbort(int s, int flags); +int APS5_VABI sceNetBind_nid_postfix(int s, const void* addr, uint32_t addrlen); +int APS5_VABI sceNetListen(int s, int backlog); +int APS5_VABI sceNetAccept(int s, void* addr, uint32_t* addrlen); +int APS5_VABI sceNetConnect(int s, const void* addr, uint32_t addrlen); +int64_t APS5_VABI sceNetRecv(int s, void* buf, size_t len, int flags); +int64_t APS5_VABI sceNetRecvfrom(int s, void* buf, size_t len, int flags, void* from, uint32_t* fromlen); +int64_t APS5_VABI sceNetSend(int s, const void* buf, size_t len, int flags); +int64_t APS5_VABI sceNetSendto(int s, const void* buf, size_t len, int flags, const void* to, uint32_t tolen); +int64_t APS5_VABI sceNetSendmsg(int s, const NetMsghdr* msg, int flags); +int64_t APS5_VABI sceNetRecvmsg(int s, NetMsghdr* msg, int flags); +int APS5_VABI sceNetShutdown(int s, int how); +int APS5_VABI sceNetSetsockopt(int s, int level, int optname, const void* optval, uint32_t optlen); +int APS5_VABI sceNetGetsockopt(int s, int level, int optname, void* optval, uint32_t* optlen); +int APS5_VABI sceNetGetsockname(int s, void* addr, uint32_t* addrlen); +int APS5_VABI sceNetGetpeername(int s, void* addr, uint32_t* addrlen); +int APS5_VABI sceNetGetSockInfo(int s, void* info, int n, int flags); +int APS5_VABI sceNetEpollCreate(const char* name, int flags); +int APS5_VABI sceNetShowNetstatWithMemory(int memid); +int APS5_VABI sceNetGetMemoryPoolStats(int memid, NetMemoryPoolStats* stats); +int APS5_VABI sceNetEpollDestroy(int eid); +int APS5_VABI sceNetEpollAbort(int eid, int flags); +int APS5_VABI sceNetEpollControl(int eid, int op, int id, const NetEpollEvent* event); +int APS5_VABI sceNetEpollWait(int eid, NetEpollEvent* events, int maxevents, int timeout); +uint32_t APS5_VABI sceNetHtonl_nid_postfix(uint32_t host32); +uint16_t APS5_VABI sceNetHtons_nid_postfix(uint16_t host16); +uint64_t APS5_VABI sceNetHtonll(std::uint64_t host64); +uint64_t APS5_VABI sceNetNtohll(std::uint64_t net64); +uint32_t APS5_VABI sceNetNtohl_nid_postfix(uint32_t net32); +uint16_t APS5_VABI sceNetNtohs_nid_postfix(uint16_t net16); +int APS5_VABI sceNetInetPton(int af, const char* src, void* dst); +const char* APS5_VABI sceNetInetNtop(int af, const void* src, char* dst, uint32_t size); +int APS5_VABI sceNetEtherNtostr(const NetEtherAddr* n, char* str, size_t len); +int APS5_VABI sceNetEtherStrton(const char* text, NetEtherAddr* address); +int APS5_VABI sceNetGetMacAddress(NetEtherAddr* addr, int flags); +int APS5_VABI sceNetResolverCreate(const char* name, int memid, int flags); +int APS5_VABI sceNetResolverDestroy(int rid); +int APS5_VABI sceNetResolverStartNtoa(int rid, const char* hostname, void* addr, int timeout, int retry, int flags); +int APS5_VABI sceNetResolverStartNtoa6(int rid, const char* hostname, void* addr, int timeout, int retry, int flags); +int APS5_VABI sceNetResolverStartNtoaMultipleRecords(int rid, const char* hostname, NetResolverInfo* info, int timeout, int retry, int flags); +int APS5_VABI sceNetResolverStartNtoaMultipleRecordsEx(int rid, const char* hostname, NetResolverInfo* info, int timeout, int retry, int flags); +int APS5_VABI sceNetResolverStartAton(int rid, const void* addr, char* hostname, int len, int timeout, int retry, int flags); +int APS5_VABI sceNetResolverStartAton6(int rid, const void* addr, char* hostname, int len, int timeout, int retry, int flags); +int APS5_VABI sceNetResolverGetError(int rid, int* status); +int APS5_VABI sceNetResolverAbort(int rid, int flags); +int APS5_VABI sceNetShowIfconfig(); +int APS5_VABI sceNetClearDnsCache(int flags); +int APS5_VABI sceNetGetStatisticsInfo(NetStatisticsInfo* info, std::uint32_t flags); +int APS5_VABI sceNetGetInterfaceStats(NetInterfaceStats* stats, std::uint32_t flags); +int APS5_VABI sceNetSetDnsInfo(const NetDnsInfo* info, std::uint32_t flags); +int APS5_VABI sceNetShowIfconfigWithMemory(std::int32_t poolId); +int APS5_VABI sceNetShowPolicy(void); +int APS5_VABI sceNetShowPolicyWithMemory(std::int32_t poolId); +int APS5_VABI sceNetShowRoute(void); +int APS5_VABI sceNetShowRouteWithMemory(std::int32_t poolId); +int APS5_VABI sceNetResolverConnectAbort(NetResolverConnection* connection, std::uint32_t flags); +int APS5_VABI sceNetResolverConnectCreate(const char* name, std::int32_t socketType, NetResolverConnection* connection, std::uint32_t flags); +int APS5_VABI sceNetResolverConnect(NetResolverConnection* connection, const char* hostname, std::uint16_t port, const NetResolverConnectOption* option); +int APS5_VABI sceNetResolverConnectDestroy(NetResolverConnection* connection); +int APS5_VABI sceNetGetSockInfo6(std::int32_t socket, NetSockInfo6* info, std::uint32_t capacity, std::uint32_t flags); +int APS5_VABI sceNetSetDns6Info(const NetDns6Info* info, std::uint32_t flags); +int APS5_VABI sceNetShowRoute6(void); +int APS5_VABI sceNetShowRoute6WithMemory(std::int32_t poolId); +NetRouteInfo* APS5_VABI sceNetAllocateAllRouteInfo(std::int32_t interfaceId, std::int32_t* count); +NetRouteInfo* APS5_VABI sceNetAllocateAllRouteInfo6(std::int32_t interfaceId, std::int32_t* count); +int APS5_VABI sceNetControl(std::uint32_t interfaceId, std::int32_t interfaceIndex, std::uint32_t command, void* data, std::uint32_t dataSize); +int APS5_VABI sceNetDbgInit(NetDebugParameter* parameter, std::uint32_t flags); +int APS5_VABI sceNetEventCallbackCreate(std::uint32_t interfaceId, NetEventCallback callback, void* userData, std::uint32_t flags); +int APS5_VABI sceNetEventCallbackDestroy(std::uint32_t interfaceId, std::uint32_t flags); +int APS5_VABI sceNetEventCallbackGetError(std::uint32_t interfaceId, std::int32_t* error, std::uint32_t flags); +int APS5_VABI sceNetEventCallbackWaitCB(std::int32_t timeout, void* waitData, std::uint32_t flags); +int APS5_VABI sceNetFreeAllRouteInfo(void* routes); +int APS5_VABI sceNetGetArpInfo(NetArpInfo* info, std::uint32_t flags); +int APS5_VABI sceNetGetAppMemInfo(NetAppMemoryInfo* info, std::uint32_t flags); +int APS5_VABI sceNetGetDnsInfo(NetDnsInfo* info, std::uint32_t flags); +int APS5_VABI sceNetGetIfList(std::int32_t interfaceId, NetInterfaceInfo* interfaces, std::uint32_t capacity); +int APS5_VABI sceNetGetIfListEx(std::int32_t interfaceId, NetInterfaceInfo* interfaces, std::uint32_t capacity, std::uint32_t flags); +int APS5_VABI sceNetGetIfListOnce(std::int32_t interfaceId, NetInterfaceStatistics* statistics, std::uint32_t count); +const char* APS5_VABI sceNetGetIfName(std::uint32_t index); +int APS5_VABI sceNetGetIfnameNumList(std::uint32_t* interfaceIds, std::int32_t capacity, std::uint32_t flags); +int APS5_VABI sceNetGetNameToIndex(std::uint32_t interfaceId); +int APS5_VABI sceNetGetRandom(std::uint32_t* output); +int APS5_VABI sceNetGetRouteInfo(std::int32_t family, NetRouteInfo* routes, std::int32_t capacity, std::uint8_t flags); +int APS5_VABI sceNetGetsockoptEx(int socketId, int level, int option, void* value, std::uint32_t* valueSize); +void APS5_VABI sceNetGetSystemTime(std::uint64_t* output); +int APS5_VABI sceNetGetSystemMemInfo(NetSystemMemoryInfo* info, std::uint32_t flags); +int APS5_VABI sceNetInitParam(const NetInitializeParameter* parameter); +int APS5_VABI sceNetInetPtonEx(int af, const char* src, void* dst, int); +int APS5_VABI sceNetIoctl(int socketId, std::uint32_t command, void* argument); +void* APS5_VABI sceNetMemoryAllocate(std::int32_t size, int flags); +void APS5_VABI sceNetMemoryFree(void* memory); +int APS5_VABI sceNetSetDnsInfoToKernel(const NetDnsInfo* info, std::uint32_t flags); +int APS5_VABI sceNetSetsockoptEx(int socketId, int level, int option, const void* value, std::uint32_t valueSize); +int APS5_VABI sceNetSocketInternal(const char* name, int domain, int type, int protocol); +int APS5_VABI sceNetSyncCreate(NetSyncObject* sync, std::uint32_t signals, const char* name); +int APS5_VABI sceNetSyncDestroy(NetSyncObject* sync); +NetSyncObject* APS5_VABI sceNetSyncGet(std::uint32_t index); +int APS5_VABI sceNetSyncSignal(NetSyncObject* sync, std::uint32_t signals); +int APS5_VABI sceNetSyncWait(NetSyncObject* sync, std::uint32_t* timeout); +int APS5_VABI sceNetSysctl(const int* name, std::uint32_t nameLength, void* oldValue, std::size_t* oldSize, const void* newValue, std::size_t newSize); +int APS5_VABI sceNetThreadCreate(Pthread* thread, const NetThreadParameter* parameter, const char* name); +int APS5_VABI sceNetThreadExit(void); +int APS5_VABI sceNetThreadJoin(void* thread); +int APS5_VABI sceNetUsleep(int microseconds); +int APS5_VABI sceNetShowIfconfigForBuffer(char* buffer, std::int32_t bufferSize, std::int32_t poolId); +int APS5_VABI sceNetShowRouteForBuffer(char* buffer, std::int32_t bufferSize, std::int32_t poolId); +int APS5_VABI sceNetShowNetstatForBuffer(char* buffer, std::int32_t bufferSize, std::int32_t poolId); +int APS5_VABI sceNetShowNetstatEx(std::uint32_t flags); +int APS5_VABI sceNetShowNetstatExForBuffer(char* buffer, std::int32_t bufferSize, std::int32_t poolId, std::uint32_t flags); +const char* APS5_VABI sceNetInetNtopWithScopeId(std::int32_t family, const void* address, char* text, std::uint32_t size, std::uint32_t scopeId); +int APS5_VABI sceNetInetPtonWithScopeId(std::int32_t family, const char* text, void* address, std::uint32_t* scopeId); +int APS5_VABI sceNetGetDns6Info(NetDns6Info* info, std::uint32_t flags); +int APS5_VABI sceNetSetDns6InfoToKernel(const NetDns6Info* info, std::uint32_t flags); +int APS5_VABI sceNetShowRoute6ForBuffer(char* buffer, std::int32_t bufferSize, std::int32_t poolId); +int APS5_VABI sceNetConfigGetIfFlags(std::uint32_t interfaceId, std::uint32_t* flags); +int APS5_VABI sceNetConfigSetIfFlags(std::uint32_t interfaceId, std::uint32_t flags); +int APS5_VABI sceNetConfigUnsetIfFlags(std::uint32_t interfaceId, std::uint32_t flags); +int APS5_VABI sceNetConfigDelIfaddr(int interfaceId); +int APS5_VABI sceNetConfigDownInterface(int interfaceId); +int APS5_VABI sceNetConfigSetDefaultRoute(const std::uint32_t* gateway); +int APS5_VABI sceNetConfigSetDefaultRouteDev(const std::uint32_t* gateway); +int APS5_VABI sceNetConfigSetIfaddr(int interfaceId, const std::uint32_t* address, const std::uint32_t* broadcastAddress, const std::uint32_t* netmask); +int APS5_VABI sceNetConfigSetIfLinkLocalAddr6(std::uint32_t interfaceId); +int APS5_VABI sceNetConfigUpInterface(int interfaceId); +int APS5_VABI sceNetConfigUpInterfaceWithFlags(std::uint32_t interfaceId, std::uint32_t flags); +int APS5_VABI sceNetConfigCleanUpAllInterfaces(void); +int APS5_VABI sceNetConfigFlushRoute(std::uint32_t interfaceId); +int APS5_VABI sceNetConfigFlushRoute6(std::uint32_t interfaceId); +int APS5_VABI sceNetConfigAddIfaddr(int interfaceId, const std::uint32_t* address, const std::uint32_t* broadcastAddress, const std::uint32_t* netmask); +int APS5_VABI sceNetConfigGetIfaddr(std::int32_t interfaceId, NetIpv4InterfaceAddress* addresses, std::int32_t capacity); +int APS5_VABI sceNetConfigSetIfmtu(std::uint32_t interfaceId, int mtu); +int APS5_VABI sceNetConfigAddArp(const NetEtherAddr* etherAddress, const std::uint32_t* address); +int APS5_VABI sceNetConfigAddArpWithInterface(int interfaceId, const NetEtherAddr* etherAddress, const std::uint32_t* address); +int APS5_VABI sceNetConfigAddMRoute(const std::uint32_t* address); +int APS5_VABI sceNetConfigAddRoute(const std::uint32_t* destination, const std::uint32_t* gateway, const std::uint32_t* netmask, int hostRoute); +int APS5_VABI sceNetConfigAddRouteWithInterface(int interfaceId, const std::uint32_t* destination, const std::uint32_t* gateway, const std::uint32_t* netmask, int hostRoute); +int APS5_VABI sceNetConfigDelArp(const NetEtherAddr* etherAddress, const std::uint32_t* address); +int APS5_VABI sceNetConfigDelArpWithInterface(int interfaceId, const NetEtherAddr* etherAddress, const std::uint32_t* address); +int APS5_VABI sceNetConfigDelDefaultRoute(void); +int APS5_VABI sceNetConfigDelDefaultRouteDev(void); +int APS5_VABI sceNetConfigDelMRoute(const std::uint32_t* address); +int APS5_VABI sceNetConfigDelRoute(const std::uint32_t* destination, const std::uint32_t* gateway, const std::uint32_t* netmask); +int APS5_VABI sceNetConfigGetDefaultRoute(std::uint32_t* gateway); +int APS5_VABI sceNetDhcpGetAutoipInfo(std::int32_t interfaceId, NetAutoIpInfo* parameter); +int APS5_VABI sceNetDhcpGetInfo(std::int32_t interfaceId, NetDhcpInfo* parameter); +int APS5_VABI sceNetDhcpGetInfoEx(std::int32_t interfaceId, std::int32_t type, NetDhcpOptionInfo* info, std::uint32_t size); +int APS5_VABI sceNetDhcpStart(std::uint32_t interfaceId, NetAddressCallback callback, void* userArg, std::int32_t threadParameter1, std::int32_t threadParameter2, NetDhcpStartParameter* parameter); +int APS5_VABI sceNetDhcpStop(int interfaceId); +int APS5_VABI sceNetConfigAddIfaddr6(int interfaceId, const NetIpv6Address* address, std::uint8_t prefixLength); +int APS5_VABI sceNetConfigDelIfaddr6(int interfaceId, const NetIpv6Address* address); +int APS5_VABI sceNetConfigDelDefaultRoute6(void); +int APS5_VABI sceNetConfigSetIfaddr6(int interfaceId, const NetIpv6Address* address, std::uint8_t prefixLength); +int APS5_VABI sceNetConfigSetIfaddr6WithFlags(int interfaceId, const NetIpv6Address* address, std::uint8_t prefixLength, std::uint32_t flags); +int APS5_VABI sceNetConfigSetDefaultRoute6(int interfaceId, const NetIpv6Address* gateway); +int APS5_VABI sceNetConfigGetIfaddr6(int interfaceId, NetIpv6InterfaceAddress* addresses, std::uint32_t count); +int APS5_VABI sceNetConfigGetDefaultRoute6(NetIpv6Address* gateway); +int APS5_VABI sceNetConfigDelRoute6(const NetIpv6Address* destination, std::uint8_t prefixLength); +int APS5_VABI sceNetConfigAddRoute6(const NetIpv6Address* destination, const NetIpv6Address* gateway, std::uint8_t prefixLength); +int APS5_VABI sceNetAddrConfig6Start(std::uint32_t interfaceId, NetAddressCallback callback, void* userArg, std::int32_t threadParameter1, std::int32_t threadParameter2, const NetAddress6StartParameter* parameter); +int APS5_VABI sceNetAddrConfig6Stop(int interfaceId); +int APS5_VABI sceNetAddrConfig6GetInfo(std::int32_t interfaceId, NetAddress6Info* parameter); +int APS5_VABI sceNetInfoDumpStart(std::int32_t threadParameter1, std::int32_t threadParameter2, const NetInfoDumpParameter* parameter); +int APS5_VABI sceNetInfoDumpStop(void); +int APS5_VABI sceNetDhcpdStart(std::uint32_t interfaceId, NetAddressCallback callback, void* userArg, std::int32_t threadParameter1, std::int32_t threadParameter2, const NetDhcpdStartParameter* parameter); +int APS5_VABI sceNetDhcpdStop(int interfaceId); +int APS5_VABI sceNetDuplicateIpStart(std::int32_t interfaceId, NetAddressCallback callback, void* userArg, std::int32_t threadParameter1, std::int32_t threadParameter2); +int APS5_VABI sceNetDuplicateIpStop(int interfaceId); +int APS5_VABI sceNetConfigWlanAdhocClearWakeOnWlan(std::uint32_t interfaceId); +int APS5_VABI sceNetConfigWlanAdhocCreate(std::int32_t interfaceId, NetWlanAdhocParameter* parameter); +int APS5_VABI sceNetConfigWlanAdhocGetWakeOnWlanInfo(std::int32_t interfaceId, NetWlanWakeInfo* parameter); +int APS5_VABI sceNetConfigWlanAdhocJoin(std::int32_t interfaceId, NetWlanAdhocParameter* parameter); +int APS5_VABI sceNetConfigWlanAdhocLeave(int interfaceId); +int APS5_VABI sceNetConfigWlanAdhocPspEmuClearWakeOnWlan(std::uint32_t interfaceId); +int APS5_VABI sceNetConfigWlanAdhocPspEmuGetWakeOnWlanInfo(std::int32_t interfaceId, NetWlanPspWakeInfo* parameter); +int APS5_VABI sceNetConfigWlanAdhocPspEmuSetWakeOnWlan(std::int32_t interfaceId, NetWlanPspWakeParameter* parameter); +int APS5_VABI sceNetConfigWlanAdhocScanJoin(std::int32_t interfaceId, const NetWlanAdhocScanParameter* parameter, void* buffer, std::size_t bufferSize, NetWlanJoinResult** result); +int APS5_VABI sceNetConfigWlanAdhocSetExtInfoElement(std::int32_t interfaceId, NetWlanInformationElement* parameter, std::int32_t size); +int APS5_VABI sceNetConfigWlanAdhocSetWakeOnWlan(std::int32_t interfaceId, NetWlanWakeParameter* parameter, std::size_t size); +int APS5_VABI sceNetConfigWlanApStart(std::int32_t interfaceId, NetWlanApParameter* parameter); +int APS5_VABI sceNetConfigWlanApStop(int interfaceId); +int APS5_VABI sceNetConfigWlanBackgroundScanQuery(std::int32_t interfaceId, void* buffer, std::int32_t size, NetWlanScanResult** results, std::size_t* count); +int APS5_VABI sceNetConfigWlanBackgroundScanStart(std::int32_t interfaceId, NetWlanScanParameter* parameter, std::uint32_t size); +int APS5_VABI sceNetConfigWlanBackgroundScanStop(int interfaceId); +int APS5_VABI sceNetConfigWlanDiagGetDeviceInfo(std::int32_t interfaceId, NetWlanDeviceInfo* parameter); +int APS5_VABI sceNetConfigWlanDiagSetAntenna(std::int32_t interfaceId, NetWlanAntennaParameter* parameter); +int APS5_VABI sceNetConfigWlanDiagSetTxFixedRate(std::int32_t interfaceId, NetWlanRateParameter* parameter); +int APS5_VABI sceNetConfigWlanGetDeviceConfig(std::int32_t interfaceId, NetWlanDeviceConfiguration* parameter); +int APS5_VABI sceNetConfigWlanInfraGetRssiInfo(std::int32_t interfaceId, NetWlanRssiInfo* parameter); +int APS5_VABI sceNetConfigWlanInfraLeave(int interfaceId); +int APS5_VABI sceNetConfigWlanInfraScanJoin(std::int32_t interfaceId, const NetWlanInfraScanParameter* parameter, void* buffer, std::size_t bufferSize, NetWlanJoinResult** result); +int APS5_VABI sceNetConfigWlanScan(std::int32_t interfaceId, const NetWlanScanParameter* parameter, std::size_t parameterSize, void* buffer, std::size_t bufferSize, NetWlanScanResult** results, std::size_t* count); +int APS5_VABI sceNetConfigWlanSetDeviceConfig(std::int32_t interfaceId, NetWlanDeviceConfiguration* parameter); +int APS5_VABI sceNetConfigEtherGetLinkMode(std::uint32_t interfaceId, int* mode); +int APS5_VABI sceNetConfigEtherPostPlugInOutEvent(std::uint32_t interfaceId); +int APS5_VABI sceNetConfigEtherSetLinkMode(std::uint32_t interfaceId, int mode); +int APS5_VABI sceNetPppoeStart(std::uint32_t interfaceId, std::int32_t pppoeInterfaceId, NetAddressCallback callback, void* userArg, std::int32_t threadParameter1, std::int32_t threadParameter2, const NetPppoeStartParameter* parameter); +int APS5_VABI sceNetPppoeStop(void); +int APS5_VABI sceNetBandwidthControlSetDefaultParam(const NetBandwidthParameter* parameter, std::uint32_t flags); +int APS5_VABI sceNetBandwidthControlGetDefaultParam(NetBandwidthParameter* parameter, std::uint32_t flags); +int APS5_VABI sceNetBandwidthControlGetDataTraffic(std::int32_t interfaceId, NetDataTraffic* traffic, std::uint32_t flags); +int APS5_VABI sceNetConfigSetDefaultScope(std::uint32_t interfaceId, const char* interfaceName, std::int32_t scopeId); +int APS5_VABI sceNetConfigRoutingStart(std::uint32_t firstInterfaceId, std::uint32_t secondInterfaceId, const NetRoutingAddressParameter* addressParameter, NetRoutingServerParameter* serverParameter, const NetRoutingRuleParameter* ruleParameter); +int APS5_VABI sceNetConfigRoutingStop(void); +int APS5_VABI sceNetConfigRoutingShowRoutingConfig(void); +int APS5_VABI sceNetConfigRoutingShowtCtlVar(const char* name); +int APS5_VABI sceNetGetStatisticsInfoInternal(NetStatisticsInfoInternal* info); +int APS5_VABI sceNetDumpAbort(std::int32_t dumpId, std::uint32_t flags); +int APS5_VABI sceNetDumpCreate(const char* name, std::int32_t bufferSize, std::uint32_t flags); +int APS5_VABI sceNetDumpSetFilterParam(std::int32_t socket, const NetDumpFilterParameter* parameter); +int APS5_VABI sceNetDumpDestroy(std::int32_t dumpId); +int APS5_VABI sceNetDumpRead(std::int32_t dumpId, void* buffer, std::int32_t bufferSize, std::uint32_t* flags); +int APS5_VABI sceNetEmulationDebugSettingsSet(const NetEmulationParameter* parameter, std::uint32_t flags); +int APS5_VABI sceNetEmulationDebugSettingsGet(NetEmulationParameter* parameter, std::uint32_t flags); +int APS5_VABI sceNetEmulationSet(const NetEmulationParameter* parameter, std::uint32_t flags); +int APS5_VABI sceNetEmulationGet(NetEmulationParameter* parameter, std::uint32_t flags); + +} diff --git a/core/libs/prx/libSceNet/libSceNet.hpp b/core/libs/prx/libSceNet/libSceNet.hpp new file mode 100644 index 0000000000..9f4c162ed2 --- /dev/null +++ b/core/libs/prx/libSceNet/libSceNet.hpp @@ -0,0 +1,3 @@ +#pragma once + +#include "prx/libSceNet/include/Net.hpp" diff --git a/core/libs/prx/libSceNetCtl/Export.cpp b/core/libs/prx/libSceNetCtl/Export.cpp index c8b0e482f3..d3e153e34a 100644 --- a/core/libs/prx/libSceNetCtl/Export.cpp +++ b/core/libs/prx/libSceNetCtl/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceNetCtl/include/NetCtl.hpp" #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #include @@ -35,16 +36,6 @@ #include // Network-control state reflects host interface addressing, not PSN sign-in status. -union NetCtlInfoV6; -struct NetCtlConnectionConfiguration; -struct NetCtlScanOptions; -struct NetCtlScanBssidList; -struct NetCtlScanInfo; -struct NetCtlNatInfoInternal; -struct NetCtlBandwidthInfo; -struct NetCtlNetEvConfiguration; -struct NetBweInfo; -struct NetCtlWifiInfo; static constexpr int SCE_NET_CTL_ERROR_NOT_INITIALIZED = static_cast(0x80412101); static constexpr int SCE_NET_CTL_ERROR_ID_NOT_FOUND = static_cast(0x80412104); diff --git a/core/libs/prx/libSceNetCtl/include/NetCtl.hpp b/core/libs/prx/libSceNetCtl/include/NetCtl.hpp new file mode 100644 index 0000000000..f2fa735b00 --- /dev/null +++ b/core/libs/prx/libSceNetCtl/include/NetCtl.hpp @@ -0,0 +1,104 @@ +#pragma once + +#include "SceTypes.hpp" + +union NetCtlInfoV6; +struct NetCtlConnectionConfiguration; +struct NetCtlScanOptions; +struct NetCtlScanBssidList; +struct NetCtlScanInfo; +struct NetCtlNatInfoInternal; +struct NetCtlBandwidthInfo; +struct NetCtlNetEvConfiguration; +struct NetBweInfo; +struct NetCtlWifiInfo; + +extern "C" { + +int APS5_VABI sceNetCtlCheckCallback(void); +int APS5_VABI sceNetCtlGetIfStat(NetCtlIfStat* stat); +int APS5_VABI sceNetCtlGetInfo(int code, NetCtlInfo* info); +int APS5_VABI sceNetCtlGetNatInfo(NetCtlNatInfo* info); +int APS5_VABI sceNetCtlGetResult(int event, int* result); +int APS5_VABI sceNetCtlGetState(int* state); +int APS5_VABI sceNetCtlGetStateV6(int* state); +int APS5_VABI sceNetCtlInit(void); +int APS5_VABI sceNetCtlRegisterCallback(NetCtlCallback func, void* arg, int* cid); +int APS5_VABI sceNetCtlRegisterCallbackV6(NetCtlCallback func, void* arg, int* cid); +int APS5_VABI sceNetCtlGetInfoV6(std::uint32_t code, NetCtlInfoV6* info); +void APS5_VABI sceNetCtlTerm(void); +int APS5_VABI sceNetCtlUnregisterCallback(int cid); +int APS5_VABI sceNetCtlUnregisterCallbackV6(int cid); +int APS5_VABI sceNetCtlRegisterCallbackForNpToolkit(NetCtlCallback callback, void* argument, int* callbackId); +int APS5_VABI sceNetCtlRegisterCallbackIpcInt(NetCtlCallback callback, void* argument, int* callbackId); +int APS5_VABI sceNetCtlRegisterCallbackForLibIpcInt(NetCtlCallback callback, void* argument, int* callbackId); +int APS5_VABI sceNetCtlUnregisterCallbackForNpToolkit(int callbackId); +int APS5_VABI sceNetCtlUnregisterCallbackIpcInt(int callbackId); +int APS5_VABI sceNetCtlUnregisterCallbackForLibIpcInt(int callbackId); +int APS5_VABI sceNetCtlCheckCallbackForNpToolkit(void); +int APS5_VABI sceNetCtlCheckCallbackForLibIpcInt(void); +int APS5_VABI sceNetCtlClearEventIpcInt(int event); +int APS5_VABI sceNetCtlClearEventForNpToolkit(int event); +int APS5_VABI sceNetCtlClearEventForLibIpcInt(int event); +int APS5_VABI sceNetCtlGetResultIpcInt(int event, int* result); +int APS5_VABI sceNetCtlGetStateIpcInt(int* state); +int APS5_VABI sceNetCtlGetState2IpcInt(int* state); +int APS5_VABI sceNetCtlGetInfoIpcInt(std::uint32_t code, NetCtlInfo* info); +int APS5_VABI sceNetCtlGetEtherLinkMode(int* mode); +int APS5_VABI sceNetCtlGetWifiType(int* type); +int APS5_VABI sceNetCtlConnectIpcInt(void); +int APS5_VABI sceNetCtlConnectWithRetryIpcInt(void); +int APS5_VABI sceNetCtlConnectConfIpcInt(const NetCtlConnectionConfiguration* configuration); +int APS5_VABI sceNetCtlDisconnectIpcInt(void); +int APS5_VABI sceNetCtlScanIpcInt(const char* const* ssids, std::uint32_t count, const NetCtlScanOptions* options); +int APS5_VABI sceNetCtlGetScanInfoBssidIpcInt(NetCtlScanBssidList* bssids, std::uint32_t capacity); +int APS5_VABI sceNetCtlGetScanInfoByBssidIpcInt(const std::uint8_t* bssid, NetCtlScanInfo* info, void* buffer, std::size_t* size); +int APS5_VABI sceNetCtlGetScanInfoForSsidScanIpcInt(NetCtlScanInfo* info, void* buffer, std::size_t* size); +int APS5_VABI sceNetCtlGetScanInfoBssidForSsidListScanIpcInt(NetCtlScanBssidList* bssids, std::uint32_t capacity); +int APS5_VABI sceNetCtlGetScanInfoForSsidListScanIpcInt(const std::uint8_t* bssid, NetCtlScanInfo* info, void* buffer, std::size_t* size); +int APS5_VABI sceNetCtlSetErrorNotificationEnabledIpcInt(int enabled); +int APS5_VABI sceNetCtlRegisterCallbackV6IpcInt(NetCtlCallback callback, void* argument, int* callbackId); +int APS5_VABI sceNetCtlUnregisterCallbackV6IpcInt(int callbackId); +int APS5_VABI sceNetCtlGetResultV6(int eventType, int* errorCode); +int APS5_VABI sceNetCtlGetResultV6IpcInt(int event, int* result); +int APS5_VABI sceNetCtlGetStateV6IpcInt(int* state); +int APS5_VABI sceNetCtlGetInfoV6IpcInt(std::uint32_t code, NetCtlInfoV6* info); +int APS5_VABI sceNetCtlGetNatInfoIpcInt(NetCtlNatInfoInternal* info); +int APS5_VABI sceNetCtlSetStunWithPaddingFlagIpcInt(void); +int APS5_VABI sceNetCtlUnsetStunWithPaddingFlagIpcInt(void); +int APS5_VABI sceNetCtlIsBandwidthManagementEnabledIpcInt(void); +int APS5_VABI sceNetCtlDisableBandwidthManagementIpcInt(void); +int APS5_VABI sceNetCtlEnableBandwidthManagementIpcInt(void); +int APS5_VABI sceNetCtlGetBandwidthInfoIpcInt(NetCtlBandwidthInfo* info); +int APS5_VABI sceNetCtlGetNetEvConfigInfoIpcInt(NetCtlNetEvConfiguration* configuration); +int APS5_VABI sceNetCtlGetConnectionElapsedTimeIpcInt(std::uint64_t* elapsedTime); +int APS5_VABI sceNetCtlApRpCheckCallback(void); +int APS5_VABI sceNetCtlApRpClearEvent(void); +int APS5_VABI sceNetCtlApRpRegisterCallback(void); +int APS5_VABI sceNetCtlApRpUnregisterCallback(void); +int APS5_VABI sceNetCtlApRpGetResult(void); +int APS5_VABI sceNetCtlApRpGetState(void); +int APS5_VABI sceNetCtlApRpGetInfo(void); +int APS5_VABI sceNetCtlApRpStart(void); +int APS5_VABI sceNetCtlApCpStart(void); +int APS5_VABI sceNetCtlApAppStartWithRetryPid(std::int32_t processId, const char* passcode); +int APS5_VABI sceNetCtlApAppStartWithRetry(const char* passcode); +int APS5_VABI sceNetCtlApRpStartWithRetry(void); +int APS5_VABI sceNetCtlApRpStartConf(void); +int APS5_VABI sceNetCtlApRpStop(void); +int APS5_VABI sceNetCtlApCpStop(void); +int APS5_VABI sceNetCtlApAppInitWpaKey(void); +int APS5_VABI sceNetCtlApAppInitWpaKeyForQa(std::uint8_t mode); +int APS5_VABI sceNetCtlApRestart(void); +int APS5_VABI sceNetBweCheckCallbackIpcInt(void); +int APS5_VABI sceNetBweClearEventIpcInt(int event); +int APS5_VABI sceNetBweRegisterCallbackIpcInt(NetCtlCallback callback, void* argument, int* callbackId); +int APS5_VABI sceNetBweUnregisterCallbackIpcInt(int callbackId); +int APS5_VABI sceNetBweGetInfoIpcInt(NetBweInfo* info); +int APS5_VABI sceNetBweStartInternetConnectionTestIpcInt(void); +int APS5_VABI sceNetBweFinishInternetConnectionTestIpcInt(void); +int APS5_VABI sceNetBweStartInternetConnectionTestBandwidthTestIpcInt(void); +int APS5_VABI sceNetBweSetInternetConnectionTestResultIpcInt(std::int32_t firstResult, std::int32_t secondResult); +int APS5_VABI sceNetCtlGetWifiInfoIpcInt(NetCtlWifiInfo* info); + +} diff --git a/core/libs/prx/libSceNetCtl/libSceNetCtl.hpp b/core/libs/prx/libSceNetCtl/libSceNetCtl.hpp new file mode 100644 index 0000000000..d60a79d958 --- /dev/null +++ b/core/libs/prx/libSceNetCtl/libSceNetCtl.hpp @@ -0,0 +1,3 @@ +#pragma once + +#include "prx/libSceNetCtl/include/NetCtl.hpp" diff --git a/core/libs/prx/libSceNpAuthAuthorizedAppDialog/Export.cpp b/core/libs/prx/libSceNpAuthAuthorizedAppDialog/Export.cpp index 9244dedeea..c007c3e970 100644 --- a/core/libs/prx/libSceNpAuthAuthorizedAppDialog/Export.cpp +++ b/core/libs/prx/libSceNpAuthAuthorizedAppDialog/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceUserService/UserService.hpp" #include #include #include @@ -6,8 +7,6 @@ #include "prx/libSceCommonDialog/CommonDialog.hpp" #include "prx/libc/include/General.hpp" -extern "C" int APS5_VABI sceUserServiceGetLoginUserIdList(UserServiceLoginUserIdList* users); - namespace { constexpr int COMMON_DIALOG_STATUS_NONE = 0; diff --git a/core/libs/prx/libSceNpCommerce/Export.cpp b/core/libs/prx/libSceNpCommerce/Export.cpp index 3a8ee95c0d..7ec6913b2c 100644 --- a/core/libs/prx/libSceNpCommerce/Export.cpp +++ b/core/libs/prx/libSceNpCommerce/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceUserService/UserService.hpp" #include #include #include @@ -7,8 +8,6 @@ #include "prx/libSceCommonDialog/CommonDialog.hpp" #include "prx/libc/include/General.hpp" -extern "C" int APS5_VABI sceUserServiceGetLoginUserIdList(UserServiceLoginUserIdList* users); - namespace { constexpr int COMMON_DIALOG_STATUS_NONE = 0; diff --git a/core/libs/prx/libSceNpCommon/Runtime.cpp b/core/libs/prx/libSceNpCommon/Runtime.cpp index 965506fa51..b8eb111a81 100644 --- a/core/libs/prx/libSceNpCommon/Runtime.cpp +++ b/core/libs/prx/libSceNpCommon/Runtime.cpp @@ -1,3 +1,5 @@ +#include "prx/libSceUserService/UserService.hpp" +#include "prx/libSceRtc/include/Rtc.hpp" #include #include #include @@ -43,13 +45,10 @@ int APS5_VABI sceKernelClearEventFlag(KernelEventFlag ef, uint64_t bit_pattern); int APS5_VABI sceKernelPollEventFlag(KernelEventFlag ef, uint64_t bit_pattern, uint32_t wait_mode, uint64_t* result_pat); int APS5_VABI sceKernelCancelEventFlag(KernelEventFlag ef, uint64_t set_pattern, int* num_wait_threads); int APS5_VABI getpid_nid_postfix(void); -int APS5_VABI sceRtcParseRFC3339(RtcTick* utc, const char* date_time); -int APS5_VABI sceRtcFormatRFC3339(char* date_time, const RtcTick* utc, int time_zone_minutes); -int APS5_VABI sceRtcSetTick(RtcDateTime* time, const RtcTick* tick); -int APS5_VABI sceRtcGetTime_t(const RtcDateTime* time, int64_t* seconds); + int APS5_VABI sceKernelGetSystemSwVersion_nid_postfix(void* version); int APS5_VABI sceKernelClockGettime(KernelClockid clock_id, KernelTimespec* tp); -int APS5_VABI sceUserServiceGetRegisteredUserIdList(UserServiceRegisteredUserIdList* user_id_list); + int32_t APS5_VABI sceKernelMapNamedFlexibleMemory(void** addr_in_out, size_t len, int prot, int flags, const char* name); int APS5_VABI sceKernelMunmap(uint64_t vaddr, size_t len); void* APS5_VABI sceLibcMspaceCreate_nid_postfix(const char* name, void* base, std::size_t size, unsigned flags); @@ -211,7 +210,6 @@ int BcdPair(std::uint32_t value, int shift) { return static_cast((value >> (shift + 4)) & 0xF) * 10 + static_cast((value >> shift) & 0xF); } - constexpr int NP_ERROR_OUT_OF_MEMORY = static_cast(0x80550005); constexpr int NP_ERROR_NULL_OBJECT = static_cast(0x80558005); constexpr int NP_ERROR_HEAP_CREATE = static_cast(0x8055800A); @@ -372,19 +370,6 @@ int APS5_VABI sceNpAtomicDec32(std::int32_t* value) { return std::atomic_ref(*value).fetch_sub(1); } - - - - - - - - - - - - - int APS5_VABI sceNpCondSignalAll(PthreadCond* cond) { return scePthreadCondBroadcast(cond); } @@ -397,7 +382,6 @@ int APS5_VABI sceNpCondWait(PthreadCond* cond, PthreadMutex* mutex) { return scePthreadCondWait(cond, mutex); } - int APS5_VABI sceNpLwCondInit(PthreadCond* cond, const char* name) { return InitCond(cond, name); } @@ -491,7 +475,6 @@ int APS5_VABI sceNpCreateThread(Pthread* thread, PthreadEntry entry, void* arg, return result; } - int APS5_VABI sceNpThreadGetId(Pthread* thread) { if (thread == nullptr) return NP_ERROR_INVALID_ARGUMENT; *thread = scePthreadSelf(); @@ -628,13 +611,11 @@ int APS5_VABI sceNpFreeKernelMemory(NpKernelMemory* memory) { return 0; } - void APS5_VABI sceNpGetSdkVersionUInt(std::uint32_t* version) { const std::uint32_t value = SystemVersion(); if (version != nullptr) *version = value; } - int APS5_VABI sceNpRtcConvertToPosixTime(const RtcTick* tick, std::int64_t* seconds) { if (tick->tick == 0) return NP_ERROR_INVALID_ARGUMENT; RtcDateTime time {}; @@ -778,7 +759,6 @@ std::uint32_t APS5_VABI sceNpGetRandom(void) { return static_cast(g_random()); } - int APS5_VABI sceNpUtilCmpAccountId(std::uint64_t left, std::uint64_t right) { return left != right ? 1 : 0; } @@ -799,7 +779,6 @@ bool APS5_VABI sceNpIntIsOnlineIdString(const char* text) { return text != nullptr && IsOnlineIdText(text); } - int APS5_VABI sceNpUtilGetNpLanguageCode(int language, char* code) { const NpLanguageCodes* codes = FindLanguageCodes(language); if (codes == nullptr || code == nullptr) return NP_ERROR_INVALID_ARGUMENT_UTIL; diff --git a/core/libs/prx/libScePad/Export.cpp b/core/libs/prx/libScePad/Export.cpp index 15cc1a4805..1a8ccb28a8 100644 --- a/core/libs/prx/libScePad/Export.cpp +++ b/core/libs/prx/libScePad/Export.cpp @@ -12,40 +12,6 @@ #include "prx/libScePad/include/Pad.hpp" #include "prx/libScePad/include/PadState.hpp" -struct PadStickTuningParameter; -struct PadTriggerTuningParameter; -struct PadHuntProfile; -struct PadLeonardoProfile; -struct PadProfileInfo; -struct PadActiveProfileInfo; -struct PadSavedSettingInfo; -struct PadUsbDetectionState; -struct PadVrUsbConnectionStatus; -struct PadDeviceInfo; -struct PadLicenseControllerInformation; -struct PadRemoteSetting; -struct PadVirtualTriggerSetting; -struct PadProcessFocusParameter; -struct PadDataExtended; -struct PadVrControllerData { - std::uint32_t buttons; - std::uint8_t stick[2]; - std::uint8_t unused6[2]; - std::uint8_t triggers[2]; - std::uint8_t unused10[2]; - std::uint32_t touchButtons; - std::uint8_t touchValues[4]; - float acceleration[3]; - float angularVelocity[3]; - float orientation[4]; - std::uint8_t unused60[4]; - std::uint8_t connected; - std::uint8_t connectedCount; - std::uint8_t unused66[6]; - std::uint64_t timestamp; - std::uint8_t unused80[24]; -}; - static_assert(sizeof(PadVrControllerData) == 104); static_assert(offsetof(PadVrControllerData, triggers) == 8); static_assert(offsetof(PadVrControllerData, touchButtons) == 12); @@ -54,51 +20,11 @@ static_assert(offsetof(PadVrControllerData, angularVelocity) == 32); static_assert(offsetof(PadVrControllerData, orientation) == 44); static_assert(offsetof(PadVrControllerData, connected) == 64); static_assert(offsetof(PadVrControllerData, timestamp) == 72); -struct PadVrControllerDeviceInformation; -struct PadVrTriggerEffect; -struct PadVrTriggerEffects; -struct PadTriggerEffectExtended; -struct PadExtensionReport; -struct PadExtensionUnitInfo; -struct PadTriggerInternalState; -struct PadTrackerData; -struct PadBlasterTrackerData; -struct PadAstonTrackerData; -struct PadUiData; -struct PadUiTuningData; -struct PadLotusButtonData; -struct PadVersionInfo; -struct PadTelemetryInfo; -struct PadPortInfo; -struct PadVrControllerCombinedState; -struct PadLeonardoData; -struct PadLeonardoUniqueData; -struct PadHistoryData; -struct PadUpdateParameter; -struct PadVirtualDeviceParameter; -struct PadVirtualDeviceId; -struct PadVirtualDeviceComponentInformation; - -struct PadVirtualTriggerInternalState { - std::uint32_t states[2]; - std::uint8_t mode; - std::uint8_t flags[2]; -}; static_assert(sizeof(PadVirtualTriggerInternalState) == 12); static_assert(offsetof(PadVirtualTriggerInternalState, mode) == 8); static_assert(offsetof(PadVirtualTriggerInternalState, flags) == 9); -struct PadLightBarBlinkingParameter { - std::uint8_t values[3]; -}; - -struct PadButtonRemappingInfo { - std::uint8_t mapping[14]; - std::uint8_t reserved; - std::uint8_t mode; -}; - static_assert(sizeof(PadLightBarBlinkingParameter) == 3); static_assert(sizeof(PadButtonRemappingInfo) == 16); static_assert(offsetof(PadButtonRemappingInfo, mode) == 15); @@ -171,20 +97,9 @@ bool ValidPort(int userId, int type, int index) { } -struct PadUpdateData { - std::size_t size; - std::uint8_t data[32768]; -}; - static_assert(sizeof(PadUpdateData) == 32776); static_assert(offsetof(PadUpdateData, data) == 8); -struct PadMotionSensorPosition { - float x; - float y; - float z; -}; - static_assert(sizeof(PadMotionSensorPosition) == 12); extern "C" { @@ -534,7 +449,6 @@ int APS5_VABI scePadIsRemoteController(int handle, bool* remote) { return 0; } - int APS5_VABI scePadSetAngularVelocityBiasCorrectionState(int handle, bool enabled) { if (!KnownHandle(handle)) return PAD_ERROR_INVALID_HANDLE; if (enabled) NotImplemented_nid_no_patch(__func__); diff --git a/core/libs/prx/libScePad/include/Pad.hpp b/core/libs/prx/libScePad/include/Pad.hpp index 03958f4eed..a80582b500 100644 --- a/core/libs/prx/libScePad/include/Pad.hpp +++ b/core/libs/prx/libScePad/include/Pad.hpp @@ -2,6 +2,7 @@ #define CORE_LIBS_PRX_LIBSCEPAD_PAD_HPP #include +#include "SceTypes.hpp" constexpr int PAD_OK = 0; constexpr int PAD_ERROR_INVALID_ARG = -2137915391; @@ -51,4 +52,288 @@ struct PadInfo { }; static_assert(sizeof(PadInfo) == 0x59); +struct PadStickTuningParameter; +struct PadTriggerTuningParameter; +struct PadHuntProfile; +struct PadLeonardoProfile; +struct PadProfileInfo; +struct PadActiveProfileInfo; +struct PadSavedSettingInfo; +struct PadUsbDetectionState; +struct PadVrUsbConnectionStatus; +struct PadDeviceInfo; +struct PadLicenseControllerInformation; +struct PadRemoteSetting; +struct PadVirtualTriggerSetting; +struct PadProcessFocusParameter; +struct PadDataExtended; + +struct PadVrControllerData { + std::uint32_t buttons; + std::uint8_t stick[2]; + std::uint8_t unused6[2]; + std::uint8_t triggers[2]; + std::uint8_t unused10[2]; + std::uint32_t touchButtons; + std::uint8_t touchValues[4]; + float acceleration[3]; + float angularVelocity[3]; + float orientation[4]; + std::uint8_t unused60[4]; + std::uint8_t connected; + std::uint8_t connectedCount; + std::uint8_t unused66[6]; + std::uint64_t timestamp; + std::uint8_t unused80[24]; +}; + +struct PadVrControllerDeviceInformation; +struct PadVrTriggerEffect; +struct PadVrTriggerEffects; +struct PadTriggerEffectExtended; +struct PadExtensionReport; +struct PadExtensionUnitInfo; +struct PadTriggerInternalState; +struct PadTrackerData; +struct PadBlasterTrackerData; +struct PadAstonTrackerData; +struct PadUiData; +struct PadUiTuningData; +struct PadLotusButtonData; +struct PadVersionInfo; +struct PadTelemetryInfo; +struct PadPortInfo; +struct PadVrControllerCombinedState; +struct PadLeonardoData; +struct PadLeonardoUniqueData; +struct PadHistoryData; +struct PadUpdateParameter; +struct PadVirtualDeviceParameter; +struct PadVirtualDeviceId; +struct PadVirtualDeviceComponentInformation; + +struct PadVirtualTriggerInternalState { + std::uint32_t states[2]; + std::uint8_t mode; + std::uint8_t flags[2]; +}; + +struct PadLightBarBlinkingParameter { + std::uint8_t values[3]; +}; + +struct PadButtonRemappingInfo { + std::uint8_t mapping[14]; + std::uint8_t reserved; + std::uint8_t mode; +}; + +struct PadUpdateData { + std::size_t size; + std::uint8_t data[32768]; +}; + +struct PadMotionSensorPosition { + float x; + float y; + float z; +}; + +extern "C" { + +int APS5_VABI scePadClose_nid_postfix(int handle); +int APS5_VABI scePadVrControllerSetVibration(std::int32_t handle, std::uint8_t intensity); +int APS5_VABI scePadVrControllerSetVibrationMode(std::int32_t handle, std::uint32_t mode); +int APS5_VABI scePadVrControllerReadCombinedState(std::int32_t leftHandle, std::int32_t rightHandle, PadVrControllerCombinedState* state); +int APS5_VABI scePadDeviceClassGetExtendedInformation(int handle, PadDeviceClassExtendedInformation* info); +int APS5_VABI scePadDeviceClassParseData(int handle, const PadData* data, PadDeviceClassData* classData); +int APS5_VABI scePadGetControllerInformation(int handle, PadControllerInformation* info); +int APS5_VABI scePadGetHandle(int userId, int type, int index); +int APS5_VABI scePadGetInfo_nid_postfix(PadInfo* info); +int APS5_VABI scePadGetTriggerEffectState(int handle, PadTriggerEffectStateInformation* info); +int APS5_VABI scePadGetExtControllerInformation(int handle, void* info); +int APS5_VABI scePadSetProcessPrivilege(int privilege); +int APS5_VABI scePadSetParticularMode(bool mode); +int APS5_VABI scePadInit_nid_postfix(void); +int APS5_VABI scePadOpen_nid_postfix(int userId, int type, int index, const void* param); +int APS5_VABI scePadOpenExt(int userId, int type, int index, const void* param); +int APS5_VABI scePadReadExt(std::int32_t handle, PadDataExtended* data, std::int32_t count); +int APS5_VABI scePadGetFeatureReport(std::int32_t handle, std::uint8_t reportId, void* data, std::size_t size); +int APS5_VABI scePadSetFeatureReport(std::int32_t handle, std::uint8_t reportId, const void* data, std::size_t size); +int APS5_VABI scePadOutputReport(std::int32_t handle, std::uint8_t reportId, const void* data, std::uint64_t size); +int APS5_VABI scePadRead_nid_postfix(int handle, PadData* data, int num); +int APS5_VABI scePadReadState(int handle, PadData* data); +int APS5_VABI scePadResetLightBar(int handle); +int APS5_VABI scePadResetOrientation(int handle); +int APS5_VABI scePadSetAngularVelocityDeadbandState(int handle, bool enable); +int APS5_VABI scePadSetLightBar(int handle, const PadLightBarParam* param); +int APS5_VABI scePadSetMotionSensorState(int handle, bool enable); +int APS5_VABI scePadSetTiltCorrectionState(int handle, bool enabled); +int APS5_VABI scePadSetTriggerEffect(int handle, const void* param); +int APS5_VABI scePadSetVibration(int handle, const PadVibrationParam* param); +int APS5_VABI scePadSetVibrationMode(int handle, int mode); +int APS5_VABI scePadSetVibrationTriggerEffectWeakWhileEmbeddedMicInUse(bool enabled); +int APS5_VABI scePadVrControllerGetDeviceInformation(std::int32_t handle, PadVrControllerDeviceInformation* info); +int APS5_VABI scePadVrControllerRead(std::int32_t handle, PadVrControllerData* data, std::int32_t count); +int APS5_VABI scePadVrControllerGetTriggerEffectState(std::int32_t leftHandle, std::int32_t rightHandle, PadTriggerEffectStateInformation* states); +int APS5_VABI scePadVrControllerReadState(int handle, PadVrControllerData* state); +int APS5_VABI scePadVrControllerSetTriggerEffect(std::int32_t handle, const PadVrTriggerEffect* effect); +int APS5_VABI scePadVrControllerSetTriggerEffects(std::int32_t leftHandle, std::int32_t rightHandle, const PadVrTriggerEffects* effects); +int APS5_VABI scePadIsRemoteController(int handle, bool* remote); +int APS5_VABI scePadSetAngularVelocityBiasCorrectionState(int handle, bool enabled); +int APS5_VABI scePadUnknown_n3kSX62fgNo(); +int APS5_VABI scePadVrControllerGetTriggerEffectStates(std::int32_t leftHandle, std::int32_t rightHandle, PadTriggerEffectStateInformation* states); +int APS5_VABI scePadGetAccessibilityControllerState(int handle, std::uint32_t* state); +int APS5_VABI scePadSetTriggerEffectExt(std::int32_t handle, const PadTriggerEffectExtended* effect); +int APS5_VABI scePadLastLotusButtonData(std::int32_t handle, std::uint32_t parameter, PadLotusButtonData* data); +int APS5_VABI scePadReadStateExt(std::int32_t handle, PadDataExtended* data); +int APS5_VABI scePadSetExtensionReport(std::int32_t handle, const PadExtensionReport* report); +int APS5_VABI scePadGetExtensionUnitInfo(std::int32_t handle, PadExtensionUnitInfo* info); +int APS5_VABI scePadEnableExtensionPort(bool enabled); +int APS5_VABI scePadEnableSpecificDeviceClass(std::int32_t deviceClass); +int APS5_VABI scePadOpenExt2(std::uint64_t deviceId, std::int32_t type, const void* reserved); +int APS5_VABI scePadDeviceOpen(std::uint64_t deviceId, std::int32_t type, std::int32_t index); +int APS5_VABI scePadGetDataInternal(std::uint8_t port, PadData* data); +int APS5_VABI scePadSetUserColor(std::int32_t handle, std::uint32_t color); +int APS5_VABI scePadDisableVibration(std::int32_t handle, bool disabled); +int APS5_VABI scePadSetVibrationStrength(std::int32_t handle, std::uint32_t strength); +int APS5_VABI scePadSetLightBarBaseBrightness(std::int32_t handle, std::uint32_t brightness); +int APS5_VABI scePadSetLightBarBlinking(std::int32_t handle, const PadLightBarBlinkingParameter* parameter); +std::uint64_t APS5_VABI scePadGetIdleCount(std::int32_t userId); +int APS5_VABI scePadGetControllerIdleCount(std::int32_t handle, std::uint64_t* count); +int APS5_VABI scePadSetPowerSavingState(std::int32_t handle, std::uint8_t state); +int APS5_VABI scePadSetAutoPowerOffCount(std::int32_t count); +int APS5_VABI scePadEnableUsbConnection(bool enabled); +int APS5_VABI scePadEnableAutoDetect(bool enabled); +int APS5_VABI scePadEnablePlayPauseEmulation(bool enabled); +int APS5_VABI scePadDisableTrackingLedBatterySaver(bool disabled); +int APS5_VABI scePadSetLoginUserNumber(std::int32_t number); +int APS5_VABI scePadGetCapability(std::int32_t deviceId, std::uint32_t* capability); +int APS5_VABI scePadShareOutputData(std::int32_t source, std::int32_t destination); +int APS5_VABI scePadShareOutputDataWithFunctionType(std::int32_t source, std::int32_t destination, std::uint32_t functionType); +int APS5_VABI scePadSetVibrationForce(std::int32_t handle, const PadVibrationParam* param); +int APS5_VABI scePadGetVersionInfo(std::int32_t handle, PadVersionInfo* info); +int APS5_VABI scePadGetControllerType(std::int32_t handle, std::int32_t* type); +int APS5_VABI scePadDisableDataConversion(std::int32_t handle, bool disabled); +int APS5_VABI scePadSetButtonRemappingInfo(std::int32_t handle, const PadButtonRemappingInfo* info); +int APS5_VABI scePadSetProcessPrivilegeOfButtonRemapping(bool enabled); +int APS5_VABI scePadSetForceIntercepted(bool enabled); +int APS5_VABI scePadIsLightBarBaseBrightnessControllable(std::int32_t handle); +int APS5_VABI scePadSwitchConnection(std::int32_t handle, std::uint32_t flags); +int APS5_VABI scePadDisableTriggerEffect(std::int32_t handle, bool disabled); +int APS5_VABI scePadSetTriggerEffectStrength(std::int32_t handle, std::uint32_t strength); +int APS5_VABI scePadGetTriggerEffectInternalState(std::int32_t handle, PadTriggerInternalState* state); +int APS5_VABI scePadSetUserNumber(std::int32_t handle, std::int32_t number); +int APS5_VABI scePadDisableTransportButtons(bool disabled); +int APS5_VABI scePadSetLotusIrCodeSetStart(std::int32_t handle, std::uint8_t codeSet, std::uint16_t code, std::size_t dataSize); +int APS5_VABI scePadSetLotusIrCodeSetData(std::int32_t handle, std::uint8_t packetIndex, const void* data, std::size_t dataSize); +int APS5_VABI scePadSetLotusIrCodeSetEnd(std::int32_t handle); +int APS5_VABI scePadGetLotusIrCodeSetResult(std::int32_t handle, std::int32_t* result, std::uint8_t* deviceResult); +int APS5_VABI scePadSetLotusEnableIrKey(std::int32_t handle); +int APS5_VABI scePadSetLotusDisableIrKey(std::int32_t handle); +int APS5_VABI scePadGetUsbDetectionState(std::int32_t deviceId, PadUsbDetectionState* state); +int APS5_VABI scePadUiReadState(std::int32_t handle, PadUiData* data); +int APS5_VABI scePadUiReadStateForTuning(std::int32_t handle, PadUiTuningData* data); +int APS5_VABI scePadSetStickTriggerTuningMode(std::int32_t handle, std::uint32_t mode); +int APS5_VABI scePadSetStickTuningParam(std::int32_t handle, std::uint32_t stick, const PadStickTuningParameter* parameter); +int APS5_VABI scePadSetTriggerTuningParam(std::int32_t handle, const PadTriggerTuningParameter* parameter); +int APS5_VABI scePadGetProfileHunt(std::int32_t handle, std::int32_t profileId, PadHuntProfile* profile); +int APS5_VABI scePadSetProfileHunt(std::int32_t handle, std::int32_t profileId, PadHuntProfile* profile, std::uint32_t* result); +int APS5_VABI scePadResetHunt(std::int32_t handle); +int APS5_VABI scePadGetProfileInfo(std::int32_t deviceId, std::int32_t profileId, PadProfileInfo* info); +int APS5_VABI scePadGetActiveProfileInfo(std::int32_t handle, PadActiveProfileInfo* info); +int APS5_VABI scePadDisableActiveProfileChange(std::int32_t handle, bool disabled); +int APS5_VABI scePadDisableActiveProfileChangeByDeviceId(std::int32_t deviceId, bool disabled); +int APS5_VABI scePadSetActiveProfileSlot(std::int32_t deviceId, std::uint32_t slot); +int APS5_VABI scePadGetSavedSettingInfo(std::int32_t handle, PadSavedSettingInfo* info); +int APS5_VABI scePadSetSavedSettingInfo(std::int32_t handle, const PadSavedSettingInfo* info); +int APS5_VABI scePadVrControllerGetPhysicalUsbConnectionStatus(PadVrUsbConnectionStatus* status); +int APS5_VABI scePadParseUniqueDataLeonardo(std::int32_t handle, const PadLeonardoData* data, PadLeonardoUniqueData* uniqueData); +int APS5_VABI scePadGetControllerTypeLeonardo(std::int32_t deviceId, std::int32_t* controllerType); +int APS5_VABI scePadSetControllerTypeLeonardo(std::int32_t deviceId, std::int32_t controllerType); +int APS5_VABI scePadGetProfileLeonardo(std::int32_t handle, std::int32_t profileId, PadLeonardoProfile* profile); +int APS5_VABI scePadSetProfileLeonardo(std::int32_t handle, std::int32_t profileId, PadLeonardoProfile* profile, std::uint32_t* result); +int APS5_VABI scePadResetLeonardo(std::int32_t handle); +int APS5_VABI scePadSetProfileEditMode(std::int32_t handle, bool enabled, std::uint32_t profile); +int APS5_VABI scePadGetProfileEditMode(std::int32_t handle, std::int32_t* mode); +int APS5_VABI scePadGetProfileEditModeLeonardo(std::int32_t handle); +int APS5_VABI scePadSetSelectButtonCustomizeMode(std::int32_t handle, bool enabled); +int APS5_VABI scePadGetSelectButtonCustomizeMode(std::int32_t handle); +int APS5_VABI scePadSetToggleAllReleaseLeonardo(std::int32_t handle); +int APS5_VABI scePadEnableControllerIndicator(std::int32_t handle); +int APS5_VABI scePadEnableProfileIndicator(std::int32_t handle); +int APS5_VABI scePadSetProfileIndicatorAnimation(std::int32_t handle, std::uint8_t animation); +int APS5_VABI scePadIsCoPilot(std::int32_t handle); +int APS5_VABI scePadSetIsCoPilot(std::int32_t handle, bool enabled); +int APS5_VABI scePadRegisterCollaboInputMgrProcess(void); +int APS5_VABI scePadGetTelemetryInfo(std::int32_t handle, PadTelemetryInfo* info); +int APS5_VABI scePadGetActiveTime(std::int32_t handle, std::int32_t type, std::uint64_t* activeTime); +int APS5_VABI scePadGetDeviceId(std::int32_t handle, std::int32_t* deviceId); +int APS5_VABI scePadGetInfoByPortType(std::int32_t type, PadPortInfo* info); +int APS5_VABI scePadResetLightBarAll(void); +int APS5_VABI scePadResetLightBarAllByPortType(std::uint32_t portType); +int APS5_VABI scePadSetLightBarForTracker(std::int32_t handle, const PadLightBarParam* color); +int APS5_VABI scePadReadForTracker(std::int32_t handle, PadTrackerData* data, std::int32_t count); +int APS5_VABI scePadReadBlasterForTracker(std::int32_t handle, PadBlasterTrackerData* data, std::int32_t count); +int APS5_VABI scePadResetOrientationForTracker(std::int32_t handle); +int APS5_VABI scePadGetMotionTimerUnit(std::int32_t handle, float* unit); +int APS5_VABI scePadSetVrTrackingMode(std::uint8_t mode); +int APS5_VABI scePadGetMotionSensorPosition(std::int32_t handle, PadMotionSensorPosition* position); +int APS5_VABI scePadGetSphereRadius(std::int32_t handle, float* radius); +bool APS5_VABI scePadIsValidHandle(std::int32_t handle, std::int32_t portType); +bool APS5_VABI scePadIsDS4Connected(std::int32_t handle); +bool APS5_VABI scePadIsBlasterConnected(std::int32_t handle); +bool APS5_VABI scePadIsMoveConnected(std::int32_t handle); +int APS5_VABI scePadGetBluetoothAddress(std::int32_t handle, std::uint64_t* address); +int APS5_VABI scePadIsMoveReproductionModel(std::int32_t handle); +int APS5_VABI scePadReadAstonForTracker(std::int32_t handle, PadAstonTrackerData* data, std::int32_t count); +int APS5_VABI scePadGetAstonModel(std::int32_t handle); +int APS5_VABI scePadMbusInit(void); +int APS5_VABI scePadMbusTerm(void); +int APS5_VABI scePadConnectPort(std::int32_t userId, std::int32_t portType); +int APS5_VABI scePadDisconnectPort(std::int32_t userId, std::int32_t portType); +int APS5_VABI scePadDisconnectDevice(std::int32_t deviceId); +int APS5_VABI scePadGetDeviceInfo(std::int32_t deviceId, PadDeviceInfo* info); +int APS5_VABI scePadSetProcessFocus(const PadProcessFocusParameter* parameter); +int APS5_VABI scePadVertualDeviceAddDevice(const PadVirtualDeviceParameter* parameter, PadVirtualDeviceId* deviceId); +int APS5_VABI scePadVirtualDeviceAddDevice(const PadVirtualDeviceParameter* parameter, PadVirtualDeviceId* deviceId); +int APS5_VABI scePadVirtualDeviceDeleteDevice(std::int32_t deviceId); +int APS5_VABI scePadVirtualDeviceInsertData(std::int32_t deviceId, const PadData* data); +int APS5_VABI scePadVirtualDeviceInsertTriggerInternalState(std::int32_t deviceId, const PadVirtualTriggerInternalState* state); +int APS5_VABI scePadVirtualDeviceGetRemoteSetting(std::int32_t deviceId, PadRemoteSetting* setting); +int APS5_VABI scePadVirtualDeviceSetTriggerEffectSetting(std::int32_t handle, const PadVirtualTriggerSetting* setting); +int APS5_VABI scePadVirtualDeviceDisableButtonRemapping(bool disabled); +int APS5_VABI scePadSetShareButtonMaskForRemotePlay(std::uint8_t mask); +int APS5_VABI scePadSetPS4BcVibrationMode(std::uint8_t mode); +int APS5_VABI scePadSetVirtualDeviceComponentInformation(std::int32_t deviceId, const PadVirtualDeviceComponentInformation* info); +int APS5_VABI scePadEnablePs4CompatibleMode(std::int32_t handle, bool enabled); +int APS5_VABI scePadGetLicenseControllerInformation(std::int32_t handle, PadLicenseControllerInformation* info); +int APS5_VABI scePadReadHistory(std::int32_t handle, PadHistoryData* data, std::int32_t count); +int APS5_VABI scePadStartRecording(void); +int APS5_VABI scePadStopRecording(void); +int APS5_VABI scePadRemoteControlInsertData(const std::uint8_t* data); +int APS5_VABI scePadRemoteControlInsertDataForAston(const std::uint8_t* data); +int APS5_VABI scePadGetFeatureReport2(std::int32_t handle, std::uint8_t reportId, void* data, std::size_t size); +int APS5_VABI scePadSetFeatureReport2(std::int32_t handle, std::uint8_t reportId, const void* data, std::size_t size); +int APS5_VABI scePadSetMuteLed(std::int32_t handle, std::uint32_t mode); +int APS5_VABI scePadBondUpdateInit(void); +int APS5_VABI scePadBondUpdateIsReady(std::int32_t deviceId, std::int32_t* ready); +int APS5_VABI scePadBondUpdateStart(std::int32_t handle, const PadUpdateParameter* parameter); +int APS5_VABI scePadBondUpdateGetStatus(std::int32_t deviceId, std::int32_t* status); +int APS5_VABI scePadBondUpdateSendData(std::int32_t deviceId, const PadUpdateData* data); +int APS5_VABI scePadBondUpdateResetBond(std::int32_t deviceId); +int APS5_VABI scePadBondUpdateGetReconnectStatus(std::int32_t* status); +int APS5_VABI scePadBondUpdateTerm(void); +int APS5_VABI scePadControllerUpdateInit(void); +int APS5_VABI scePadControllerUpdateIsUpdateNeeded2(std::int32_t deviceId, const std::uint32_t* version, std::uint16_t* status); +int APS5_VABI scePadControllerUpdateIsReady(std::int32_t deviceId, std::int32_t* ready); +int APS5_VABI scePadControllerUpdateStart(std::int32_t handle, const PadUpdateParameter* parameter); +int APS5_VABI scePadControllerUpdateGetStatus(std::int32_t deviceId, std::int32_t* status); +int APS5_VABI scePadControllerUpdateSendData(std::int32_t deviceId, const PadUpdateData* data); +int APS5_VABI scePadControllerUpdateResetController(std::int32_t deviceId); +int APS5_VABI scePadControllerUpdateGetReconnectStatus(std::int32_t* status); +int APS5_VABI scePadControllerUpdateTerm(void); + +} + #endif diff --git a/core/libs/prx/libScePad/libScePad.hpp b/core/libs/prx/libScePad/libScePad.hpp new file mode 100644 index 0000000000..12aecdf76c --- /dev/null +++ b/core/libs/prx/libScePad/libScePad.hpp @@ -0,0 +1,3 @@ +#pragma once + +#include "prx/libScePad/include/Pad.hpp" diff --git a/core/libs/prx/libScePlayerSelectionDialog/Export.cpp b/core/libs/prx/libScePlayerSelectionDialog/Export.cpp index 06df01e1c8..729b67309b 100644 --- a/core/libs/prx/libScePlayerSelectionDialog/Export.cpp +++ b/core/libs/prx/libScePlayerSelectionDialog/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceUserService/UserService.hpp" #include #include #include @@ -6,8 +7,6 @@ #include "prx/libSceCommonDialog/CommonDialog.hpp" #include "prx/libc/include/General.hpp" -extern "C" int APS5_VABI sceUserServiceGetLoginUserIdList(UserServiceLoginUserIdList* users); - namespace { constexpr int COMMON_DIALOG_STATUS_NONE = 0; diff --git a/core/libs/prx/libScePosixForWebKit/Resolver.cpp b/core/libs/prx/libScePosixForWebKit/Resolver.cpp index f9b8a2acc2..0b1b60826c 100644 --- a/core/libs/prx/libScePosixForWebKit/Resolver.cpp +++ b/core/libs/prx/libScePosixForWebKit/Resolver.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceNet/include/Net.hpp" #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #include @@ -21,8 +22,6 @@ #include #include "GuestResolver.hpp" -extern "C" int* APS5_VABI sceNetErrnoLoc(); - namespace { struct HostLookup { GuestResolver::HostEntry entry{}; diff --git a/core/libs/prx/libSceRtc/Export.cpp b/core/libs/prx/libSceRtc/Export.cpp index 17ec53064c..91c6591395 100644 --- a/core/libs/prx/libSceRtc/Export.cpp +++ b/core/libs/prx/libSceRtc/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceRtc/include/Rtc.hpp" #include #include #include diff --git a/core/libs/prx/libSceRtc/include/Rtc.hpp b/core/libs/prx/libSceRtc/include/Rtc.hpp new file mode 100644 index 0000000000..7e84acf6b7 --- /dev/null +++ b/core/libs/prx/libSceRtc/include/Rtc.hpp @@ -0,0 +1,69 @@ +#pragma once + +#include "SceTypes.hpp" + +extern "C" { + +int APS5_VABI sceRtcCheckValid(const RtcDateTime* time); +int APS5_VABI sceRtcIsLeapYear(int year); +int APS5_VABI sceRtcGetDaysInMonth(int year, int month); +int APS5_VABI sceRtcGetDayOfWeek(int year, int month, int day); +int APS5_VABI sceRtcGetTickResolution(void); +int APS5_VABI sceRtcGetTick(const RtcDateTime* time, RtcTick* tick); +int APS5_VABI sceRtcSetTick(RtcDateTime* time, const RtcTick* tick); +int APS5_VABI sceRtcGetCurrentTick(RtcTick* tick); +int APS5_VABI sceRtcGetCurrentNetworkTick(RtcTick* tick); +int APS5_VABI sceRtcGetCurrentClock(RtcDateTime* time, int timeZoneMinutes); +int APS5_VABI sceRtcGetCurrentClockLocalTime(RtcDateTime* time); +int APS5_VABI sceRtcConvertUtcToLocalTime(const RtcTick* utc, RtcTick* localTime); +int APS5_VABI sceRtcConvertLocalTimeToUtc(const RtcTick* localTime, RtcTick* utc); +int APS5_VABI sceRtcGetTime_t(const RtcDateTime* time, int64_t* seconds); +int APS5_VABI sceRtcSetTime_t(RtcDateTime* time, int64_t seconds); +int APS5_VABI sceRtcGetWin32FileTime(const RtcDateTime* time, uint64_t* win32Time); +int APS5_VABI sceRtcSetWin32FileTime(RtcDateTime* time, uint64_t win32Time); +int APS5_VABI sceRtcGetDosTime(const RtcDateTime* time, uint32_t* dosTime); +int APS5_VABI sceRtcSetDosTime(RtcDateTime* time, uint32_t dosTime); +int APS5_VABI sceRtcGetYear(const RtcDateTime* time); +int APS5_VABI sceRtcSetYear(RtcDateTime* time, int year); +int APS5_VABI sceRtcGetMonth(const RtcDateTime* time); +int APS5_VABI sceRtcSetMonth(RtcDateTime* time, int month); +int APS5_VABI sceRtcGetDay(const RtcDateTime* time); +int APS5_VABI sceRtcSetDay(RtcDateTime* time, int day); +int APS5_VABI sceRtcGetHour(const RtcDateTime* time); +int APS5_VABI sceRtcSetHour(RtcDateTime* time, int hour); +int APS5_VABI sceRtcGetMinute(const RtcDateTime* time); +int APS5_VABI sceRtcSetMinute(RtcDateTime* time, int minute); +int APS5_VABI sceRtcGetSecond(const RtcDateTime* time); +int APS5_VABI sceRtcSetSecond(RtcDateTime* time, int second); +int APS5_VABI sceRtcGetMicrosecond(const RtcDateTime* time); +int APS5_VABI sceRtcSetMicrosecond(RtcDateTime* time, int microsecond); +int APS5_VABI sceRtcFormatRFC3339(char* dateTime, const RtcTick* utc, int timeZoneMinutes); +int APS5_VABI sceRtcFormatRFC3339LocalTime(char* dateTime, const RtcTick* utc); +int APS5_VABI sceRtcFormatRFC2822(char* dateTime, const RtcTick* utc, int timeZoneMinutes); +int APS5_VABI sceRtcFormatRFC2822LocalTime(char* dateTime, const RtcTick* utc); +int APS5_VABI sceRtcParseRFC3339(RtcTick* utc, const char* dateTime); +int APS5_VABI sceRtcParseDateTime(RtcTick* utc, const char* dateTime); +int APS5_VABI sceRtcTickAddTicks(RtcTick* dst, const RtcTick* src, int64_t ticks); +int APS5_VABI sceRtcTickAddMicroseconds(RtcTick* dst, const RtcTick* src, int64_t usec); +int APS5_VABI sceRtcTickAddSeconds(RtcTick* dst, const RtcTick* src, int64_t seconds); +int APS5_VABI sceRtcTickAddMinutes(RtcTick* dst, const RtcTick* src, int64_t minutes); +int APS5_VABI sceRtcTickAddHours(RtcTick* dst, const RtcTick* src, int32_t hours); +int APS5_VABI sceRtcTickAddDays(RtcTick* dst, const RtcTick* src, int32_t days); +int APS5_VABI sceRtcTickAddWeeks(RtcTick* dst, const RtcTick* src, int32_t weeks); +int APS5_VABI sceRtcTickAddMonths(RtcTick* dst, const RtcTick* src, int32_t months); +int APS5_VABI sceRtcTickAddYears(RtcTick* dst, const RtcTick* src, int16_t years); +int APS5_VABI sceRtcInit(void); +int APS5_VABI sceRtcEnd(void); +int APS5_VABI sceRtcCompareTick(const RtcTick* first, const RtcTick* second); +int APS5_VABI sceRtcGetCurrentRawNetworkTick(RtcTick* tick); +int APS5_VABI sceRtcGetCurrentAdNetworkTick(RtcTick* tick); +int APS5_VABI sceRtcGetCurrentDebugNetworkTick(RtcTick* tick); +int APS5_VABI sceRtcSetCurrentTick(const RtcTick* tick); +int APS5_VABI sceRtcSetCurrentNetworkTick(const RtcTick* tick); +int APS5_VABI sceRtcSetCurrentAdNetworkTick(const RtcTick* tick); +int APS5_VABI sceRtcSetCurrentDebugNetworkTick(const RtcTick* tick); +int APS5_VABI sceRtcSetConf(int first, int second, int third, int fourth); +int APS5_VABI sceRtcFormatRFC3339Precise(char* dateTime, const RtcTick* utc, int timeZoneMinutes, int precision); +int APS5_VABI sceRtcFormatRFC3339PreciseLocalTime(char* dateTime, const RtcTick* utc, int precision); + +} diff --git a/core/libs/prx/libSceRtc/libSceRtc.hpp b/core/libs/prx/libSceRtc/libSceRtc.hpp new file mode 100644 index 0000000000..6301e155c4 --- /dev/null +++ b/core/libs/prx/libSceRtc/libSceRtc.hpp @@ -0,0 +1,3 @@ +#pragma once + +#include "prx/libSceRtc/include/Rtc.hpp" diff --git a/core/libs/prx/libSceSsl/Export.cpp b/core/libs/prx/libSceSsl/Export.cpp index ceb7654ba3..9d3976dd63 100644 --- a/core/libs/prx/libSceSsl/Export.cpp +++ b/core/libs/prx/libSceSsl/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSsl/include/Ssl.hpp" #ifdef _WIN32 #include #else @@ -466,8 +467,6 @@ struct Session { } }; -using SslVerifyCallback = int (APS5_VABI *)(int, unsigned int, void**, int, void*); - constexpr int SslVersionSsl30 = 2; constexpr int SslVersionTls12 = 5; diff --git a/core/libs/prx/libSceSsl/include/Ssl.hpp b/core/libs/prx/libSceSsl/include/Ssl.hpp new file mode 100644 index 0000000000..38e5e14589 --- /dev/null +++ b/core/libs/prx/libSceSsl/include/Ssl.hpp @@ -0,0 +1,65 @@ +#pragma once + +#include "SceTypes.hpp" +#include "prx/libSceSsl/SslTypes.hpp" + +using SslVerifyCallback = int (APS5_VABI *)(int, unsigned int, void**, int, void*); + +extern "C" { + +int APS5_VABI sceSslInit_nid_postfix(std::uint64_t poolSize); +int APS5_VABI sceSslTerm_nid_postfix(int sslCtxId); +int APS5_VABI sceSslGetMemoryPoolStats(int sslCtxId, SceSsl::MemoryPoolStats* stats); +int APS5_VABI sceSslLoadCert(int sslCtxId, int caCertNum, SceSsl::Data** caList, SceSsl::Data* cert, SceSsl::Data* privateKey); +int APS5_VABI sceSslUnloadCert(int sslCtxId); +int APS5_VABI sceSslGetCaList(int sslCtxId, SceSsl::CaList* output); +int APS5_VABI sceSslFreeCaList(int sslCtxId, SceSsl::CaList* list); +int APS5_VABI sceSslGetCaCerts(int sslCtxId, SceSsl::CaCerts* output); +int APS5_VABI sceSslFreeCaCerts(int sslCtxId, SceSsl::CaCerts* certificates); +int APS5_VABI sceSslCreateConnection(int sslCtxId, int sockId, const char* host); +int APS5_VABI sceSslDeleteConnection(int sslConnectionId); +int APS5_VABI sceSslSetVerifyCallback(int sslConnectionId, SslVerifyCallback cbfunc, void* userArg); +int APS5_VABI sceSslConnect(int sslConnectionId); +int APS5_VABI sceSslRead(int sslConnectionId, void* buf, size_t len, int flags); +int APS5_VABI sceSslWrite(int sslConnectionId, void* buf, size_t len, int flags); +int APS5_VABI sceSslClose(int sslConnectionId); +int APS5_VABI sceSslGetSerialNumber(int sslCtxId, void* sslCert, unsigned char* sboData, std::size_t* sboLen); +int APS5_VABI sceSslFreeSslCertName(int sslCtxId, void* certName); +int APS5_VABI sceSslEnableVerifyOption(int sslConnectionId, std::uint32_t option); +int APS5_VABI sceSslDisableVerifyOption(int sslConnectionId, std::uint32_t option); +const char* APS5_VABI sceSslGetAlpnSelected(int sslConnectionId); +int APS5_VABI sceSslSetAlpn(int sslConnectionId, const char* proto); +int APS5_VABI sceSslSetMinSslVersion(int sslConnectionId, int version); +void* APS5_VABI sceSslGetIssuerName(int sslCtxId, void* sslCert); +int APS5_VABI sceSslGetNameEntryCount(int sslCtxId, void* certName); +int APS5_VABI sceSslGetNameEntryInfo(int sslCtxId, void* certName, int entryNum, char* oidname, std::size_t maxOidnameLen, char* value, std::size_t maxValueLen, std::size_t* valueLen); +int APS5_VABI sceSslGetNotBefore(int sslCtxId, void* sslCert, SceSsl::RtcTick* begin); +int APS5_VABI sceSslGetNotAfter(int sslCtxId, void* sslCert, SceSsl::RtcTick* limit); +int APS5_VABI sceSslGetFingerprint(int sslCtxId, void* sslCert, int hashType, unsigned char* fingerprint); +int APS5_VABI sceSslGetPem(int sslCtxId, void* sslCert, char* buf, std::size_t* bufLen); +void* APS5_VABI sceSslGetSubjectName(int sslCtxId, void* sslCert); +int APS5_VABI CA_MGMT_extractKeyBlobEx(); +int APS5_VABI CA_MGMT_extractPublicKeyInfo(); +int APS5_VABI CA_MGMT_freeKeyBlob(); +int APS5_VABI CRYPTO_initAsymmetricKey(); +int APS5_VABI CRYPTO_uninitAsymmetricKey(); +int APS5_VABI RSA_verifySignature(); +int APS5_VABI VLONG_freeVlongQueue(); +int APS5_VABI sceSslCheckRecvPending(); +int APS5_VABI sceSslCreateSslConnection(); +int APS5_VABI sceSslDeleteSslConnection(); +int APS5_VABI sceSslDisableOption(); +int APS5_VABI sceSslDisableOptionInternal(); +int APS5_VABI sceSslDisableOptionInternalInsecure(); +int APS5_VABI sceSslEnableOption(); +int APS5_VABI sceSslEnableOptionInternal(); +int APS5_VABI sceSslGetNanoSSLModuleId(); +int APS5_VABI sceSslGetPeerCert(); +int APS5_VABI sceSslGetSslError(); +int APS5_VABI sceSslLoadRootCACert(); +int APS5_VABI sceSslRecv(int sslConnectionId, void* buf, std::size_t fulllen); +int APS5_VABI sceSslReuseConnection(int sslConnectionId, int sockId); +int APS5_VABI sceSslSend(int sslConnectionId, void* msg, std::size_t fulllen); +int APS5_VABI sceSslSetSslVersion(); + +} diff --git a/core/libs/prx/libSceSsl/libSceSsl.hpp b/core/libs/prx/libSceSsl/libSceSsl.hpp new file mode 100644 index 0000000000..731f181cb2 --- /dev/null +++ b/core/libs/prx/libSceSsl/libSceSsl.hpp @@ -0,0 +1,3 @@ +#pragma once + +#include "prx/libSceSsl/include/Ssl.hpp" diff --git a/core/libs/prx/libSceSystemService/Export.cpp b/core/libs/prx/libSceSystemService/Export.cpp index 64d0bf5dc1..0b9e30b645 100644 --- a/core/libs/prx/libSceSystemService/Export.cpp +++ b/core/libs/prx/libSceSystemService/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSystemService/include/SystemService.hpp" #include #include #include @@ -422,14 +423,6 @@ int APS5_VABI sceSystemServiceOpenChallengeActivity(void) { return SYSTEM_SERVICE_OK; } -struct SystemServiceTournamentOccurrenceParam { - std::uint64_t size; - const char* occurrenceId; - std::int32_t userId; - std::uint32_t padding; - const char* context; -}; - static_assert(sizeof(SystemServiceTournamentOccurrenceParam) == 32); static_assert(offsetof(SystemServiceTournamentOccurrenceParam, occurrenceId) == 8); static_assert(offsetof(SystemServiceTournamentOccurrenceParam, userId) == 16); diff --git a/core/libs/prx/libSceSystemService/PendingExports.cpp b/core/libs/prx/libSceSystemService/PendingExports.cpp index 85bb9527ea..d2b7fca08e 100644 --- a/core/libs/prx/libSceSystemService/PendingExports.cpp +++ b/core/libs/prx/libSceSystemService/PendingExports.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSystemService/include/SystemService.hpp" #include "prx/libc/include/General.hpp" namespace { @@ -7,72 +8,22 @@ constexpr int SystemServiceRejected = static_cast(0x80A10005); } -struct ShellCoreErrorDialogParam { - const char* message; - const char* const* formatArgs; - std::uint8_t flag; -}; - static_assert(sizeof(ShellCoreErrorDialogParam) == 24); static_assert(offsetof(ShellCoreErrorDialogParam, message) == 0); static_assert(offsetof(ShellCoreErrorDialogParam, formatArgs) == 8); static_assert(offsetof(ShellCoreErrorDialogParam, flag) == 16); -struct SystemServiceDaemonEvent; -struct SystemServiceLocalProcessStatus; struct SystemServiceEvent; -struct SystemServicePSButtonEvent; -struct SystemServicePrivacyDefinitionData; -struct SystemServicePrivacyDefinitionVersion; -struct SystemServiceTitleWorkaroundInfo; -struct SystemServiceStoreParam { - std::uint32_t size; -}; static_assert(sizeof(SystemServiceStoreParam) == 4); -struct SystemServiceCpuPstateParam; -struct SystemServiceLocalProcessParam; -struct SystemServiceJvmProcessParam; -struct SystemServicePs2ProcessParam; -struct SystemServiceAppInstallStatus; -struct SystemServiceAppStatus; -struct ShellCoreLaunchByUriParam { - std::uint32_t option; - std::int32_t userId; -}; - static_assert(sizeof(ShellCoreLaunchByUriParam) == 8); static_assert(offsetof(ShellCoreLaunchByUriParam, option) == 0); static_assert(offsetof(ShellCoreLaunchByUriParam, userId) == 4); -struct ShellCoreTelemetryToken; -struct ShellCoreUmmStatus { - std::int32_t state; - std::int32_t inDeviceMuteState; -}; static_assert(sizeof(ShellCoreUmmStatus) == 8); static_assert(offsetof(ShellCoreUmmStatus, state) == 0); static_assert(offsetof(ShellCoreUmmStatus, inDeviceMuteState) == 4); -struct ShellCorePbtcUserInfoList; -struct ShellCorePrivacyEventData; -struct ShellCorePsnAccountInfoFirst; -struct ShellCorePsnAccountInfoSecond; -struct ShellCorePsnAccountInfoThird; -struct ShellCorePsnAccountInfoFourth; -struct ShellCorePsnAccountInfoFifth; -struct ShellCoreAppLaunchTypeInfo; -struct LncGpuCrashAppStatus { - char titleId[16]; - std::int32_t appId; - std::int32_t appLocalPid; - char path[1024]; - std::int32_t appType; - std::int32_t coredumpReason; - char corefileName[256]; - std::uint32_t exceptionCode; - std::uint32_t appCategoryType; -}; static_assert(sizeof(LncGpuCrashAppStatus) == 1320); static_assert(offsetof(LncGpuCrashAppStatus, titleId) == 0); @@ -84,15 +35,6 @@ static_assert(offsetof(LncGpuCrashAppStatus, coredumpReason) == 1052); static_assert(offsetof(LncGpuCrashAppStatus, corefileName) == 1056); static_assert(offsetof(LncGpuCrashAppStatus, exceptionCode) == 1312); static_assert(offsetof(LncGpuCrashAppStatus, appCategoryType) == 1316); -struct LncLaunchParam { - std::uint32_t size; - std::int32_t userId; - std::int32_t appAttr; - std::int32_t enableCrashReport; - std::uint64_t checkFlag; - std::uint64_t contextId; - bool isSpeculativeLaunch; -}; static_assert(sizeof(LncLaunchParam) == 40); static_assert(offsetof(LncLaunchParam, size) == 0); @@ -102,49 +44,19 @@ static_assert(offsetof(LncLaunchParam, enableCrashReport) == 12); static_assert(offsetof(LncLaunchParam, checkFlag) == 16); static_assert(offsetof(LncLaunchParam, contextId) == 24); static_assert(offsetof(LncLaunchParam, isSpeculativeLaunch) == 32); -struct LncDaemonEvent; -struct LncShellUiEvent; -struct LncLocalProcessStatus { - std::int32_t appLocalPid; - std::uint8_t reserved[32]; -}; static_assert(sizeof(LncLocalProcessStatus) == 36); static_assert(offsetof(LncLocalProcessStatus, appLocalPid) == 0); static_assert(offsetof(LncLocalProcessStatus, reserved) == 4); -struct LncCoredumpState { - std::uint32_t progress; - std::uint32_t isFinished; - std::int32_t result; -}; static_assert(sizeof(LncCoredumpState) == 12); static_assert(offsetof(LncCoredumpState, progress) == 0); static_assert(offsetof(LncCoredumpState, isFinished) == 4); static_assert(offsetof(LncCoredumpState, result) == 8); -struct LncVideoFinalizeState { - std::uint32_t progress; - std::int32_t result; -}; static_assert(sizeof(LncVideoFinalizeState) == 8); static_assert(offsetof(LncVideoFinalizeState, progress) == 0); static_assert(offsetof(LncVideoFinalizeState, result) == 4); -struct LncLocalProcessParam; -struct LncAppStatus { - std::int32_t appId; - std::int32_t launchRequestAppId; - std::int32_t appType; - std::int32_t appAttr; - char titleId[16]; - std::uint32_t appCategoryType; - std::int32_t appBootMode; - std::int32_t appBootSubMode; - char appVer[6]; - char contentVersion[11]; - bool isSystemExApp; - bool isCdlgInitialized; -}; static_assert(sizeof(LncAppStatus) == 64); static_assert(offsetof(LncAppStatus, appId) == 0); @@ -159,24 +71,6 @@ static_assert(offsetof(LncAppStatus, appVer) == 44); static_assert(offsetof(LncAppStatus, contentVersion) == 50); static_assert(offsetof(LncAppStatus, isSystemExApp) == 61); static_assert(offsetof(LncAppStatus, isCdlgInitialized) == 62); -struct LncShellUiAppStatus { - std::int32_t appId; - std::int32_t appType; - std::int32_t appAttr; - std::int32_t launchRequestAppId; - std::int32_t userId; - std::int32_t isActiveCdlg; - char path[1024]; - char sceSysDir[256]; - std::int32_t isCoredumped; - std::int32_t isPrxModuleLoadFailed; - std::int32_t appLocalPid; - std::int32_t crashReportMode; - char category[4]; - std::uint32_t appCategoryType; - std::int32_t appBootMode; - std::int32_t appBootSubMode; -}; static_assert(sizeof(LncShellUiAppStatus) == 1336); static_assert(offsetof(LncShellUiAppStatus, appId) == 0); @@ -195,13 +89,6 @@ static_assert(offsetof(LncShellUiAppStatus, category) == 1320); static_assert(offsetof(LncShellUiAppStatus, appCategoryType) == 1324); static_assert(offsetof(LncShellUiAppStatus, appBootMode) == 1328); static_assert(offsetof(LncShellUiAppStatus, appBootSubMode) == 1332); -struct AppMessagingMessage { - std::int32_t sender; - std::uint32_t messageType; - std::uint8_t payload[8192]; - std::uint32_t payloadSize; - std::uint64_t timestamp; -}; static_assert(sizeof(AppMessagingMessage) == 8216); static_assert(offsetof(AppMessagingMessage, sender) == 0); @@ -210,10 +97,6 @@ static_assert(offsetof(AppMessagingMessage, payload) == 8); static_assert(offsetof(AppMessagingMessage, payloadSize) == 8200); static_assert(offsetof(AppMessagingMessage, timestamp) == 8208); -struct UsbStorageEvent; -struct UsbStorageDeviceInfo; -using UsbStorageCallback = void (APS5_VABI *)(const UsbStorageEvent* event, void* userData); - extern "C" { int APS5_VABI sceAppMessagingClearEventFlag(std::int32_t appId, std::uint64_t flags) { diff --git a/core/libs/prx/libSceSystemService/include/SystemService.hpp b/core/libs/prx/libSceSystemService/include/SystemService.hpp new file mode 100644 index 0000000000..943c963b16 --- /dev/null +++ b/core/libs/prx/libSceSystemService/include/SystemService.hpp @@ -0,0 +1,735 @@ +#pragma once + +#include "SceTypes.hpp" + +struct SystemServiceTournamentOccurrenceParam { + std::uint64_t size; + const char* occurrenceId; + std::int32_t userId; + std::uint32_t padding; + const char* context; +}; + +struct ShellCoreErrorDialogParam { + const char* message; + const char* const* formatArgs; + std::uint8_t flag; +}; + +struct SystemServiceDaemonEvent; +struct SystemServiceLocalProcessStatus; +struct SystemServicePSButtonEvent; +struct SystemServicePrivacyDefinitionData; +struct SystemServicePrivacyDefinitionVersion; +struct SystemServiceTitleWorkaroundInfo; + +struct SystemServiceStoreParam { + std::uint32_t size; +}; + +struct SystemServiceCpuPstateParam; +struct SystemServiceLocalProcessParam; +struct SystemServiceJvmProcessParam; +struct SystemServicePs2ProcessParam; +struct SystemServiceAppInstallStatus; +struct SystemServiceAppStatus; + +struct ShellCoreLaunchByUriParam { + std::uint32_t option; + std::int32_t userId; +}; + +struct ShellCoreTelemetryToken; + +struct ShellCoreUmmStatus { + std::int32_t state; + std::int32_t inDeviceMuteState; +}; + +struct ShellCorePbtcUserInfoList; +struct ShellCorePrivacyEventData; +struct ShellCorePsnAccountInfoFirst; +struct ShellCorePsnAccountInfoSecond; +struct ShellCorePsnAccountInfoThird; +struct ShellCorePsnAccountInfoFourth; +struct ShellCorePsnAccountInfoFifth; +struct ShellCoreAppLaunchTypeInfo; + +struct LncGpuCrashAppStatus { + char titleId[16]; + std::int32_t appId; + std::int32_t appLocalPid; + char path[1024]; + std::int32_t appType; + std::int32_t coredumpReason; + char corefileName[256]; + std::uint32_t exceptionCode; + std::uint32_t appCategoryType; +}; + +struct LncLaunchParam { + std::uint32_t size; + std::int32_t userId; + std::int32_t appAttr; + std::int32_t enableCrashReport; + std::uint64_t checkFlag; + std::uint64_t contextId; + bool isSpeculativeLaunch; +}; + +struct LncDaemonEvent; +struct LncShellUiEvent; + +struct LncLocalProcessStatus { + std::int32_t appLocalPid; + std::uint8_t reserved[32]; +}; + +struct LncCoredumpState { + std::uint32_t progress; + std::uint32_t isFinished; + std::int32_t result; +}; + +struct LncVideoFinalizeState { + std::uint32_t progress; + std::int32_t result; +}; + +struct LncLocalProcessParam; + +struct LncAppStatus { + std::int32_t appId; + std::int32_t launchRequestAppId; + std::int32_t appType; + std::int32_t appAttr; + char titleId[16]; + std::uint32_t appCategoryType; + std::int32_t appBootMode; + std::int32_t appBootSubMode; + char appVer[6]; + char contentVersion[11]; + bool isSystemExApp; + bool isCdlgInitialized; +}; + +struct LncShellUiAppStatus { + std::int32_t appId; + std::int32_t appType; + std::int32_t appAttr; + std::int32_t launchRequestAppId; + std::int32_t userId; + std::int32_t isActiveCdlg; + char path[1024]; + char sceSysDir[256]; + std::int32_t isCoredumped; + std::int32_t isPrxModuleLoadFailed; + std::int32_t appLocalPid; + std::int32_t crashReportMode; + char category[4]; + std::uint32_t appCategoryType; + std::int32_t appBootMode; + std::int32_t appBootSubMode; +}; + +struct AppMessagingMessage { + std::int32_t sender; + std::uint32_t messageType; + std::uint8_t payload[8192]; + std::uint32_t payloadSize; + std::uint64_t timestamp; +}; + +struct UsbStorageEvent; +struct UsbStorageDeviceInfo; + +using UsbStorageCallback = void (APS5_VABI *)(const UsbStorageEvent* event, void* userData); + +extern "C" { + +int APS5_VABI sceSystemServiceLoadExec(const char* path, const char* const* arguments); +int APS5_VABI sceSystemServiceDisableNoticeScreenSkipFlagAutoSet(void); +int APS5_VABI sceSystemServiceGetDisplaySafeAreaInfo(SystemServiceDisplaySafeAreaInfo* info); +int APS5_VABI sceSystemServiceShowDisplaySafeAreaSettings(void); +int APS5_VABI sceSystemServiceGetHdrToneMapLuminance(SystemServiceHdrToneMapLuminance* luminance); +int APS5_VABI sceSystemServiceGetNoticeScreenSkipFlag(bool* value); +int APS5_VABI sceSystemServiceGetStatus(SystemServiceStatus* status); +int APS5_VABI sceSystemServiceHideSplashScreen(void); +int APS5_VABI sceSystemServiceParamGetInt(int paramId, int* value); +int APS5_VABI sceSystemServiceParamGetString(int paramId, char* buf, size_t bufSize); +int APS5_VABI sceSystemServicePowerTick(void); +int APS5_VABI sceSystemServiceReceiveEvent(SystemServiceEvent* event); +int APS5_VABI sceSystemServiceReportAbnormalTermination(const void* info); +int APS5_VABI sceSystemServiceSetNoticeScreenSkipFlag(void); +void APS5_VABI sceSystemServiceInitializePlayerDialogParam(SystemServicePlayerDialogParam* param); +int APS5_VABI sceSystemServiceDisableMediaPlay(); +int APS5_VABI sceSystemServiceReenableMediaPlay(); +int APS5_VABI sceSystemServiceLaunchPlayerDialog(const void* param); +int APS5_VABI sceSystemServiceLaunchWebBrowser(const char* uri); +int APS5_VABI sceSystemServiceLaunchApp(const char* titleId, const char* const* arguments, const void* param); +int APS5_VABI sceSystemServiceDisableMusicPlayer(void); +int APS5_VABI sceSystemServiceOpenChallengeActivity(void); +int APS5_VABI sceSystemServiceOpenTournamentOccurrence(const SystemServiceTournamentOccurrenceParam* param); +int APS5_VABI sceSystemServiceAddLocalProcessForPsmKit(const char*, const char* const*, const void*); +int APS5_VABI sceSystemServiceKillLocalProcessForPsmKit(int); +int APS5_VABI sceSystemServiceReenableMusicPlayer(void); +int APS5_VABI sceSystemServiceShowControllerSettings(void); +int APS5_VABI sceSystemServiceGetAppIdOfRunningBigApp(void); +int APS5_VABI sceSystemServiceKillApp(int appId, int how, int reason, int coreDump); +int APS5_VABI sceLncUtilKillApp(uint32_t appId); +int APS5_VABI sceLncUtilKillAppWithReason(uint32_t appId, int reason); +int APS5_VABI sceSystemServiceLaunchSystemDeeplink(void); +int APS5_VABI sceShellCoreUtilLaunchByUriParamInit(void); +int APS5_VABI sceSystemStateMgrTickVideoPlayback(void); +int APS5_VABI sceSystemServiceTelemetrySetData2WithUserId(void); +int APS5_VABI sceShellCoreUtilStartUmmDictation(void); +int APS5_VABI sceSystemServiceGetSpotifyTitleId(void); +int APS5_VABI sceSystemServiceGetAppStatusListContainsDaemon(void); +int APS5_VABI sceSystemServiceSwitchToVRApp(void); +int APS5_VABI sceSystemServiceSwitchToNonVRApp(void); +int APS5_VABI sceLncUtilGetSpmemAllocatorConfigValue(void); +int APS5_VABI sceCsbMgrInitialize(void); +int APS5_VABI sceCsbMgrTerminate(void); +int APS5_VABI sceCsbMgrCreateLocalSandbox(void); +int APS5_VABI sceCsbMgrDestroyLocalSandbox(void); +int APS5_VABI sceCsbMgrSwitchLocalSandbox(void); +int APS5_VABI sceCsbMgrGetCurrentLocalSandboxId(void); +int APS5_VABI sceCsbMgrGetLocalSandboxIdList(void); +int APS5_VABI sceCsbMgrGetLocalSandboxInfo(void); +int APS5_VABI sceCsbMgrSetLocalSandboxInfo(void); +int APS5_VABI sceCsbMgrIssueStreamingSandboxInfo(void); +int APS5_VABI sceReportSequenceHandlerRequestReport(void); +int APS5_VABI sceReportSequenceHandlerCancelReport(void); +int APS5_VABI sceReportSequenceHandlerExistsEvent(void); +int APS5_VABI sceReportSequenceHandlerUpdateEventCache(void); +int APS5_VABI sceReportSequenceHandlerGetEventCache(void); +int APS5_VABI sceLncUtilRegisterCallEntries(void); +int APS5_VABI sceLncUtilGetSpmemConfigJson(void); +int APS5_VABI sceLncUtilExportSpmemConfigJson(void); +int APS5_VABI sceLncUtilImportSpmemConfigJson(void); +int APS5_VABI sceShellCoreUtilExitAppWithValue(void); +int APS5_VABI sceShellCoreUtilNpDebugSpecialNotification(void); +int APS5_VABI sceShellCoreUtilIsDddTemperatureDanger(void); +int APS5_VABI sceShellCoreUtilIsM2StorageTemperatureDanger(void); +int APS5_VABI sceShellCoreUtilGetAvailableSizeM2(void); +int APS5_VABI sceShellCoreUtilNotifyConnectAccountStatusChanged(void); +int APS5_VABI sceShellCoreUtilIsInternalCronosUser(void); +int APS5_VABI sceShellCoreUtilChangePbtcMode(void); +int APS5_VABI sceShellCoreUtilTelemetryCacheData(void); +int APS5_VABI sceShellCoreUtilMicMuteKeyPressed(void); +int APS5_VABI sceShellCoreUtilSwitchMicMute(void); +int APS5_VABI sceShellCoreUtilNotifyStartEventToUniversalMicMute(void); +int APS5_VABI sceShellCoreUtilIsLotusMicActivated(void); +int APS5_VABI sceShellCoreUtilResetAllNoticeScreenSkipFlag(void); +int APS5_VABI sceShellCoreUtilResetNoticeScreenSkipFlag(void); +int APS5_VABI sceShellCoreUtilGetNoticeScreenSkipFlagByAppId(void); +int APS5_VABI sceShellCoreUtilGetPasscodeInputType(void); +int APS5_VABI sceShellCoreUtilGetPasscodeDisplayInfo(void); +int APS5_VABI sceShellCoreUtilNotifySystemResumeTelemetryInfo(void); +int APS5_VABI sceShellCoreUtilUpdateTelemetryToken(void); +int APS5_VABI sceShellCoreUtilGetVRBaseMatRectangles(void); +int APS5_VABI sceShellCoreUtilSetVRBaseMatRectangles(void); +int APS5_VABI sceShellCoreUtilIsLaunchBlockDialog(void); +int APS5_VABI sceShellCoreUtilGetConsoleToken(void); +int APS5_VABI sceShellCoreUtilGetDeviceIdByDeviceUniqueId(void); +int APS5_VABI sceShellCoreUtilGetDeviceUniqueIdByDeviceId(void); +int APS5_VABI sceShellCoreUtilGetStreamingClientInfo(void); +int APS5_VABI sceShellCoreUtilRequestCffUpdate(void); +int APS5_VABI sceShellCoreUtilGetCffConfig(void); +int APS5_VABI sceShellCoreUtilRemoveCffConfigFile(void); +int APS5_VABI sceShellCoreUtilDebugGetNumberOfCffItems(void); +int APS5_VABI sceShellCoreUtilDebugGetCffInfo(void); +int APS5_VABI sceShellCoreUtilDebugSetCffStatus(void); +int APS5_VABI sceShellCoreUtilGetPeripheralConnectionSessionId(void); +int APS5_VABI sceShellCoreUtilGetCdlgEnabledFreezeRendering(void); +int APS5_VABI sceShellCoreUtilGetNpTitleId(void); +int APS5_VABI sceShellCoreUtilIsCronosInGameCommerceEnabled(void); +int APS5_VABI sceShellCoreUtilLemSettingGet(void); +int APS5_VABI sceShellCoreUtilLemSettingSet(void); +int APS5_VABI sceShellCoreUtilLemSettingGetList(void); +int APS5_VABI sceShellCoreUtilLemSettingReset(void); +int APS5_VABI sceShellCoreUtilIsEChassisVariant(void); +int APS5_VABI sceSystemStateMgrGetRebootCause(void); +int APS5_VABI sceCoredumpSequenceHandlerUpdateEventCache(void); +int APS5_VABI sceCoredumpSequenceHandlerGetEventCache(void); +int APS5_VABI sceCoredumpSequenceHandlerGetWorkingEventSummary(void); +int APS5_VABI sceCoredumpSequenceHandlerGetCoredumpStatus(void); +int APS5_VABI sceCoredumpSequenceHandlerGetCoredumpStatusByAppId(void); +int APS5_VABI sceCoredumpSequenceHandlerCancelCoredump(void); +int APS5_VABI sceSystemServiceIsBgmPlaying(void); +int APS5_VABI sceShellCoreUtilIsBgmPlaying(void); +int APS5_VABI sceAppMessagingClearEventFlag(std::int32_t appId, std::uint64_t flags); +int APS5_VABI sceAppMessagingReceiveMsg(AppMessagingMessage* message); +int APS5_VABI sceAppMessagingSendMsg(std::uint32_t appId, std::uint32_t messageId, const void* data, std::size_t size, std::uint32_t flags); +int APS5_VABI sceAppMessagingSendMsgToShellCore(std::uint32_t messageId, const void* data, std::size_t size, std::uint32_t flags); +int APS5_VABI sceAppMessagingSendMsgToShellUI(std::uint32_t messageId, const void* data, std::size_t size, std::uint32_t flags); +int APS5_VABI sceAppMessagingSetEventFlag(std::int32_t appId, std::uint64_t flags); +int APS5_VABI sceAppMessagingTryGetEventFlag(std::uint64_t mask, std::uint64_t* flags, std::uint8_t clear); +int APS5_VABI sceAppMessagingTryReceiveMsg(AppMessagingMessage* message); +int APS5_VABI sceLncUtilAcquireCpuBudgetOfExtraAudioDevices(); +int APS5_VABI sceLncUtilAcquireCpuBudgetOfImeForBigApp(); +int APS5_VABI sceLncUtilAcquireCpuBudgetOfInGameStore(); +int APS5_VABI sceLncUtilActivateCdlg(); +int APS5_VABI sceLncUtilAddLocalProcess(std::int32_t appId, const char* path, const char* const* argv, const LncLocalProcessParam* param); +int APS5_VABI sceLncUtilBlockAppSuspend(const char* reason); +int APS5_VABI sceLncUtilBlockingGetEventForDaemon(LncDaemonEvent* event, std::uint64_t receiveArgument); +int APS5_VABI sceLncUtilContinueApp(std::int32_t appId); +int APS5_VABI sceLncUtilCrashSyscore(); +int APS5_VABI sceLncUtilDeactivateCdlg(); +int APS5_VABI sceLncUtilDeclareReadyForSuspend(); +int APS5_VABI sceLncUtilDisableSuspendNotification(); +int APS5_VABI sceLncUtilEnableSuspendNotification(); +int APS5_VABI sceLncUtilFinishSpecialResume(); +int APS5_VABI sceLncUtilForceKillApp(std::int32_t appId); +int APS5_VABI sceLncUtilForceKillLocalProcess(std::int32_t appId, std::int32_t processId); +int APS5_VABI sceLncUtilGetAppCategory(std::int32_t appId, char* category); +int APS5_VABI sceLncUtilGetAppCategoryType(std::int32_t appId, std::uint32_t* categoryType); +int APS5_VABI sceLncUtilGetAppFocusedAppStatus(LncAppStatus* status); +int APS5_VABI sceLncUtilGetAppId(const char* titleId); +int APS5_VABI sceLncUtilGetAppIdListOfBigApp(std::int32_t* appIds, std::uint32_t capacity, std::uint32_t* count); +int APS5_VABI sceLncUtilGetAppIdOfRunningBigApp(); +int APS5_VABI sceLncUtilGetAppLaunchedUser(std::int32_t appId, std::int32_t* userId); +int APS5_VABI sceLncUtilGetAppStatus(LncAppStatus* status); +int APS5_VABI sceLncUtilGetAppStatusList(LncAppStatus* statuses, std::uint32_t capacity, std::uint32_t* count); +int APS5_VABI sceLncUtilGetAppStatusListForShellUIReboot(LncShellUiAppStatus* statuses, std::uint32_t capacity, std::uint32_t* count); +int APS5_VABI sceLncUtilGetAppTitleId(std::int32_t appId, char* titleId); +int APS5_VABI sceLncUtilGetAppType(std::int32_t appId, std::uint32_t* type); +int APS5_VABI sceLncUtilGetCdlgExec(std::int32_t appId, bool* executing); +int APS5_VABI sceLncUtilGetCdlgType(std::int32_t appId, std::uint32_t* type); +int APS5_VABI sceLncUtilGetCoredumpState(std::int32_t appId, std::int32_t processId, LncCoredumpState* state); +int APS5_VABI sceLncUtilGetDbgExecutablePath(char* path, std::uint64_t selector); +int APS5_VABI sceLncUtilGetEventForDaemon(LncDaemonEvent* event); +int APS5_VABI sceLncUtilGetEventForShellUI(LncShellUiEvent* event); +int APS5_VABI sceLncUtilGetGpuCrashFullDumpAppStatus(LncGpuCrashAppStatus* status); +int APS5_VABI sceLncUtilGetLocalProcessStatusList(LncLocalProcessStatus* statuses, std::uint32_t capacity, std::uint32_t* count); +int APS5_VABI sceLncUtilGetParentSocket(); +int APS5_VABI sceLncUtilGetResultKillApp(std::uint32_t requestId); +int APS5_VABI sceLncUtilGetResultLaunchAppByTitleId(std::uint32_t requestId); +int APS5_VABI sceLncUtilGetVideoFinalizeState(std::int32_t appId, std::int32_t processId, LncVideoFinalizeState* state); +int APS5_VABI sceLncUtilInitialize(); +int APS5_VABI sceLncUtilIsActiveCdlg(bool* active); +int APS5_VABI sceLncUtilIsAppLaunched(const char* titleId, bool* launched); +int APS5_VABI sceLncUtilIsAppSuspended(std::int32_t appId, bool* suspended); +int APS5_VABI sceLncUtilIsCdlgActivated(std::uint8_t* activated); +bool APS5_VABI sceLncUtilIsCpuBudgetOfExtraAudioDevicesAvailable(); +int APS5_VABI sceLncUtilIsHostBoot(std::int32_t appId, bool* hostBoot); +int APS5_VABI sceLncUtilIsPs2Emu(bool* emulated); +bool APS5_VABI sceLncUtilIsShellUiFgAndGameBgCpuMode(); +int APS5_VABI sceLncUtilIsSpeculativeLaunch(std::int32_t appId, bool* speculative); +int APS5_VABI sceLncUtilKickCoredumpOnlyProcMem(std::int32_t appId, std::int32_t processId, const char* first, const char* second); +int APS5_VABI sceLncUtilKillLocalProcess(std::int32_t appId, std::int32_t processId); +int APS5_VABI sceLncUtilLaunchApp(const char* titleId, const char* const* argv, const LncLaunchParam* param); +int APS5_VABI sceLncUtilLoadExec(const char* path, const char* const* argv); +int APS5_VABI sceLncUtilNotifyCoredumpRequestEnd(std::int32_t appId, std::int32_t processId, std::int32_t result); +int APS5_VABI sceLncUtilNotifyCoredumpRequestProgress(std::int32_t appId, std::int32_t processId, std::int32_t progress); +int APS5_VABI sceLncUtilNotifyVshReady(std::uint32_t errorCode); +int APS5_VABI sceLncUtilRaiseException(std::int32_t appId, std::uint64_t exception); +int APS5_VABI sceLncUtilRaiseExceptionLocalProcess(std::int32_t appId, std::int32_t processId, std::uint64_t exception); +int APS5_VABI sceLncUtilRegisterCdlgSharedMemoryName(const char* name); +int APS5_VABI sceLncUtilRegisterDaemon(); +int APS5_VABI sceLncUtilRegisterShellUI(); +int APS5_VABI sceLncUtilReleaseCpuBudgetOfExtraAudioDevices(); +int APS5_VABI sceLncUtilReleaseCpuBudgetOfImeForBigApp(); +int APS5_VABI sceLncUtilReleaseCpuBudgetOfInGameStore(); +int APS5_VABI sceLncUtilResumeApp(std::int32_t appId, std::uint64_t flags); +int APS5_VABI sceLncUtilResumeLocalProcess(std::int32_t processId); +int APS5_VABI sceLncUtilSetAppFocus(std::int32_t appId, std::uint64_t flags, std::uint64_t contextId); +int APS5_VABI sceLncUtilSetCdlgExec(std::int32_t appId, std::uint8_t executing); +int APS5_VABI sceLncUtilSetControllerFocus(std::int32_t appId); +int APS5_VABI sceLncUtilSetControllerFocusPermission(std::uint8_t permission); +int APS5_VABI sceLncUtilStartKillApp(std::int32_t appId, std::uint32_t* requestId); +int APS5_VABI sceLncUtilStartLaunchAppByTitleId(const char* titleId, const char* const* argv, const LncLaunchParam* param, std::uint32_t* requestId); +int APS5_VABI sceLncUtilSuspendApp(std::int32_t appId, std::uint64_t flags, std::int32_t reason); +int APS5_VABI sceLncUtilSuspendBackgroundApp(std::int32_t first, std::int32_t second); +int APS5_VABI sceLncUtilSuspendLocalProcess(std::int32_t processId); +int APS5_VABI sceLncUtilTerminate(); +int APS5_VABI sceLncUtilTryBlockAppSuspend(const char* reason); +int APS5_VABI sceLncUtilUnblockAppSuspend(const char* reason); +int APS5_VABI sceLncUtilUnregisterCdlgSharedMemoryName(const char* name); +int APS5_VABI sceLncUtilUnregisterDaemon(); +int APS5_VABI sceLncUtilUnregisterShellUI(); +int APS5_VABI sceShellCoreUtilAccessibilityZoomLock(); +int APS5_VABI sceShellCoreUtilAccessibilityZoomUnlock(); +int APS5_VABI sceShellCoreUtilAcquireBgmCpuBudget(); +int APS5_VABI sceShellCoreUtilAcquireRemotePlayCpuBudget(); +int APS5_VABI sceShellCoreUtilAcquireSharePlayCpuBudget(); +int APS5_VABI sceShellCoreUtilActivateAbort(std::intptr_t handle); +int APS5_VABI sceShellCoreUtilActivateGetStatus(std::intptr_t handle, std::int32_t* status, std::int32_t* result); +int APS5_VABI sceShellCoreUtilActivateInit(std::int32_t type, std::intptr_t* handle); +int APS5_VABI sceShellCoreUtilActivateIsActivated(std::intptr_t handle, bool* activated); +int APS5_VABI sceShellCoreUtilActivateRecordActivation(); +int APS5_VABI sceShellCoreUtilActivateStart(std::intptr_t handle); +int APS5_VABI sceShellCoreUtilActivateStartAsync(std::intptr_t handle); +int APS5_VABI sceShellCoreUtilActivateTerm(std::intptr_t handle); +int APS5_VABI sceShellCoreUtilChangeRunLevel(std::int32_t runLevel); +int APS5_VABI sceShellCoreUtilChangeToStaffModeForIDU(); +int APS5_VABI sceShellCoreUtilCheckerAbort(); +int APS5_VABI sceShellCoreUtilCleanupCrashReport(); +int APS5_VABI sceShellCoreUtilClearAppData(); +int APS5_VABI sceShellCoreUtilClearPs4AppCategoryDefaultsListUpdate(); +int APS5_VABI sceShellCoreUtilClearPsnAccountInfo(); +int APS5_VABI sceShellCoreUtilCrashReportRequestCancel(); +int APS5_VABI sceShellCoreUtilDeclareBeginOfExternalStorageAppMove(); +int APS5_VABI sceShellCoreUtilDeclareEndOfExternalStorageAppMove(); +int APS5_VABI sceShellCoreUtilDeleteDiscInstalledTitleWorkaroundFile(); +int APS5_VABI sceShellCoreUtilDeleteDownloadedHidConfigFile(std::int32_t configIndex); +int APS5_VABI sceShellCoreUtilDeleteDownloadedNetEvConfigFile(); +int APS5_VABI sceShellCoreUtilDeleteDownloadedTitleWorkaroundFile(); +int APS5_VABI sceShellCoreUtilDoFsck(const char* path); +int APS5_VABI sceShellCoreUtilDownloadHidConfigFileFromServer(std::int32_t configIndex); +int APS5_VABI sceShellCoreUtilDownloadNetEvConfigFileFromServer(); +int APS5_VABI sceShellCoreUtilDownloadTitleWorkaroundFileFromServer(); +int APS5_VABI sceShellCoreUtilEndUmmDictation(); +int APS5_VABI sceShellCoreUtilEnterPowerLockSection(); +int APS5_VABI sceShellCoreUtilExecuteCrashReport(); +int APS5_VABI sceShellCoreUtilExfatFormatExternalHdd(const char* path); +int APS5_VABI sceShellCoreUtilExitApp(); +int APS5_VABI sceShellCoreUtilExitMiniApp(); +int APS5_VABI sceShellCoreUtilExitMiniAppWithValue(const char* value); +int APS5_VABI sceShellCoreUtilFormatExternalHdd(const char* path); +int APS5_VABI sceShellCoreUtilFormatHddForRestore(); +int APS5_VABI sceShellCoreUtilGetAppData(const char* key, void* data, std::int32_t capacity, std::int32_t* size); +int APS5_VABI sceShellCoreUtilGetAppEnableTTS(std::int32_t appId, bool* enabled); +int APS5_VABI sceShellCoreUtilGetAppEnterButtonAssign(std::int32_t appId, std::int32_t* assignment); +int APS5_VABI sceShellCoreUtilGetAppLaunchTypeInfo(std::int32_t appId, ShellCoreAppLaunchTypeInfo* info); +int APS5_VABI sceShellCoreUtilGetAppLaunchedParamInt(std::int32_t appId, const char* key, std::int32_t* value); +int APS5_VABI sceShellCoreUtilGetAppLaunchedParamIntByBudgetType(std::int32_t budgetType, const char* key, std::int32_t* value); +int APS5_VABI sceShellCoreUtilGetAppLaunchedParamString(std::int32_t appId, const char* key, char* value, std::int32_t capacity); +int APS5_VABI sceShellCoreUtilGetAppLaunchedParamStringByBudgetType(std::int32_t budgetType, const char* key, char* value, std::int32_t capacity); +int APS5_VABI sceShellCoreUtilGetAutoPowerDownRemainingSeconds(); +int APS5_VABI sceShellCoreUtilGetBasicProductShape(); +int APS5_VABI sceShellCoreUtilGetCheckerString(const char* key, char* value, std::size_t capacity); +int APS5_VABI sceShellCoreUtilGetCheckerStringEx(const char* firstKey, const char* secondKey, char* value, std::size_t capacity); +int APS5_VABI sceShellCoreUtilGetCloudClientStatus(std::uint32_t* status); +int APS5_VABI sceShellCoreUtilGetCrashReportCoreFileSetSize(); +int APS5_VABI sceShellCoreUtilGetCrashReportFilterInfoStart(); +int APS5_VABI sceShellCoreUtilGetCrashReportInfoForBoot(); +int APS5_VABI sceShellCoreUtilGetCrashReportInfoForBootStart(); +int APS5_VABI sceShellCoreUtilGetCrashReportInfoStart(); +int APS5_VABI sceShellCoreUtilGetCrashReportResult(); +int APS5_VABI sceShellCoreUtilGetCrashReportStatus(); +int APS5_VABI sceShellCoreUtilGetCrashReportUploadStatus(); +int APS5_VABI sceShellCoreUtilGetDeviceIndexBehavior(std::uint32_t* behavior, std::int32_t* userId, std::uint32_t* scene); +int APS5_VABI sceShellCoreUtilGetDeviceIndexBehaviorWithTimeout(std::uint32_t* behavior, std::int32_t* userId, std::uint32_t* scene, std::uint8_t timeout); +int APS5_VABI sceShellCoreUtilGetEffectiveTotalSizeOfUserPartition(std::uint64_t* size); +std::uint64_t APS5_VABI sceShellCoreUtilGetFreeSizeOfAvContentsTmp(); +int APS5_VABI sceShellCoreUtilGetFreeSizeOfUserPartition(std::uint64_t* freeSize, std::uint64_t* totalSize); +int APS5_VABI sceShellCoreUtilGetFsckProgress(const char* titleId, std::uint32_t* progress); +int APS5_VABI sceShellCoreUtilGetGameLiveStreamingStatus(bool* active); +bool APS5_VABI sceShellCoreUtilGetGnmCompositorOnScreenProfilerFlag(); +int APS5_VABI sceShellCoreUtilGetGpuLoadEmulationMode(); +int APS5_VABI sceShellCoreUtilGetGpuLoadEmulationModeByAppId(std::int32_t appId); +int APS5_VABI sceShellCoreUtilGetHidConfigFileInfoString(char* value, std::size_t capacity, std::int32_t configIndex); +int APS5_VABI sceShellCoreUtilGetHidConfigFileString(char* value, std::size_t capacity, std::int32_t configIndex); +int APS5_VABI sceShellCoreUtilGetHidConfigName(char* value, std::size_t capacity, std::int32_t configIndex); +int APS5_VABI sceShellCoreUtilGetHidConfigNum(std::int32_t* configNum); +int APS5_VABI sceShellCoreUtilGetIDUMode(std::uint8_t* mode); +bool APS5_VABI sceShellCoreUtilGetImposeMenuFlagForPs2Emu(std::int32_t appId); +int APS5_VABI sceShellCoreUtilGetManifestFileStatus(); +int APS5_VABI sceShellCoreUtilGetNeedSizeOfAppContent(std::uint64_t* size); +int APS5_VABI sceShellCoreUtilGetNetEvConfigFileInfoString(char* value, std::size_t capacity); +int APS5_VABI sceShellCoreUtilGetOutOfVrPlayZoneWarning(); +int APS5_VABI sceShellCoreUtilGetPapcGamePcl(); +int APS5_VABI sceShellCoreUtilGetPbtcUserInfoList(ShellCorePbtcUserInfoList* info); +int APS5_VABI sceShellCoreUtilGetPlatformPrivacyDefinitionEventData(const char* firstKey, const char* secondKey, ShellCorePrivacyEventData* data); +float APS5_VABI sceShellCoreUtilGetProgressOfFormatExternalHdd(); +float APS5_VABI sceShellCoreUtilGetProgressOfFsck(); +int APS5_VABI sceShellCoreUtilGetPs4AppCategoryDefaultsListId(void* data, std::size_t capacity); +int APS5_VABI sceShellCoreUtilGetPs4AppCategoryForTitleId(const char* titleId); +int APS5_VABI sceShellCoreUtilGetPsStoreIconLayout(std::int32_t appId); +int APS5_VABI sceShellCoreUtilGetPsStoreIconState(std::int32_t appId); +int APS5_VABI sceShellCoreUtilGetPsnAccountInfo(ShellCorePsnAccountInfoFirst* first, ShellCorePsnAccountInfoSecond* second, ShellCorePsnAccountInfoThird* third, ShellCorePsnAccountInfoFourth* fourth, ShellCorePsnAccountInfoFifth* fifth); +int APS5_VABI sceShellCoreUtilGetRemotePlayStatus(bool* active); +int APS5_VABI sceShellCoreUtilGetRunLevel(); +int APS5_VABI sceShellCoreUtilGetSharePlayStatus(bool* active); +int APS5_VABI sceShellCoreUtilGetSocialScreenStatus(bool* active); +int APS5_VABI sceShellCoreUtilGetSplashScreenState(std::int32_t appId); +int APS5_VABI sceShellCoreUtilGetSupportSiteURL(std::uint32_t first, std::uint32_t second, char* value, std::size_t capacity); +bool APS5_VABI sceShellCoreUtilGetSuspendConfirmationDialogFlag(std::int32_t appId); +int APS5_VABI sceShellCoreUtilGetSystemBGState(std::int32_t appId, std::uint32_t* state); +int APS5_VABI sceShellCoreUtilGetSystemBGWaveColor(std::int32_t appId, std::uint32_t* color); +int APS5_VABI sceShellCoreUtilGetSystemBGWaveState(std::int32_t appId, std::uint32_t* state); +int APS5_VABI sceShellCoreUtilGetTelemetryToken(ShellCoreTelemetryToken* token); +int APS5_VABI sceShellCoreUtilGetTitleWorkaroundFileInfoString(char* value, std::size_t capacity); +int APS5_VABI sceShellCoreUtilGetTitleWorkaroundFileString(char* value, std::size_t capacity); +int APS5_VABI sceShellCoreUtilGetUIStatus(std::uint64_t* status); +int APS5_VABI sceShellCoreUtilGetUmmStatus(std::int32_t userId, ShellCoreUmmStatus* status); +int APS5_VABI sceShellCoreUtilGetUserFocus(std::int32_t appId, std::int32_t* userId); +int APS5_VABI sceShellCoreUtilGetUserIdOfMorpheusUser(); +int APS5_VABI sceShellCoreUtilGetVMStatsForTelemetry(char* value, std::size_t capacity); +int APS5_VABI sceShellCoreUtilGetVersionNumberOfCameraCalibrationData(); +int APS5_VABI sceShellCoreUtilGoBackToKratosCurrentSessionGame(); +int APS5_VABI sceShellCoreUtilHideBlocksFromUser(std::int64_t bytes, std::int32_t flags); +int APS5_VABI sceShellCoreUtilIncrementVersionNumberOfCameraCalibrationData(); +bool APS5_VABI sceShellCoreUtilIsAccessibilityZoomLocked(std::int32_t appId); +bool APS5_VABI sceShellCoreUtilIsBgmCpuBudgetAcquired(); +bool APS5_VABI sceShellCoreUtilIsBgmCpuBudgetAvailable(); +bool APS5_VABI sceShellCoreUtilIsExternalStorageAppMoveInProgress(); +int APS5_VABI sceShellCoreUtilIsEyeToEyeDistanceAdjusted(std::uint32_t userId, std::uint8_t* adjusted); +bool APS5_VABI sceShellCoreUtilIsGameLiveStreamingOnAir(); +int APS5_VABI sceShellCoreUtilIsIDUState(); +bool APS5_VABI sceShellCoreUtilIsImposeScreenOverlaid(); +bool APS5_VABI sceShellCoreUtilIsInSystemSuspendBlackList(std::uint32_t appId); +int APS5_VABI sceShellCoreUtilIsInternalKratosUser(); +int APS5_VABI sceShellCoreUtilIsKilledOrSuspendedByLogout(std::int32_t first, std::int32_t second, std::uint8_t* result); +int APS5_VABI sceShellCoreUtilIsNeededCrashReport(); +bool APS5_VABI sceShellCoreUtilIsPowerSaveAlertRequested(); +bool APS5_VABI sceShellCoreUtilIsRemotePlayCpuBudgetAcquired(); +bool APS5_VABI sceShellCoreUtilIsScreenSaverOn(); +bool APS5_VABI sceShellCoreUtilIsSharePlayCpuBudgetAcquired(); +int APS5_VABI sceShellCoreUtilIsShowCrashReport(); +int APS5_VABI sceShellCoreUtilIsTemperatureDanger(); +int APS5_VABI sceShellCoreUtilIsTitleWorkaroundEnabled(std::int32_t selector, const char* key); +bool APS5_VABI sceShellCoreUtilIsUsbMassStorageMounted(std::uint32_t deviceIndex); +int APS5_VABI sceShellCoreUtilLaunchByUri(const char* uri, const ShellCoreLaunchByUriParam* param); +int APS5_VABI sceShellCoreUtilLeavePowerLockSection(); +int APS5_VABI sceShellCoreUtilMakeManifestFile(); +int APS5_VABI sceShellCoreUtilMountAppRight(const char* key); +int APS5_VABI sceShellCoreUtilMountDownloadDataForShellUI(const char* key); +int APS5_VABI sceShellCoreUtilMountHddForBackup(); +int APS5_VABI sceShellCoreUtilMountHddForRestore(); +int APS5_VABI sceShellCoreUtilNavigateToAnotherApp(std::uint32_t target); +int APS5_VABI sceShellCoreUtilNavigateToGoHome(std::uint32_t target); +int APS5_VABI sceShellCoreUtilNavigateToLaunchedApp(std::uint32_t target); +int APS5_VABI sceShellCoreUtilNotificationCancelForIDU(std::int64_t notificationId); +int APS5_VABI sceShellCoreUtilNotificationRequestedForIDU(std::int64_t notificationId, const char* text, std::uint32_t type); +int APS5_VABI sceShellCoreUtilNotifyBgmCoreTermination(); +int APS5_VABI sceShellCoreUtilNotifyFsReadError(std::int32_t first, std::int32_t second, std::int32_t third, const char* detail); +int APS5_VABI sceShellCoreUtilNotifyImeStatusChanged(std::int32_t imeStatus, std::uint8_t isCalledFromGame); +int APS5_VABI sceShellCoreUtilNotifyPsnAccountInfoReceived(); +int APS5_VABI sceShellCoreUtilNotifySystemSuspendTelemetryInfo(std::uint32_t info); +int APS5_VABI sceShellCoreUtilPfAuthClientConsoleTokenClearCache(); +int APS5_VABI sceShellCoreUtilPostActivityForPsNow(std::int32_t type, const char* activity); +int APS5_VABI sceShellCoreUtilPostErrorLog(const char* titleId, std::int32_t internalErrorCode, const char* shortError, const char* messageBuffer, std::int32_t suggestionType, const char* logReport); +int APS5_VABI sceShellCoreUtilPostLaunchConfirmResult(std::uint32_t first, std::uint32_t second); +int APS5_VABI sceShellCoreUtilPostPsmEventToShellUI(std::int32_t eventId, const char* data); +int APS5_VABI sceShellCoreUtilPreNotifyOfGameLiveStreaming(); +int APS5_VABI sceShellCoreUtilPreNotifyOfRemotePlay(); +int APS5_VABI sceShellCoreUtilPreNotifyOfSharePlay(); +int APS5_VABI sceShellCoreUtilReleaseBgmCpuBudget(); +int APS5_VABI sceShellCoreUtilReleaseRemotePlayCpuBudget(); +int APS5_VABI sceShellCoreUtilReleaseSharePlayCpuBudget(); +int APS5_VABI sceShellCoreUtilReportSessionErrorToGaikaiController(std::int32_t error, const char* detail); +int APS5_VABI sceShellCoreUtilReportUnexpectedFatalErrorToSystemTelemetry(std::int32_t error, const char* detail); +int APS5_VABI sceShellCoreUtilRequestCameraCalibration(); +int APS5_VABI sceShellCoreUtilRequestEjectDevice(const char* path); +int APS5_VABI sceShellCoreUtilRequestRebootApp(std::int32_t appId); +int APS5_VABI sceShellCoreUtilRequestShutdown(std::int32_t reason); +int APS5_VABI sceShellCoreUtilResetAutoPowerDownTimer(); +int APS5_VABI sceShellCoreUtilResetBgdcConfig(); +int APS5_VABI sceShellCoreUtilSetAppData(const char* key, const char* value); +int APS5_VABI sceShellCoreUtilSetBgmProhibition(std::uint32_t value); +int APS5_VABI sceShellCoreUtilSetDeviceIndexBehavior(std::uint32_t behavior, std::int32_t userId, std::uint8_t scene); +int APS5_VABI sceShellCoreUtilSetGameLiveStreamingOnAirFlag(std::int32_t enabled); +int APS5_VABI sceShellCoreUtilSetGameLiveStreamingStatus(std::int32_t active); +int APS5_VABI sceShellCoreUtilSetGnmCompositorOnScreenProfilerFlag(std::int32_t enabled); +int APS5_VABI sceShellCoreUtilSetGpuLoadEmulationMode(std::uint32_t mode); +int APS5_VABI sceShellCoreUtilSetGpuLoadEmulationModeByAppId(std::int32_t appId, std::uint32_t mode); +int APS5_VABI sceShellCoreUtilSetIDUMode(std::uint8_t mode); +int APS5_VABI sceShellCoreUtilSetImposeStatusFlag(std::int32_t enabled); +int APS5_VABI sceShellCoreUtilSetPsStoreIconLayout(std::uint32_t layout); +int APS5_VABI sceShellCoreUtilSetPsStoreIconState(std::uint32_t state); +int APS5_VABI sceShellCoreUtilSetRemotePlayStatus(std::int32_t active); +int APS5_VABI sceShellCoreUtilSetSharePlayStatus(std::int32_t active); +int APS5_VABI sceShellCoreUtilSetSkipUpdateCheck(std::uint8_t skip); +int APS5_VABI sceShellCoreUtilSetSocialScreenStatus(std::int32_t active); +int APS5_VABI sceShellCoreUtilSetSplashScreenState(std::uint32_t state); +int APS5_VABI sceShellCoreUtilSetSystemBGState(std::uint32_t state); +int APS5_VABI sceShellCoreUtilSetSystemBGWaveColor(std::uint32_t color); +int APS5_VABI sceShellCoreUtilSetSystemBGWaveState(std::uint32_t state); +int APS5_VABI sceShellCoreUtilSetUIStatus(std::uint64_t status, std::uint64_t mask); +int APS5_VABI sceShellCoreUtilSetUserFocus(std::int32_t userId); +int APS5_VABI sceShellCoreUtilShowCriticalErrorDialog(std::uint32_t error, const char* message); +int APS5_VABI sceShellCoreUtilShowErrorDialog(std::uint32_t error, const char* message); +int APS5_VABI sceShellCoreUtilShowErrorDialogWithFormatArgs(std::uint32_t error, const char* message, const char* const* formatArgs); +int APS5_VABI sceShellCoreUtilShowErrorDialogWithParam(std::uint32_t error, const ShellCoreErrorDialogParam* param); +int APS5_VABI sceShellCoreUtilShowPsUnderLockIndicator(); +int APS5_VABI sceShellCoreUtilSignalUserInput(); +int APS5_VABI sceShellCoreUtilStartPsNowGame(const char* data); +int APS5_VABI sceShellCoreUtilStopPsNowGame(const char* data); +int APS5_VABI sceShellCoreUtilTalkKeyEventReceived(std::int64_t deviceId, std::int32_t userId, std::int32_t keyEventType); +int APS5_VABI sceShellCoreUtilTestBusTransferSpeed(const char* path, std::uint8_t* result); +int APS5_VABI sceShellCoreUtilTickHeartBeat(); +int APS5_VABI sceShellCoreUtilTriggerPapcUpdate(std::uint32_t value); +int APS5_VABI sceShellCoreUtilTurnOffScreenSaver(); +int APS5_VABI sceShellCoreUtilUnmountAppRight(const char* key); +int APS5_VABI sceShellCoreUtilUnmountDownloadDataForShellUI(const char* key); +int APS5_VABI sceShellCoreUtilUnmountHddForBackup(); +int APS5_VABI sceShellCoreUtilUnmountHddForRestore(); +int APS5_VABI sceShellCoreutilGetCrashReportProcessInformation(); +int APS5_VABI sceSystemModalDialogClose(std::uint32_t dialogId); +int APS5_VABI sceSystemModalDialogOpen(const char* message); +int APS5_VABI sceSystemServiceAcquireBgmCpuBudget(); +int APS5_VABI sceSystemServiceAcquireFb0(); +int APS5_VABI sceSystemServiceActivateHevc(); +int APS5_VABI sceSystemServiceActivateHevcAbort(std::uintptr_t handle); +int APS5_VABI sceSystemServiceActivateHevcGetStatus(std::uintptr_t handle, std::uint32_t* status, std::int32_t* result); +int APS5_VABI sceSystemServiceActivateHevcInit(std::uintptr_t* handle); +int APS5_VABI sceSystemServiceActivateHevcIsActivated(std::uint8_t* activated); +int APS5_VABI sceSystemServiceActivateHevcSoft(); +int APS5_VABI sceSystemServiceActivateHevcSoftAbort(std::uintptr_t handle); +int APS5_VABI sceSystemServiceActivateHevcSoftGetStatus(std::uintptr_t handle, std::uint32_t* status, std::int32_t* result); +int APS5_VABI sceSystemServiceActivateHevcSoftInit(std::uintptr_t* handle); +int APS5_VABI sceSystemServiceActivateHevcSoftIsActivated(std::uint8_t* activated); +int APS5_VABI sceSystemServiceActivateHevcSoftStart(std::uintptr_t handle); +int APS5_VABI sceSystemServiceActivateHevcSoftTerm(std::uintptr_t handle); +int APS5_VABI sceSystemServiceActivateHevcStart(std::uintptr_t handle); +int APS5_VABI sceSystemServiceActivateHevcTerm(std::uintptr_t handle); +int APS5_VABI sceSystemServiceActivateMpeg2Abort(std::uintptr_t handle); +int APS5_VABI sceSystemServiceActivateMpeg2GetStatus(std::uintptr_t handle, std::uint32_t* status, std::int32_t* result); +int APS5_VABI sceSystemServiceActivateMpeg2Init(std::uintptr_t* handle); +int APS5_VABI sceSystemServiceActivateMpeg2IsActivated(std::uint8_t* activated); +int APS5_VABI sceSystemServiceActivateMpeg2Start(std::uintptr_t handle); +int APS5_VABI sceSystemServiceActivateMpeg2Term(std::uintptr_t handle); +int APS5_VABI sceSystemServiceAddLocalProcess(std::int32_t appId, const char* path, const char* const* argv, const SystemServiceLocalProcessParam* param); +int APS5_VABI sceSystemServiceAddLocalProcessForJvm(const char* path, const char* const* argv, const SystemServiceJvmProcessParam* param); +int APS5_VABI sceSystemServiceAddLocalProcessForPs2Emu(const char* path, const char* const* argv, const SystemServicePs2ProcessParam* param); +int APS5_VABI sceSystemServiceAppGetAppInstallStatus(const char* titleId, SystemServiceAppInstallStatus* status); +int APS5_VABI sceSystemServiceChangeAcpClock(); +int APS5_VABI sceSystemServiceChangeClock(const char* clock, std::uint32_t value); +int APS5_VABI sceSystemServiceChangeCpuClock(); +int APS5_VABI sceSystemServiceChangeCpuPstate(const SystemServiceCpuPstateParam* param); +int APS5_VABI sceSystemServiceChangeGpuClock(); +int APS5_VABI sceSystemServiceChangeMemPstate(std::uint32_t state); +int APS5_VABI sceSystemServiceChangeMemoryClock(); +int APS5_VABI sceSystemServiceChangeMemoryClockToBaseMode(); +int APS5_VABI sceSystemServiceChangeMemoryClockToDefault(); +int APS5_VABI sceSystemServiceChangeMemoryClockToMultiMediaMode(); +int APS5_VABI sceSystemServiceChangeNumberOfGpuCu(); +int APS5_VABI sceSystemServiceChangeSamuClock(); +int APS5_VABI sceSystemServiceChangeUvdClock(); +int APS5_VABI sceSystemServiceChangeVceClock(); +int APS5_VABI sceSystemServiceDeclareReadyForSuspend(); +int APS5_VABI sceSystemServiceDisablePartyVoice(); +int APS5_VABI sceSystemServiceDisablePersonalEyeToEyeDistanceSetting(); +int APS5_VABI sceSystemServiceDisableSuspendConfirmationDialog(); +int APS5_VABI sceSystemServiceDisableSuspendNotification(); +int APS5_VABI sceSystemServiceDisableVoiceRecognition(); +int APS5_VABI sceSystemServiceEnablePersonalEyeToEyeDistanceSetting(); +int APS5_VABI sceSystemServiceEnableSuspendConfirmationDialog(); +int APS5_VABI sceSystemServiceEnableSuspendNotification(); +int APS5_VABI sceSystemServiceGetAppCategoryType(std::int32_t appId, std::uint32_t* categoryType); +int APS5_VABI sceSystemServiceGetAppFocusedAppStatus(SystemServiceAppStatus* status); +int APS5_VABI sceSystemServiceGetAppId(const char* titleId); +int APS5_VABI sceSystemServiceGetAppIdListOfBigApp(std::int32_t* appIds, std::uint32_t capacity, std::uint32_t* count); +int APS5_VABI sceSystemServiceGetAppLaunchedUser(std::int32_t appId, std::int32_t* userId); +int APS5_VABI sceSystemServiceGetAppStatus(SystemServiceAppStatus* status); +int APS5_VABI sceSystemServiceGetAppTitleId(std::int32_t appId, char* titleId); +int APS5_VABI sceSystemServiceGetAppType(std::int32_t appId, std::int32_t* type); +int APS5_VABI sceSystemServiceGetDbgExecutablePath(char* path, std::uint64_t selector); +int APS5_VABI sceSystemServiceGetEventForDaemon(SystemServiceDaemonEvent* event); +int APS5_VABI sceSystemServiceGetGpuLoadEmulationMode(); +int APS5_VABI sceSystemServiceGetLocalProcessStatusList(SystemServiceLocalProcessStatus* statuses, std::uint32_t capacity, std::uint32_t* count); +int APS5_VABI sceSystemServiceGetMainAppTitleId(); +int APS5_VABI sceSystemServiceGetPSButtonEvent(const SystemServiceEvent* event, SystemServicePSButtonEvent* buttonEvent); +int APS5_VABI sceSystemServiceGetParentSocket(); +int APS5_VABI sceSystemServiceGetParentSocketForJvm(); +int APS5_VABI sceSystemServiceGetParentSocketForPs2Emu(); +int APS5_VABI sceSystemServiceGetParentSocketForPsmKit(); +int APS5_VABI sceSystemServiceGetPlatformPrivacyDefinitionData(const char* key, SystemServicePrivacyDefinitionData* data); +int APS5_VABI sceSystemServiceGetPlatformPrivacyDefinitionVersion(const char* key, SystemServicePrivacyDefinitionVersion* version); +int APS5_VABI sceSystemServiceGetPlatformPrivacySetting(std::uint32_t* setting); +int APS5_VABI sceSystemServiceGetRecentLotusPushedButton(std::uint32_t timeout, std::int32_t* deviceId, std::uint32_t* buttons); +int APS5_VABI sceSystemServiceGetRemoteplayStatus(bool* active); +int APS5_VABI sceSystemServiceGetRenderingMode(); +int APS5_VABI sceSystemServiceGetSubAppTitleId(); +int APS5_VABI sceSystemServiceGetSubAppTitleIdForSP(); +int APS5_VABI sceSystemServiceGetTitleWorkaroundInfo(SystemServiceTitleWorkaroundInfo* info); +int APS5_VABI sceSystemServiceGetUIStatus(std::uint64_t* status); +int APS5_VABI sceSystemServiceGetVersionNumberOfCameraCalibrationData(); +int APS5_VABI sceSystemServiceInitializeForShellCore(); +int APS5_VABI sceSystemServiceInvokeAppLaunchLink(const char* uri); +int APS5_VABI sceSystemServiceIsAppSuspended(std::int32_t appId, bool* suspended); +bool APS5_VABI sceSystemServiceIsBgmCpuBudgetAvailable(); +int APS5_VABI sceSystemServiceIsEyeToEyeDistanceAdjusted(std::uint32_t userId, std::uint8_t* adjusted); +bool APS5_VABI sceSystemServiceIsGameLiveStreamingOnAir(); +bool APS5_VABI sceSystemServiceIsScreenSaverOn(); +bool APS5_VABI sceSystemServiceIsShellUiFgAndGameBgCpuMode(); +int APS5_VABI sceSystemServiceKillLocalProcess(std::int32_t appId, std::int32_t processId); +int APS5_VABI sceSystemServiceKillLocalProcessForJvm(std::int32_t processId); +int APS5_VABI sceSystemServiceKillLocalProcessForPs2Emu(std::int32_t processId); +int APS5_VABI sceSystemServiceLaunchEventDetails(std::uint64_t unusedSlot, const char* eventId); +int APS5_VABI sceSystemServiceLaunchStore(const char* uri, const SystemServiceStoreParam* param); +int APS5_VABI sceSystemServiceLaunchTournamentList(); +int APS5_VABI sceSystemServiceLaunchTournamentsTeamProfile(std::uint64_t unusedSlot, const char* profile, const char* tournament, const char* context); +int APS5_VABI sceSystemServiceLaunchUdsApp(); +int APS5_VABI sceSystemServiceLaunchWebApp(const char* argument); +int APS5_VABI sceSystemServiceLoadExecVideoServiceWebApp(); +int APS5_VABI sceSystemServiceNavigateToAnotherApp(std::uint32_t target); +int APS5_VABI sceSystemServiceNavigateToGoBack(); +int APS5_VABI sceSystemServiceNavigateToGoBackWithValue(const char* value); +int APS5_VABI sceSystemServiceNavigateToGoHome(std::uint32_t target); +int APS5_VABI sceSystemServiceNotifyBgmCoreTermination(); +int APS5_VABI sceSystemServiceRaiseExceptionLocalProcess(std::int32_t appId, std::int32_t processId, std::uint64_t exception); +int APS5_VABI sceSystemServiceReenablePartyVoice(); +int APS5_VABI sceSystemServiceReenableVoiceRecognition(); +int APS5_VABI sceSystemServiceRegisterDaemon(); +int APS5_VABI sceSystemServiceReleaseBgmCpuBudget(); +int APS5_VABI sceSystemServiceReleaseFb0(); +int APS5_VABI sceSystemServiceRequestCameraCalibration(); +int APS5_VABI sceSystemServiceRequestPowerOff(); +int APS5_VABI sceSystemServiceRequestReboot(); +int APS5_VABI sceSystemServiceRequestToChangeRenderingMode(); +int APS5_VABI sceSystemServiceResumeLocalProcess(std::int32_t processId); +int APS5_VABI sceSystemServiceSaveVideoToken(std::int32_t userId, const char* token); +int APS5_VABI sceSystemServiceSetControllerFocusPermission(std::uint8_t permission); +int APS5_VABI sceSystemServiceSetGpuLoadEmulationMode(std::uint32_t mode); +int APS5_VABI sceSystemServiceSetOutOfVrPlayAreaFlag(std::uint8_t flag); +int APS5_VABI sceSystemServiceSetOutOfVrPlayZoneWarning(); +int APS5_VABI sceSystemServiceSetPowerSaveLevel(std::uint32_t level); +int APS5_VABI sceSystemServiceShowClosedCaptionAdvancedSettings(); +int APS5_VABI sceSystemServiceShowClosedCaptionSettings(); +int APS5_VABI sceSystemServiceShowErrorDialog(std::uint32_t error, const char* message); +int APS5_VABI sceSystemServiceShowEyeToEyeDistanceSetting(); +int APS5_VABI sceSystemServiceShowImposeMenuForPs2Emu(std::uint8_t enabled, std::uint64_t reserved); +int APS5_VABI sceSystemServiceSuspendBackgroundApp(std::int32_t first, std::int32_t second); +int APS5_VABI sceSystemServiceSuspendLocalProcess(std::int32_t processId); +int APS5_VABI sceSystemServiceTelemetrySetData(const char* key, const void* data, std::size_t size); +int APS5_VABI sceSystemServiceTelemetrySetData2(const char* key, const char* data); +int APS5_VABI sceSystemServiceTickVideoPlayback(); +int APS5_VABI sceSystemServiceTurnOffScreenSaver(); +int APS5_VABI sceSystemServiceUsbStorageGetDeviceInfo(std::uint32_t device, UsbStorageDeviceInfo* info); +int APS5_VABI sceSystemServiceUsbStorageGetDeviceList(std::uint32_t* devices, std::int32_t* count); +int APS5_VABI sceSystemServiceUsbStorageGetdentsClose(std::int32_t fd); +int APS5_VABI sceSystemServiceUsbStorageGetdentsOpen(std::uint32_t device, std::int32_t* fd, std::uint64_t* bufferSize); +int APS5_VABI sceSystemServiceUsbStorageGetdentsRead(std::int32_t fd, void* buffer, std::uint64_t bufferSize, std::uint64_t* bytesRead); +int APS5_VABI sceSystemServiceUsbStorageInit(void* attr); +bool APS5_VABI sceSystemServiceUsbStorageIsExist(std::uint32_t device, const char* directory, std::uint8_t* exists); +int APS5_VABI sceSystemServiceUsbStorageRegisterCallback(std::int32_t eventType, UsbStorageCallback callback, void* arg); +int APS5_VABI sceSystemServiceUsbStorageRegisterCallbackForMapAvailable(std::uint32_t device, const char* directory, UsbStorageCallback callback, void* arg); +int APS5_VABI sceSystemServiceUsbStorageRegisterCallbackForMapUnavailable(std::uint32_t device, const char* directory, UsbStorageCallback callback, void* arg); +int APS5_VABI sceSystemServiceUsbStorageRequestMap(std::uint32_t device, const char* directory, std::int32_t flags, std::uint64_t volumeSize, char* mountPoint, std::uint64_t* mountId); +int APS5_VABI sceSystemServiceUsbStorageRequestMapWSB(std::uint32_t device, const char* directory, std::int32_t flags, std::uint64_t volumeSize, char* mountPoint, std::uint64_t* mountId); +int APS5_VABI sceSystemServiceUsbStorageRequestUnmap(std::uint32_t device, const char* directory); +int APS5_VABI sceSystemServiceUsbStorageTerm(); +int APS5_VABI sceSystemServiceUsbStorageUnregisterCallback(std::int32_t eventType, UsbStorageCallback callback); +int APS5_VABI sceSystemServiceUsbStorageUnregisterCallbackForMapAvailable(std::uint32_t device, const char* directory, UsbStorageCallback callback); +int APS5_VABI sceSystemServiceUsbStorageUnregisterCallbackForMapUnavailable(std::uint32_t device, const char* directory, UsbStorageCallback callback); +int APS5_VABI sceSystemStateMgrCancelShutdownTimer(); +int APS5_VABI sceSystemStateMgrEnterMediaPlaybackMode(); +int APS5_VABI sceSystemStateMgrEnterStandby(); +int APS5_VABI sceSystemStateMgrExtendShutdownTimer(); +int APS5_VABI sceSystemStateMgrExtendShutdownTimerForPostAutoUpdateProcess(); +int APS5_VABI sceSystemStateMgrGetCurrentState(); +int APS5_VABI sceSystemStateMgrGetTriggerCode(); +bool APS5_VABI sceSystemStateMgrIsBdDriveReady(); +int APS5_VABI sceSystemStateMgrIsGpuPerformanceNormal(); +bool APS5_VABI sceSystemStateMgrIsShellUIShutdownInProgress(); +bool APS5_VABI sceSystemStateMgrIsStandbyModeEnabled(); +int APS5_VABI sceSystemStateMgrLeaveMediaPlaybackMode(); +int APS5_VABI sceSystemStateMgrNotifySystemSuspendResumeProgress(const char* progress); +int APS5_VABI sceSystemStateMgrReboot(); +int APS5_VABI sceSystemStateMgrRequestToKeepMainOnStandby(const char* reason); +int APS5_VABI sceSystemStateMgrSendCecOneTouchPlayCommand(); +int APS5_VABI sceSystemStateMgrStartRebootTimer(std::int32_t mode); +int APS5_VABI sceSystemStateMgrStartShutdownTimer(); +int APS5_VABI sceSystemStateMgrStartStadbyTimer(); +int APS5_VABI sceSystemStateMgrStartVshAutoUpdateTimer(); +int APS5_VABI sceSystemStateMgrTickMusicPlayback(); +int APS5_VABI sceSystemStateMgrTickPartyChat(); +int APS5_VABI sceSystemStateMgrTurnOff(); +int APS5_VABI sceSystemStateMgrVshAutoUpdate(); +int APS5_VABI sceSystemStateMgrWaitVshAutoUpdateVerifyDone(); +int APS5_VABI sceSystemStateMgrWakeUp(std::uint16_t trigger); + +} diff --git a/core/libs/prx/libSceSystemService/libSceSystemService.hpp b/core/libs/prx/libSceSystemService/libSceSystemService.hpp new file mode 100644 index 0000000000..e3ff176277 --- /dev/null +++ b/core/libs/prx/libSceSystemService/libSceSystemService.hpp @@ -0,0 +1,3 @@ +#pragma once + +#include "prx/libSceSystemService/include/SystemService.hpp" diff --git a/core/libs/prx/libSceUsbStorage/Export.cpp b/core/libs/prx/libSceUsbStorage/Export.cpp index 0a837a06f4..978a9dc386 100644 --- a/core/libs/prx/libSceUsbStorage/Export.cpp +++ b/core/libs/prx/libSceUsbStorage/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSystemService/include/SystemService.hpp" #include #include #include "SceTypes.hpp" diff --git a/core/libs/prx/libSceUsbStorageDialog/Export.cpp b/core/libs/prx/libSceUsbStorageDialog/Export.cpp index 612ac95a57..f34728c5c0 100644 --- a/core/libs/prx/libSceUsbStorageDialog/Export.cpp +++ b/core/libs/prx/libSceUsbStorageDialog/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceUserService/UserService.hpp" #include #include #include @@ -7,8 +8,6 @@ #include "prx/libc/include/ApplicationHeap.hpp" #include "prx/libc/include/General.hpp" -extern "C" int APS5_VABI sceUserServiceGetLoginUserIdList(UserServiceLoginUserIdList* users); - namespace { constexpr int COMMON_DIALOG_STATUS_NONE = 0; diff --git a/core/libs/prx/libSceUserService/Export.cpp b/core/libs/prx/libSceUserService/Export.cpp index e96a561ddf..03a44d4920 100644 --- a/core/libs/prx/libSceUserService/Export.cpp +++ b/core/libs/prx/libSceUserService/Export.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSystemService/include/SystemService.hpp" #include #include #include "SceTypes.hpp" @@ -53,7 +54,6 @@ void PopulateInitialLoginEvents() { } } -extern "C" int APS5_VABI sceSystemServiceParamGetInt(int param_id, int* value); // Per-user keyboard settings. Nothing in AnyPS5 stores a keyboard type or input variant, so every known user reports // the keyboard type of the configured system language and 0 for the input variants (see diff --git a/core/libs/prx/libSceUserService/UserService.hpp b/core/libs/prx/libSceUserService/UserService.hpp index 2ef3478df9..3169ed503c 100644 --- a/core/libs/prx/libSceUserService/UserService.hpp +++ b/core/libs/prx/libSceUserService/UserService.hpp @@ -3,6 +3,7 @@ #include #include +#include "SceTypes.hpp" struct UserServiceInitParam { std::int32_t priority; @@ -31,4 +32,35 @@ constexpr const char* USER_SERVICE_USER_NAMES[USER_SERVICE_MAX_USERS] = { extern "C" void UserServiceSetUserConnected_nid_postfix(int userIndex, bool connected); +extern "C" { + +int APS5_VABI sceUserServiceGetAccessibilityChatTranscription(int userId, int32_t* chatTranscription); +int APS5_VABI sceUserServiceGetAccessibilityKeyremapEnable(std::int32_t userId, std::int32_t* enabled); +int APS5_VABI sceUserServiceGetAccessibilityPressAndHoldDelay(int userId, int32_t* pressAndHoldDelay); +int APS5_VABI sceUserServiceGetAccessibilityTriggerEffect(int userId, int32_t* triggerEffect); +int APS5_VABI sceUserServiceGetAccessibilityVibration(int userId, int32_t* vibration); +int APS5_VABI sceUserServiceGetAccessibilityZoom(std::int32_t userId, std::int32_t* zoom); +int APS5_VABI sceUserServiceGetAccessibilityZoomEnabled(int userId, int32_t* zoomEnabled); +int APS5_VABI sceUserServiceGetAccessibilityZoomFollowFocus(int userId, int32_t* zoomFollowFocus); +int APS5_VABI sceUserServiceGetAgeLevel(int userId, uint32_t* ageLevel); +int APS5_VABI sceUserServiceGetEvent(SceUserServiceEvent* event); +int APS5_VABI sceUserServiceGetGamePresets(int userId, UserServiceGamePresets* presets); +int APS5_VABI sceUserServiceGetInitialUser(int* userId); +int APS5_VABI sceUserServiceGetLoginUserIdList(UserServiceLoginUserIdList* userIdList); +int APS5_VABI sceUserServiceGetUserName(int userId, char* name, size_t size); +int APS5_VABI sceUserServiceGetUserNumber(int userId, int32_t* number); +int APS5_VABI sceUserServiceInitialize(const UserServiceInitParam* params); +int APS5_VABI sceUserServiceInitialize2(std::int32_t priority, KernelCpumask affinityMask); +int APS5_VABI sceUserServiceTerminate(void); +int APS5_VABI sceUserServiceGetPlatformPrivacyWs1(int32_t userId, int32_t* value); +int APS5_VABI sceUserServiceGetForegroundUser(int* userId); +int APS5_VABI sceUserServiceGetRegisteredUserIdList(UserServiceRegisteredUserIdList* userIdList); +int APS5_VABI sceUserServiceGetUserColor(int userId, int* color); +int APS5_VABI sceUserServiceGetKeyboardType(int userId, int32_t* type); +int APS5_VABI sceUserServiceGetJapaneseInputType(int userId, int32_t* type); +int APS5_VABI sceUserServiceGetTraditionalChineseInputType(int userId, int32_t* type); +int APS5_VABI sceUserServiceGetNpAccountId(int userId, uint64_t* accountId); + +} + #endif diff --git a/core/libs/prx/libSceUserService/libSceUserService.hpp b/core/libs/prx/libSceUserService/libSceUserService.hpp new file mode 100644 index 0000000000..32a9d2d7ae --- /dev/null +++ b/core/libs/prx/libSceUserService/libSceUserService.hpp @@ -0,0 +1,3 @@ +#pragma once + +#include "prx/libSceUserService/UserService.hpp" diff --git a/core/libs/prx/libSceVideoOut/Unimplemented.cpp b/core/libs/prx/libSceVideoOut/Unimplemented.cpp index 91b75fbb31..35751e05fd 100644 --- a/core/libs/prx/libSceVideoOut/Unimplemented.cpp +++ b/core/libs/prx/libSceVideoOut/Unimplemented.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceVideoOut/include/VideoOut.hpp" #include #include #include "SceTypes.hpp" @@ -62,7 +63,6 @@ int APS5_VABI sceVideoOutAdjustColorSpaceConversion_(int handle, const VideoOutC return sceVideoOutAdjustColorSpaceConversion(handle, settings); } - int APS5_VABI sceDbgVideoOutAddOutputModeVr60Privilege() { NotImplemented_nid_no_patch(__func__); return 0; diff --git a/core/libs/prx/libSceVideoOut/include/Buffer.hpp b/core/libs/prx/libSceVideoOut/include/Buffer.hpp index 5ae8013ae6..112e9cc682 100644 --- a/core/libs/prx/libSceVideoOut/include/Buffer.hpp +++ b/core/libs/prx/libSceVideoOut/include/Buffer.hpp @@ -3,23 +3,22 @@ #include -#include "prx/libc/include/General.hpp" #include "SceTypes.hpp" extern "C" { -int APS5_VABI sceVideoOutRegisterBuffers(int handle, int buffer_index_start, void* const* addresses, int buffer_num, const VideoOutBufferAttribute* attribute); -void APS5_VABI sceVideoOutSetBufferAttribute(VideoOutBufferAttribute* attribute, uint32_t pixel_format, uint32_t tiling_mode, uint32_t aspect_ratio, uint32_t width, uint32_t height, uint32_t pitch_in_pixel); -int APS5_VABI sceVideoOutRegisterBuffers2(int handle, int set_index, int buffer_index_start, const VideoOutBuffers* buffers, int buffer_num, const VideoOutBufferAttribute2* attribute, int category, void* option); -void APS5_VABI sceVideoOutSetBufferAttribute2(VideoOutBufferAttribute2* attribute, uint64_t pixel_format, uint32_t tiling_mode, uint32_t width, uint32_t height, uint64_t option, uint32_t dcc_control, uint64_t dcc_cb_register_clear_color); +int APS5_VABI sceVideoOutRegisterBuffers(int handle, int bufferIndexStart, void* const* addresses, int bufferNum, const VideoOutBufferAttribute* attribute); +void APS5_VABI sceVideoOutSetBufferAttribute(VideoOutBufferAttribute* attribute, uint32_t pixelFormat, uint32_t tilingMode, uint32_t aspectRatio, uint32_t width, uint32_t height, uint32_t pitchInPixel); +int APS5_VABI sceVideoOutRegisterBuffers2(int handle, int setIndex, int bufferIndexStart, const VideoOutBuffers* buffers, int bufferNum, const VideoOutBufferAttribute2* attribute, int category, void* option); +void APS5_VABI sceVideoOutSetBufferAttribute2(VideoOutBufferAttribute2* attribute, uint64_t pixelFormat, uint32_t tilingMode, uint32_t width, uint32_t height, uint64_t option, uint32_t dccControl, uint64_t dccCbRegisterClearColor); void APS5_VABI sceVideoOutAddBufferAttributeOption(VideoOutBufferAttribute2* attribute, uint64_t option); void APS5_VABI sceVideoOutRemoveBufferAttributeOption(VideoOutBufferAttribute2* attribute, uint64_t option); -int APS5_VABI sceVideoOutSubmitChangeBufferAttribute2(int handle, int set_index, const VideoOutBufferAttribute2* attribute, void* option); -int APS5_VABI sceVideoOutSubmitEopFlip(int handle, int index, int flip_mode, int64_t flip_arg, std::uint32_t* token); -int APS5_VABI sceVideoOutSubmitFlip(int handle, int index, int flip_mode, int64_t flip_arg); -int APS5_VABI sceVideoOutUnregisterBuffers(int handle, int set_index); +int APS5_VABI sceVideoOutSubmitChangeBufferAttribute2(int handle, int setIndex, const VideoOutBufferAttribute2* attribute, void* option); +int APS5_VABI sceVideoOutSubmitEopFlip(int handle, int index, int flipMode, int64_t flipArg, std::uint32_t* token); +int APS5_VABI sceVideoOutSubmitFlip(int handle, int index, int flipMode, int64_t flipArg); +int APS5_VABI sceVideoOutUnregisterBuffers(int handle, int setIndex); int APS5_VABI sceVideoOutGetBufferLabelAddress(int handle, uintptr_t* address); -#endif - } + +#endif diff --git a/core/libs/prx/libSceVideoOut/include/Event.hpp b/core/libs/prx/libSceVideoOut/include/Event.hpp index ca5e4f09f7..aea9cf2186 100644 --- a/core/libs/prx/libSceVideoOut/include/Event.hpp +++ b/core/libs/prx/libSceVideoOut/include/Event.hpp @@ -3,7 +3,6 @@ #include -#include "prx/libc/include/General.hpp" #include "SceTypes.hpp" extern "C" { @@ -24,6 +23,6 @@ int APS5_VABI sceVideoOutGetEventCount(const KernelEvent* ev); int APS5_VABI sceVideoOutGetEventData(const KernelEvent* ev, int64_t* data); int APS5_VABI sceVideoOutGetEventId(const KernelEvent* ev); -#endif - } + +#endif diff --git a/core/libs/prx/libSceVideoOut/include/Output.hpp b/core/libs/prx/libSceVideoOut/include/Output.hpp index 569e97ee77..caebc2514a 100644 --- a/core/libs/prx/libSceVideoOut/include/Output.hpp +++ b/core/libs/prx/libSceVideoOut/include/Output.hpp @@ -2,17 +2,16 @@ #define CORE_LIBS_PRX_LIBSCEVIDEOUOUT_INCLUDE_OUTPUT_HPP #include -#include "prx/libc/include/General.hpp" #include "SceTypes.hpp" int ValidateVideoOutOutputMode_nid_no_patch(uint64_t mode, const VideoOutOutputOptions* options, int displayRefreshRate); extern "C" { -int APS5_VABI sceVideoOutOpen(int user_id, int bus_type, int index, const void* param); +int APS5_VABI sceVideoOutOpen(int userId, int busType, int index, const void* param); int APS5_VABI sceVideoOutClose(int handle); -int APS5_VABI sceVideoOutConfigureOutput(int handle, uint64_t mode, const VideoOutOutputOptions* options, void* reserved_ptr, uint64_t reserved); -int APS5_VABI sceVideoOutIsOutputSupported(int handle, uint64_t mode, const VideoOutOutputOptions* options, void* reserved_ptr, uint64_t reserved); +int APS5_VABI sceVideoOutConfigureOutput(int handle, uint64_t mode, const VideoOutOutputOptions* options, void* reservedPtr, uint64_t reserved); +int APS5_VABI sceVideoOutIsOutputSupported(int handle, uint64_t mode, const VideoOutOutputOptions* options, void* reservedPtr, uint64_t reserved); int APS5_VABI sceVideoOutInitializeOutputOptions(VideoOutOutputOptions* options); int APS5_VABI sceVideoOutAllowOutputResolutionWqhdDetection(int handle); int APS5_VABI sceVideoOutSetFlipRate(int handle, int rate); @@ -31,9 +30,9 @@ int APS5_VABI sceVideoOutAdjustColor(int handle, const VideoOutColorSettings* se int APS5_VABI sceVideoOutColorSpaceConversionSettingsSetDefaultSdrToHdrConversion(VideoOutColorSpaceConversionSettings* settings); int APS5_VABI sceVideoOutColorSpaceConversionSettingsSetSdrToHdrConversion(VideoOutColorSpaceConversionSettings* settings, float lumaScale, uint32_t option); int APS5_VABI sceVideoOutAdjustColorSpaceConversion(int handle, const VideoOutColorSpaceConversionSettings* settings); -int APS5_VABI sceVideoOutColorSpaceConversionSettingsSetDefaultSdrToHdrConversion_(VideoOutColorSpaceConversionSettings* settings, uint32_t settings_size); -int APS5_VABI sceVideoOutColorSpaceConversionSettingsSetSdrToHdrConversion_(VideoOutColorSpaceConversionSettings* settings, float lumaScale, uint32_t option, uint32_t settings_size); -int APS5_VABI sceVideoOutAdjustColorSpaceConversion_(int handle, const VideoOutColorSpaceConversionSettings* settings, uint32_t settings_size); +int APS5_VABI sceVideoOutColorSpaceConversionSettingsSetDefaultSdrToHdrConversion_(VideoOutColorSpaceConversionSettings* settings, uint32_t settingsSize); +int APS5_VABI sceVideoOutColorSpaceConversionSettingsSetSdrToHdrConversion_(VideoOutColorSpaceConversionSettings* settings, float lumaScale, uint32_t option, uint32_t settingsSize); +int APS5_VABI sceVideoOutAdjustColorSpaceConversion_(int handle, const VideoOutColorSpaceConversionSettings* settings, uint32_t settingsSize); int APS5_VABI sceVideoOutSetGlobalBlendSpace(int handle, uint32_t space, uint32_t option); int APS5_VABI sceVideoOutVrrPegToFixedRate(int handle, uint64_t arg1, uint64_t arg2); int APS5_VABI sceVideoOutVrrUnpegFromFixedRate(int handle); diff --git a/core/libs/prx/libSceVideoOut/include/VideoOut.hpp b/core/libs/prx/libSceVideoOut/include/VideoOut.hpp new file mode 100644 index 0000000000..8f86fea2b9 --- /dev/null +++ b/core/libs/prx/libSceVideoOut/include/VideoOut.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include "SceTypes.hpp" + +extern "C" { + +int APS5_VABI sceVideoOutSetFlipMaster(std::int32_t handle, std::int32_t masterHandle); +int APS5_VABI sceVideoOutClearFlipMaster(std::int32_t handle); +int APS5_VABI sceVideoOutCursorEnable(int32_t, int32_t, const void*); +int APS5_VABI sceVideoOutCursorDisable(int32_t, int32_t); +int APS5_VABI sceVideoOutCursorSetImageAddress(int32_t, int32_t, const void*); +int APS5_VABI sceVideoOutCursorSetPosition(int32_t, int32_t, uint32_t, uint32_t); +int APS5_VABI sceVideoOutAdjustColor_(int handle, const VideoOutColorSettings* settings, uint32_t settingsSize); +int APS5_VABI sceVideoOutColorSettingsSetGamma_(VideoOutColorSettings* settings, float gamma, uint32_t settingsSize); +int APS5_VABI sceDbgVideoOutAddOutputModeVr60Privilege(); +int APS5_VABI sceVideoOutAddVrrStatusFlagsPrivilege(); + +} diff --git a/core/libs/prx/libSceVideoOut/libSceVideoOut.hpp b/core/libs/prx/libSceVideoOut/libSceVideoOut.hpp new file mode 100644 index 0000000000..d3328b1410 --- /dev/null +++ b/core/libs/prx/libSceVideoOut/libSceVideoOut.hpp @@ -0,0 +1,6 @@ +#pragma once + +#include "prx/libSceVideoOut/include/Buffer.hpp" +#include "prx/libSceVideoOut/include/Event.hpp" +#include "prx/libSceVideoOut/include/Output.hpp" +#include "prx/libSceVideoOut/include/VideoOut.hpp" diff --git a/core/libs/prx/libSceVideoOut/src/Buffer.cpp b/core/libs/prx/libSceVideoOut/src/Buffer.cpp index 7197986ca7..75c4e8a067 100644 --- a/core/libs/prx/libSceVideoOut/src/Buffer.cpp +++ b/core/libs/prx/libSceVideoOut/src/Buffer.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceVideoOut/include/Buffer.hpp" #include #include #include diff --git a/core/libs/prx/libSceVideoOut/src/Event.cpp b/core/libs/prx/libSceVideoOut/src/Event.cpp index d13e6494fb..dde7b34821 100644 --- a/core/libs/prx/libSceVideoOut/src/Event.cpp +++ b/core/libs/prx/libSceVideoOut/src/Event.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceVideoOut/include/Event.hpp" #include #include #include diff --git a/core/libs/prx/libSceVideoOut/src/Output.cpp b/core/libs/prx/libSceVideoOut/src/Output.cpp index 20fb05c756..f1d49072fb 100644 --- a/core/libs/prx/libSceVideoOut/src/Output.cpp +++ b/core/libs/prx/libSceVideoOut/src/Output.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceVideoOut/include/VideoOut.hpp" #include #include #include diff --git a/core/libs/tests/GuestAgcDriverDebugUnavailable.cpp b/core/libs/tests/GuestAgcDriverDebugUnavailable.cpp index 72b97bd56f..8e807d6996 100644 --- a/core/libs/tests/GuestAgcDriverDebugUnavailable.cpp +++ b/core/libs/tests/GuestAgcDriverDebugUnavailable.cpp @@ -1,38 +1,9 @@ +#include "prx/libSceAgcDriver/include/AgcDriver.hpp" #include "SceTypes.hpp" #include #include #include -extern "C" { -int APS5_VABI sceAgcDriverGetShaderDebuggingStatus(); -int APS5_VABI sceAgcDriverSetValidationErrorOutputFrequency(std::uint32_t); -int APS5_VABI sceAgcDriverSetSubmitValidationMode(std::uint32_t); -int APS5_VABI sceAgcDriverGetSubmitValidationMode(std::uint32_t*); -int APS5_VABI sceAgcDriverSetSubmitValidationConfig(const void*); -int APS5_VABI sceAgcDriverGetSubmitValidationConfig(void*); -int APS5_VABI sceAgcDriverSetValidationDisabled(); -int APS5_VABI sceAgcDriverGetCaptureConfig(); -int APS5_VABI sceAgcDriverSetCaptureConfig(); -int APS5_VABI sceAgcDriverGetGpuPrintfWorkArea(); -int APS5_VABI sceAgcDriverSetGpuPrintfEnabled(); -int APS5_VABI sceAgcDriverDbgReadRegister(); -int APS5_VABI sceAgcDriverDbgWriteRegister(); -int APS5_VABI sceAgcDriverGetGpuRefClks(); -int APS5_VABI sceAgcDriverIsSuspendPointInFlight(); -int APS5_VABI sceAgcDriverIsPaDebug(); -int APS5_VABI sceAgcDriverGetExceptionStatus(); -int APS5_VABI sceAgcDriverGetTraceInitiator(); -int APS5_VABI sceAgcDriverRegisterGpuResetCallbacks(); -int APS5_VABI sceAgcDriverUnregisterGpuResetCallbacks(); -int APS5_VABI sceAgdResetGpu(); -int APS5_VABI sceAgcDriverSysSubmitFlipHandleProxy(); -int APS5_VABI sceAgcDriverUserDataImmediateWrite(); -int APS5_VABI sceAgcDriverUserDataImmediateWritePacket(); -int APS5_VABI sceAgcDriverGetCoredumpMode(std::uint32_t*); -int APS5_VABI sceAgcDriverAllocateToolMemoryForGpuReset(std::uint64_t, std::uint64_t, std::uint64_t, void*); -int APS5_VABI sceAgcDriverGetAllocatedToolMemoryForGpuReset(std::uint64_t, void*); -} - static constexpr int DebugUnavailable = static_cast(0x8A6C1000); static constexpr int FeatureUnavailable = static_cast(0x8A6D0001); static void Require(bool value) { if (!value) std::abort(); } diff --git a/core/libs/tests/GuestAgcDriverResources.cpp b/core/libs/tests/GuestAgcDriverResources.cpp index 5ee342a763..eafe67b86e 100644 --- a/core/libs/tests/GuestAgcDriverResources.cpp +++ b/core/libs/tests/GuestAgcDriverResources.cpp @@ -1,3 +1,6 @@ +#include "prx/libSceAgcDriver/State/include/Status.hpp" +#include "prx/libSceAgcDriver/Resource/include/Registration.hpp" +#include "prx/libSceAgcDriver/include/AgcDriver.hpp" #include "SceTypes.hpp" #include #include @@ -6,33 +9,6 @@ #include #include -extern "C" { -int APS5_VABI sceAgcDriverRegisterDefaultOwner(std::uint32_t); -int APS5_VABI sceAgcDriverRegisterOwner(std::uint32_t*, const char*); -int APS5_VABI sceAgcDriverRegisterResource(std::uint32_t*, std::uint32_t, const void*, std::size_t, const char*, std::uint32_t, std::uint64_t); -int APS5_VABI sceAgcDriverRegisterMultipleResources(std::uint32_t*, std::uint32_t, const void*, std::uint32_t); -int APS5_VABI sceAgcDriverRegisterGdsResource(std::uint32_t*, std::uint32_t, std::uint32_t, std::uint32_t, const char*, std::uint32_t, std::uint64_t); -int APS5_VABI sceAgcDriverUnregisterAllResourcesForOwner(std::uint32_t); -int APS5_VABI sceAgcDriverRegisterWorkloadStream(std::uint32_t, const void*); -int APS5_VABI sceAgcDriverUnregisterWorkloadStream(std::uint32_t); -int APS5_VABI sceAgcDriverGetDefaultOwner(std::uint32_t*); -int APS5_VABI sceAgcDriverGetResourceRegistrationMaxNameLength(std::uint32_t*); -int APS5_VABI sceAgcDriverGetOwnerName(std::uint32_t, const char**); -int APS5_VABI sceAgcDriverGetResourceName(std::uint32_t, const char**); -int APS5_VABI sceAgcDriverGetResourceType(std::uint32_t, std::uint32_t*); -int APS5_VABI sceAgcDriverGetResourceUserData(std::uint32_t, std::uint64_t*); -int APS5_VABI sceAgcDriverSetResourceUserData(std::uint32_t, std::uint64_t); -int APS5_VABI sceAgcDriverGetResourceBaseAddressAndSizeInBytes(std::uint32_t, void**, std::size_t*); -int APS5_VABI sceAgcDriverGetResourceShaderGuid(std::uint32_t, void*); -int APS5_VABI sceAgcDriverFindResourcesPublic(const void*, void*); -bool APS5_VABI sceAgcDriverIsCaptureInProgress(void); -bool APS5_VABI sceAgcDriverIsTraceInProgress(void); -bool APS5_VABI sceAgcDriverIsSubmitValidationEnabled(void); -int APS5_VABI sceAgcDriverRegisterOwnerForSystem(); -int APS5_VABI sceAgcDriverInitResourceRegistrationInterface(); -int APS5_VABI sceAgcDriverSetResourceRegistrationInfo(); -} - static constexpr int Unavailable = static_cast(0x8A6C9018); static void Require(bool value) { if (!value) std::abort(); } diff --git a/core/libs/tests/GuestAudio3dParameters.cpp b/core/libs/tests/GuestAudio3dParameters.cpp index dc4e19688a..8382df155a 100644 --- a/core/libs/tests/GuestAudio3dParameters.cpp +++ b/core/libs/tests/GuestAudio3dParameters.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudio3d/include/Audio3d.hpp" #include "SceTypes.hpp" #include #include @@ -5,9 +6,6 @@ #include #include -extern "C" void APS5_VABI sceAudio3dGetDefaultOpenParameters(Audio3dOpenParameters* parameters); -extern "C" int APS5_VABI sceAudio3dInitialize(std::int64_t reserved); - static_assert(sizeof(Audio3dOpenParameters) == 0x28); static_assert(offsetof(Audio3dOpenParameters, num_beds) == 0x20); diff --git a/core/libs/tests/GuestAudio3dPort.cpp b/core/libs/tests/GuestAudio3dPort.cpp index 7adbb92ede..5833c4a051 100644 --- a/core/libs/tests/GuestAudio3dPort.cpp +++ b/core/libs/tests/GuestAudio3dPort.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudio3d/include/Audio3d.hpp" #include "SceTypes.hpp" #include #include @@ -9,29 +10,6 @@ #include #include -extern "C" { -void APS5_VABI sceAudio3dGetDefaultOpenParameters(Audio3dOpenParameters* parameters); -int APS5_VABI sceAudio3dInitialize(std::int64_t reserved); -int APS5_VABI sceAudio3dTerminate(); -int APS5_VABI sceAudio3dPortOpen(int user_id, const Audio3dOpenParameters* parameters, std::uint32_t* id); -int APS5_VABI sceAudio3dPortClose(std::uint32_t port_id); -int APS5_VABI sceAudio3dPortSetAttribute(std::uint32_t port_id, std::uint32_t attribute_id, const void* attribute, std::size_t attribute_size); -int APS5_VABI sceAudio3dPortGetAttributesSupported(std::uint32_t port_id, std::uint32_t* attributes, std::uint32_t* num_attributes); -int APS5_VABI sceAudio3dPortGetQueueLevel(std::uint32_t port_id, std::uint32_t* queue_level, std::uint32_t* queue_available); -int APS5_VABI sceAudio3dPortAdvance(std::uint32_t port_id); -int APS5_VABI sceAudio3dPortPush(std::uint32_t port_id, std::uint32_t blocking); -int APS5_VABI sceAudio3dPortFlush(std::uint32_t port_id); -int APS5_VABI sceAudio3dObjectReserve(std::uint32_t port_id, std::uint32_t* object_id); -int APS5_VABI sceAudio3dObjectUnreserve(std::uint32_t port_id, std::uint32_t object_id); -int APS5_VABI sceAudio3dObjectSetAttributes(std::uint32_t port_id, std::uint32_t object_id, std::uint64_t num_attributes, const Audio3dAttribute* attribute_array); -int APS5_VABI sceAudio3dBedWrite(std::uint32_t port_id, std::uint32_t num_channels, std::uint32_t format, const void* buffer, std::uint32_t num_samples); -int APS5_VABI sceAudio3dBedWrite2(std::uint32_t port_id, std::uint32_t num_channels, std::uint32_t format, const void* buffer, std::uint32_t num_samples, std::uint32_t output_route, bool restricted); -int APS5_VABI sceAudio3dAudioOutOpen(std::uint32_t port_id, int user_id, std::int32_t type, std::int32_t index, std::uint32_t len, std::uint32_t freq, std::uint32_t param); -int APS5_VABI sceAudio3dAudioOutClose(std::int32_t handle); -int APS5_VABI sceAudio3dAudioOutOutput(std::int32_t handle, const void* ptr); -int APS5_VABI sceAudio3dAudioOutOutputs(AudioOutOutputParam* param, std::uint32_t num); -} - namespace { constexpr int INVALID_PORT = static_cast(0x80EA0002); diff --git a/core/libs/tests/GuestAudio3dSpeakerArray.cpp b/core/libs/tests/GuestAudio3dSpeakerArray.cpp index 4f188b37c4..4a70481074 100644 --- a/core/libs/tests/GuestAudio3dSpeakerArray.cpp +++ b/core/libs/tests/GuestAudio3dSpeakerArray.cpp @@ -1,3 +1,5 @@ +#include "prx/libSceAudioOut/include/AudioOut2.hpp" +#include "prx/libSceAudio3d/include/Audio3d.hpp" #include "SceTypes.hpp" #include #include @@ -5,23 +7,6 @@ #include #include -struct Audio3dSpeakerArrayParameters { - const AudioOut2Position* positions; - std::uint32_t numSpeakers; - std::uint8_t is3d; - void* memory; - std::size_t memorySize; -}; - -extern "C" { -size_t APS5_VABI sceAudio3dGetSpeakerArrayMemorySize(std::uint32_t num_speakers, std::uint8_t is_3d); -int APS5_VABI sceAudio3dCreateSpeakerArray(AudioOut2SpeakerArrayHandle* handle, const Audio3dSpeakerArrayParameters* parameters); -int APS5_VABI sceAudio3dDeleteSpeakerArray(AudioOut2SpeakerArrayHandle handle); -int APS5_VABI sceAudio3dGetSpeakerArrayMixCoefficients(AudioOut2SpeakerArrayHandle handle, AudioOut2Position pos, float spread, float* coefficients, std::uint32_t num_coefficients); -int APS5_VABI sceAudio3dGetSpeakerArrayMixCoefficients2(AudioOut2SpeakerArrayHandle handle, AudioOut2Position pos, float spread, float* coefficients, std::uint32_t num_coefficients, std::uint8_t height_aware, float downmix_spread_radius); -size_t APS5_VABI sceAudioOut2GetSpeakerArrayMemorySize(std::uint32_t num_speakers, std::uint8_t is_3d, std::uint8_t is_ambisonics); -} - namespace { constexpr int INVALID_PARAMETER = static_cast(0x80EA0004); diff --git a/core/libs/tests/GuestAudioIn.cpp b/core/libs/tests/GuestAudioIn.cpp index 15caefd1ec..f968624ea3 100644 --- a/core/libs/tests/GuestAudioIn.cpp +++ b/core/libs/tests/GuestAudioIn.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceAudioIn/include/AudioIn.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include #include @@ -11,23 +12,6 @@ #include #include -extern "C" { -int APS5_VABI sceAudioInInit(); -int APS5_VABI sceAudioInOpen(int, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioInHqOpen(int, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioInAsyncOpen(int, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioInOpenEx(int, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioInHqOpenEx(int, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t); -int APS5_VABI sceAudioInSetCompressorPreGain(); -int APS5_VABI sceAudioInSetNoiseGateThreshold(); -int32_t APS5_VABI sceAudioInIsPadEmbeddedMic(int32_t); -int32_t APS5_VABI sceAudioInGetGain(int32_t, float*); -int32_t APS5_VABI sceAudioInGetRerouteCount(int32_t); -int APS5_VABI sceAudioInInput(int, void*); -int APS5_VABI sceAudioInGetSilentState(int); -int APS5_VABI sceAudioInClose(int); -} - static void Require(bool value) { if (!value) std::abort(); } template diff --git a/core/libs/tests/GuestDatagramReceive.cpp b/core/libs/tests/GuestDatagramReceive.cpp index d719b7719e..74ddf99c1d 100644 --- a/core/libs/tests/GuestDatagramReceive.cpp +++ b/core/libs/tests/GuestDatagramReceive.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceNet/include/Net.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include #include @@ -19,17 +20,7 @@ std::int64_t APS5_VABI recv_nid_postfix(int, void*, std::uint64_t, int); std::int64_t APS5_VABI recvfrom_nid_postfix(int, void*, std::uint64_t, int, void*, std::uint32_t*); int APS5_VABI close_nid_postfix(int); int* APS5_VABI __error_nid_postfix(); -int APS5_VABI sceNetInit_nid_postfix(); -int APS5_VABI sceNetSocket(const char*, int, int, int); -int APS5_VABI sceNetBind_nid_postfix(int, const void*, std::uint32_t); -int APS5_VABI sceNetConnect(int, const void*, std::uint32_t); -int APS5_VABI sceNetGetsockname(int, void*, std::uint32_t*); -int APS5_VABI sceNetSetsockopt(int, int, int, const void*, std::uint32_t); -std::int64_t APS5_VABI sceNetSendto(int, const void*, std::size_t, int, const void*, std::uint32_t); -std::int64_t APS5_VABI sceNetRecv(int, void*, std::size_t, int); -std::int64_t APS5_VABI sceNetRecvfrom(int, void*, std::size_t, int, void*, std::uint32_t*); -int APS5_VABI sceNetSocketClose(int); -int* APS5_VABI sceNetErrnoLoc(); + } static void Require(bool condition, const char* message) { diff --git a/core/libs/tests/GuestG2PDialog.cpp b/core/libs/tests/GuestG2PDialog.cpp index a318e77f68..24208f9176 100644 --- a/core/libs/tests/GuestG2PDialog.cpp +++ b/core/libs/tests/GuestG2PDialog.cpp @@ -5,8 +5,7 @@ #include extern "C" { -int APS5_VABI sceUserServiceInitialize(const UserServiceInitParam* param); -int APS5_VABI sceUserServiceTerminate(); + int APS5_VABI sceG2PDialogInitialize(void); int APS5_VABI sceG2PDialogOpen(const void* param); int APS5_VABI sceG2PDialogUpdateStatus(void); diff --git a/core/libs/tests/GuestHttp.cpp b/core/libs/tests/GuestHttp.cpp index 49134461d3..97f5e96d2e 100644 --- a/core/libs/tests/GuestHttp.cpp +++ b/core/libs/tests/GuestHttp.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceHttp/include/Http.hpp" #include "SceTypes.hpp" #include "ProcessParametersFixture.hpp" #include @@ -13,43 +14,6 @@ #include #include -extern "C" { -int APS5_VABI sceHttpUriParse(SceHttpUriElement*, const char*, void*, std::size_t*, std::size_t); -int APS5_VABI sceHttpUriCopy(SceHttpUriElement*, const SceHttpUriElement*, void*, std::size_t, std::size_t*); -int APS5_VABI sceHttpUriMerge(char*, const char*, const char*, std::size_t*, std::size_t, std::uint32_t); -int APS5_VABI sceHttpSetInflateGZIPEnabled(int, int); -int APS5_VABI sceHttpSetRequestStatusCallback(int, void (APS5_VABI *)(int, int, void*), void*); -int APS5_VABI sceHttpSendRequest(int, const void*, std::size_t); -int APS5_VABI sceHttpUriBuild(char*, std::size_t*, std::size_t, const SceHttpUriElement*, std::uint32_t); -int APS5_VABI sceHttpUriEscape(char*, std::size_t*, std::size_t, const char*); -int APS5_VABI sceHttpUriUnescape(char*, std::size_t*, std::size_t, const char*); -int APS5_VABI sceHttpUriSweepPath(char*, const char*, std::size_t); -int APS5_VABI sceHttpCreateEpoll(int, HttpEpollHandle*); -int APS5_VABI sceHttpDestroyEpoll(int, HttpEpollHandle); -int APS5_VABI sceHttpWaitRequest(HttpEpollHandle, HttpNBEvent*, int, int); -int APS5_VABI sceHttpAbortWaitRequest(HttpEpollHandle); -int APS5_VABI sceHttpInit_nid_postfix(int, int, std::uint64_t); -int APS5_VABI sceHttpTerm_nid_postfix(int); -int APS5_VABI sceHttpAuthCacheFlush(int); -int APS5_VABI sceHttpCookieFlush(int); -int APS5_VABI sceHttpGetMemoryPoolStats(int, void*); -int APS5_VABI sceHttpReadData(int, void*, std::size_t); -int APS5_VABI sceHttpCreateRequest2(int, const char*, const char*, std::uint64_t); -int APS5_VABI sceHttpsEnableOption(int, std::uint32_t); -int APS5_VABI sceHttpsLoadCert(int, int, void*, void*, void*); -int APS5_VABI sceHttpGetLastErrno(int, int*); -int APS5_VABI sceHttpSetResponseHeaderMaxSize(int, std::uint64_t); -int APS5_VABI sceHttpSetRecvBlockSize(int, std::uint32_t); -int APS5_VABI sceHttpRedirectCacheFlush(int); -int APS5_VABI sceHttpsUnloadCert(int); -int APS5_VABI sceHttpsSetSslVersion(int, int); -int APS5_VABI sceHttpsGetSslError(int, int*, std::uint32_t*); -int APS5_VABI sceHttpSetRedirectCallback(int, HttpRedirectCallback, void*); -int APS5_VABI sceHttpSetCookieRecvCallback(int, HttpCookieRecvCallback, void*); -int APS5_VABI sceHttpSetAuthInfoCallback(int, HttpAuthInfoCallback, void*); -int APS5_VABI sceHttpParseStatusLine(const char*, std::size_t, std::int32_t*, std::int32_t*, std::int32_t*, const char**, std::size_t*); -} - alignas(16) static std::array processParameters{}; static void Require(bool value) { if (!value) std::abort(); } diff --git a/core/libs/tests/GuestHttp2.cpp b/core/libs/tests/GuestHttp2.cpp index 102369b0c4..13d698ba4e 100644 --- a/core/libs/tests/GuestHttp2.cpp +++ b/core/libs/tests/GuestHttp2.cpp @@ -1,26 +1,11 @@ +#include "prx/libSceHttp2/include/Http2.hpp" #include "SceTypes.hpp" #include #include #include extern "C" { -int APS5_VABI sceHttp2Init(int, int, std::size_t, int); -int APS5_VABI sceHttp2CreateTemplate(int, const char*, int, int); -int APS5_VABI sceHttp2CreateRequestWithURL(int, const char*, const char*, std::uint64_t); -int APS5_VABI sceHttp2CreateCookieBox(std::size_t); -int APS5_VABI sceHttp2DeleteCookieBox(int); -int APS5_VABI sceHttp2SetCookieBox(int, int); -int APS5_VABI sceHttp2CookieFlush(int); -int APS5_VABI sceHttp2SetRequestNoContentLength(int); -int APS5_VABI sceHttp2SendRequest(int, const void*, std::size_t); -int APS5_VABI sceHttp2SendRequestAsync(int, const void*, std::size_t, Http2AsyncOption*, void*); -int APS5_VABI sceHttp2WaitAsync(int, Http2AsyncResult*, std::uint32_t*, void*); -int APS5_VABI sceHttp2DeleteRequest(int); -int APS5_VABI sceHttp2DeleteTemplate(int); -int APS5_VABI sceHttp2SetMinSslVersion(int, std::uint32_t); -int APS5_VABI sceHttp2SslEnableOption(int, std::uint32_t); -int APS5_VABI sceHttp2SslDisableOption(int, std::uint32_t); -int APS5_VABI sceHttp2Term(int); + int APS5_VABI sceKernelCreateEqueue(KernelEqueue* eq, const char* name); int APS5_VABI sceKernelDeleteEqueue(KernelEqueue eq); int APS5_VABI sceKernelWaitEqueue(KernelEqueue eq, KernelEvent* ev, int num, int* out, const KernelUseconds* timo); @@ -30,19 +15,6 @@ uintptr_t APS5_VABI sceKernelGetEventId(const KernelEvent* ev); void* APS5_VABI sceKernelGetEventUserData(const KernelEvent* ev); } -struct Http2MemoryPoolStats { - std::size_t pool_size; - std::size_t max_inuse_size; - std::size_t current_inuse_size; - std::int32_t reserved; -}; - -extern "C" { -int APS5_VABI sceHttp2GetMemoryPoolStats(int, Http2MemoryPoolStats*); -int APS5_VABI sceHttp2SetResolveRetry(int, std::int32_t); -int APS5_VABI sceHttp2WebSocketSetPingInterval(std::int32_t, std::uint32_t); -} - static void Require(bool value) { if (!value) std::abort(); } static constexpr int InvalidId = static_cast(0x817B1100); diff --git a/core/libs/tests/GuestHttpOptions.cpp b/core/libs/tests/GuestHttpOptions.cpp index a2f0f1ce7a..e396f51ccd 100644 --- a/core/libs/tests/GuestHttpOptions.cpp +++ b/core/libs/tests/GuestHttpOptions.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceHttp/include/Http.hpp" #include "SceTypes.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include @@ -5,42 +6,6 @@ #include #include -extern "C" { -int APS5_VABI sceHttpInit_nid_postfix(int, int, std::uint64_t); -int APS5_VABI sceHttpTerm_nid_postfix(int); -int APS5_VABI sceHttpCreateTemplate(int, const char*, int, int); -int APS5_VABI sceHttpDeleteTemplate(int); -int APS5_VABI sceHttpCreateConnectionWithURL(int, const char*, int); -int APS5_VABI sceHttpDeleteConnection(int); -int APS5_VABI sceHttpCreateRequestWithURL(int, int, const char*, std::uint64_t); -int APS5_VABI sceHttpDeleteRequest(int); -int APS5_VABI sceHttpSetAutoRedirect(int, int); -int APS5_VABI sceHttpGetAutoRedirect(int, int*); -int APS5_VABI sceHttpSetAuthEnabled(int, int); -int APS5_VABI sceHttpGetAuthEnabled(int, int*); -int APS5_VABI sceHttpSetCookieEnabled(int, int); -int APS5_VABI sceHttpGetCookieEnabled(int, int*); -int APS5_VABI sceHttpSetNonblock(int, int); -int APS5_VABI sceHttpGetNonblock(int, int*); -int APS5_VABI sceHttpTrySetNonblock(int, int); -int APS5_VABI sceHttpTryGetNonblock(int, int*); -int APS5_VABI sceHttpSetAcceptEncodingGZIPEnabled(int, int); -int APS5_VABI sceHttpGetAcceptEncodingGZIPEnabled(int, int*); -int APS5_VABI sceHttpSetDefaultAcceptEncodingGZIPEnabled(int, int); -int APS5_VABI sceHttpCreateEpoll(int, HttpEpollHandle*); -int APS5_VABI sceHttpDestroyEpoll(int, HttpEpollHandle); -int APS5_VABI sceHttpSetEpoll(int, HttpEpollHandle, void*); -int APS5_VABI sceHttpUnsetEpoll(int); -int APS5_VABI sceHttpGetEpoll(int, HttpEpollHandle*, void**); -int APS5_VABI sceHttpCacheRedirectedConnectionEnabled(int, int); -int APS5_VABI sceHttpsEnableOptionPrivate(int, std::uint32_t); -int APS5_VABI sceHttpsDisableOptionPrivate(int, std::uint32_t); -int APS5_VABI sceHttpAbortRequestForce(int); -int APS5_VABI sceHttpSetProxy(int, int, int, const char*, std::uint16_t); -int APS5_VABI sceHttpAddRequestHeader(int, const char*, const char*, std::uint32_t); -int APS5_VABI sceHttpRemoveRequestHeader(int, const char*); -} - namespace { constexpr int BeforeInit = static_cast(0x80431001u); diff --git a/core/libs/tests/GuestHttpResponseHeader.cpp b/core/libs/tests/GuestHttpResponseHeader.cpp index 76bbc60b5d..46244f8153 100644 --- a/core/libs/tests/GuestHttpResponseHeader.cpp +++ b/core/libs/tests/GuestHttpResponseHeader.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceHttp/include/Http.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include #include @@ -13,8 +14,6 @@ #include #endif -extern "C" int APS5_VABI sceHttpParseResponseHeader(const char*, std::size_t, const char*, const char**, std::size_t*); - static void Require(bool value) { if (!value) { std::fputs("HTTP response header check failed\n", stderr); diff --git a/core/libs/tests/GuestIndexedDraw.cpp b/core/libs/tests/GuestIndexedDraw.cpp index 3c6ed23b0b..14333e04f6 100644 --- a/core/libs/tests/GuestIndexedDraw.cpp +++ b/core/libs/tests/GuestIndexedDraw.cpp @@ -1,15 +1,11 @@ +#include "prx/libSceAgc/DcbDraw/include/IndexBuffer.hpp" +#include "prx/libSceAgc/DcbDraw/include/DrawIndexed.hpp" #include "SceTypes.hpp" #include "prx/libSceAgcDriver/Execution/include/Pm4.hpp" #include #include #include -extern "C" { -std::uint32_t* APS5_VABI sceAgcDcbSetIndexCount(CommandBuffer*, std::uint32_t); -std::uint32_t APS5_VABI sceAgcDcbSetIndexCountGetSize(); -std::uint32_t* APS5_VABI sceAgcDcbDrawIndex(CommandBuffer*, std::uint32_t, const volatile void*, std::uint64_t); -std::uint32_t APS5_VABI sceAgcDcbDrawIndexGetSize(); -} static void Require(bool condition) { if (!condition) std::abort(); } template static void Reject(TAction action) { bool rejected = false; diff --git a/core/libs/tests/GuestLoadExecHost.cpp b/core/libs/tests/GuestLoadExecHost.cpp index bba40568d0..63afeb58d4 100644 --- a/core/libs/tests/GuestLoadExecHost.cpp +++ b/core/libs/tests/GuestLoadExecHost.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSystemService/include/SystemService.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "prx/libc/include/Shutdown.hpp" #include "prx/libc/include/General.hpp" @@ -17,7 +18,6 @@ #include #endif -extern "C" int APS5_VABI sceSystemServiceLoadExec(const char*, const char* const*); extern "C" int APS5_VABI __cxa_atexit_nid_postfix(void (APS5_VABI*)(void*), void*, void*); extern "C" int APS5_VABI getargc_nid_postfix(); extern "C" const char** APS5_VABI getargv_nid_postfix(); diff --git a/core/libs/tests/GuestMemoryPoolStats.cpp b/core/libs/tests/GuestMemoryPoolStats.cpp index 7aec461e18..14d926ca31 100644 --- a/core/libs/tests/GuestMemoryPoolStats.cpp +++ b/core/libs/tests/GuestMemoryPoolStats.cpp @@ -1,3 +1,6 @@ +#include "prx/libSceSsl/include/Ssl.hpp" +#include "prx/libSceNet/include/Net.hpp" +#include "prx/libSceHttp2/include/Http2.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include @@ -6,41 +9,19 @@ #include #include -struct PoolStats { - std::size_t pool_size; - std::size_t max_inuse_size; - std::size_t current_inuse_size; - std::int32_t reserved; -}; - -struct NetPoolStats { - std::size_t pool_size; - std::size_t max_inuse_size; - std::size_t current_inuse_size; -}; - -extern "C" { -int APS5_VABI sceSslInit_nid_postfix(std::size_t); -int APS5_VABI sceSslTerm_nid_postfix(int); -int APS5_VABI sceSslGetMemoryPoolStats(int, void*); -int APS5_VABI sceHttp2Init(int, int, std::size_t, int); -int APS5_VABI sceHttp2Term(int); -int APS5_VABI sceHttp2GetMemoryPoolStats(int, void*); -int APS5_VABI sceNetPoolCreate(const char*, int, int); -int APS5_VABI sceNetPoolDestroy(int); -int APS5_VABI sceNetGetMemoryPoolStats(int, void*); -} - static void Require(bool value) { if (!value) std::abort(); } -using StatsCall = int(APS5_VABI*)(int, void*); - -static void CheckRejected(StatsCall call, int id, int expected) { - std::array buffer; - buffer.fill(0x5a); - Require(call(id, buffer.data()) == expected); - for (std::size_t i = 0; i < sizeof(PoolStats); ++i) Require(buffer[i] == 0); - for (std::size_t i = sizeof(PoolStats); i < buffer.size(); ++i) Require(buffer[i] == 0x5a); +template +static void CheckRejected(int (APS5_VABI *call)(int, TStats*), int id, int expected) { + struct { + TStats stats; + std::array guard; + } buffer; + std::memset(&buffer, 0x5a, sizeof(buffer)); + Require(call(id, &buffer.stats) == expected); + const auto* bytes = reinterpret_cast(&buffer.stats); + for (std::size_t i = 0; i < sizeof(TStats); ++i) Require(bytes[i] == 0); + for (const auto byte : buffer.guard) Require(byte == 0x5a); } int main() { @@ -50,12 +31,12 @@ int main() { constexpr int http2NullPointer = static_cast(0x817B1225); constexpr int netBadDescriptor = static_cast(0x80410109); constexpr int netInvalid = static_cast(0x80410116); - static_assert(sizeof(PoolStats) == 0x20 && sizeof(NetPoolStats) == 0x18); + static_assert(sizeof(SceSsl::MemoryPoolStats) == 0x20 && sizeof(Http2MemoryPoolStats) == 0x20 && sizeof(NetMemoryPoolStats) == 0x18); const int ssl = sceSslInit_nid_postfix(0x40000); Require(ssl > 0); - PoolStats stats{}; - Require(sceSslGetMemoryPoolStats(ssl, &stats) == 0 && stats.pool_size == 0x40000); + SceSsl::MemoryPoolStats sslStats{}; + Require(sceSslGetMemoryPoolStats(ssl, &sslStats) == 0 && sslStats.poolSize == 0x40000); Require(sceSslGetMemoryPoolStats(ssl, nullptr) == sslInvalidValue); Require(sceSslGetMemoryPoolStats(12345, nullptr) == sslInvalidValue); CheckRejected(sceSslGetMemoryPoolStats, 12345, sslInvalidId); @@ -63,7 +44,8 @@ int main() { const int http2 = sceHttp2Init(1, ssl, 0x40000, 1); Require(http2 > 0); - Require(sceHttp2GetMemoryPoolStats(http2, &stats) == 0 && stats.pool_size == 0x40000); + Http2MemoryPoolStats http2Stats{}; + Require(sceHttp2GetMemoryPoolStats(http2, &http2Stats) == 0 && http2Stats.pool_size == 0x40000); Require(sceHttp2GetMemoryPoolStats(http2, nullptr) == http2NullPointer); Require(sceHttp2GetMemoryPoolStats(12345, nullptr) == http2NullPointer); CheckRejected(sceHttp2GetMemoryPoolStats, 12345, http2InvalidId); @@ -76,14 +58,17 @@ int main() { const int pool = sceNetPoolCreate("stats", 0x20000, 0); Require(pool > 0); - NetPoolStats netStats{}; + NetMemoryPoolStats netStats{}; Require(sceNetGetMemoryPoolStats(pool, &netStats) == 0 && netStats.pool_size == 0x20000); Require(sceNetGetMemoryPoolStats(pool, nullptr) == netInvalid); Require(sceNetGetMemoryPoolStats(12345, nullptr) == netBadDescriptor); - std::array untouched; - untouched.fill(0x5a); + struct { + NetMemoryPoolStats stats; + std::array guard; + } untouched; + std::memset(&untouched, 0x5a, sizeof(untouched)); auto buffer = untouched; - Require(sceNetGetMemoryPoolStats(12345, buffer.data()) == netBadDescriptor && buffer == untouched); + Require(sceNetGetMemoryPoolStats(12345, &buffer.stats) == netBadDescriptor && std::memcmp(&buffer, &untouched, sizeof(buffer)) == 0); Require(sceNetPoolDestroy(pool) == 0); Require(sceNetGetMemoryPoolStats(pool, nullptr) == netBadDescriptor); return 0; diff --git a/core/libs/tests/GuestNetBufferValidation.cpp b/core/libs/tests/GuestNetBufferValidation.cpp index 4b2c66402d..a46e37799f 100644 --- a/core/libs/tests/GuestNetBufferValidation.cpp +++ b/core/libs/tests/GuestNetBufferValidation.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceNet/include/Net.hpp" #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #include @@ -13,12 +14,7 @@ #include "prx/libkernel/Socket/include/SocketPoll.hpp" extern "C" { -int APS5_VABI sceNetInit_nid_postfix(); -int APS5_VABI sceNetSocket(const char*, int, int, int); -int APS5_VABI sceNetSocketClose(int); -int APS5_VABI sceNetSetsockopt(int, int, int, const void*, std::uint32_t); -int APS5_VABI sceNetGetsockopt(int, int, int, void*, std::uint32_t*); -int* APS5_VABI sceNetErrnoLoc(); + int APS5_VABI setsockopt_nid_postfix(int, int, int, const void*, std::uint32_t); int* APS5_VABI __error_nid_postfix(); } diff --git a/core/libs/tests/GuestNetCtl.cpp b/core/libs/tests/GuestNetCtl.cpp index 9b900f4bd4..9a0e595f2b 100644 --- a/core/libs/tests/GuestNetCtl.cpp +++ b/core/libs/tests/GuestNetCtl.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceNetCtl/include/NetCtl.hpp" #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #include @@ -31,29 +32,13 @@ struct NetCtlDefaultRoute { }; #endif -union NetCtlInfoV6; extern "C" { -int APS5_VABI sceNetCtlInit(void); -int APS5_VABI sceNetCtlCheckCallback(void); -int APS5_VABI sceNetCtlGetInfo(int, NetCtlInfo*); -int APS5_VABI sceNetCtlGetNatInfo(NetCtlNatInfo*); -int APS5_VABI sceNetCtlGetState(int*); -int APS5_VABI sceNetCtlGetStateV6(int*); -int APS5_VABI sceNetCtlGetInfoV6(std::uint32_t, NetCtlInfoV6*); -int APS5_VABI sceNetCtlGetResult(int, int*); -int APS5_VABI sceNetCtlGetResultV6(int, int*); + #ifdef __APPLE__ std::size_t NetCtlDefaultRoutes_nid_no_patch(const char*, std::size_t, NetCtlDefaultRoute*, std::size_t); #endif -int APS5_VABI sceNetCtlRegisterCallback(NetCtlCallback, void*, int*); -int APS5_VABI sceNetCtlRegisterCallbackV6(NetCtlCallback, void*, int*); -void APS5_VABI sceNetCtlTerm(void); -int APS5_VABI sceNetCtlUnregisterCallback(int); -int APS5_VABI sceNetCtlUnregisterCallbackV6(int); -int APS5_VABI sceNetCtlRegisterCallbackForNpToolkit(NetCtlCallback, void*, int*); -int APS5_VABI sceNetCtlUnregisterCallbackForNpToolkit(int); -int APS5_VABI sceNetCtlCheckCallbackForNpToolkit(void); + } namespace { diff --git a/core/libs/tests/GuestNpAuthAuthorizedAppDialog.cpp b/core/libs/tests/GuestNpAuthAuthorizedAppDialog.cpp index aedef7375a..070f14c4c9 100644 --- a/core/libs/tests/GuestNpAuthAuthorizedAppDialog.cpp +++ b/core/libs/tests/GuestNpAuthAuthorizedAppDialog.cpp @@ -6,8 +6,7 @@ #include "prx/libSceUserService/UserService.hpp" extern "C" { -int APS5_VABI sceUserServiceInitialize(const UserServiceInitParam* param); -int APS5_VABI sceUserServiceTerminate(); + int APS5_VABI sceNpAuthAuthorizedAppDialogInitialize(void); int APS5_VABI sceNpAuthAuthorizedAppDialogOpen(const NpAuthAuthorizedAppDialogParam* param); int APS5_VABI sceNpAuthAuthorizedAppDialogUpdateStatus(void); diff --git a/core/libs/tests/GuestNpCommerceDialog.cpp b/core/libs/tests/GuestNpCommerceDialog.cpp index 3db9b4c3b3..86bdab1300 100644 --- a/core/libs/tests/GuestNpCommerceDialog.cpp +++ b/core/libs/tests/GuestNpCommerceDialog.cpp @@ -10,8 +10,7 @@ #include extern "C" { -int APS5_VABI sceUserServiceInitialize(const UserServiceInitParam* param); -int APS5_VABI sceUserServiceTerminate(); + int APS5_VABI sceNpCommerceDialogInitialize(); int APS5_VABI sceNpCommerceDialogInitializeInternal(); int APS5_VABI sceNpCommerceDialogOpen(const NpCommerceDialogParam* param); diff --git a/core/libs/tests/GuestOfflineImports.cpp b/core/libs/tests/GuestOfflineImports.cpp index 351c78faa7..0b379c0066 100644 --- a/core/libs/tests/GuestOfflineImports.cpp +++ b/core/libs/tests/GuestOfflineImports.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceHttp/include/Http.hpp" #include "SceTypes.hpp" #include @@ -12,7 +13,7 @@ int APS5_VABI sceVideoRecordingGetInfo(std::int32_t info, void* data, std::size_ int APS5_VABI sceVideoRecordingSetInfo(std::int32_t info, const void* data, std::size_t size); int APS5_VABI sceNpEntitlementAccessAbortRequest(std::int64_t); int APS5_VABI sceNpEntitlementAccessDeleteRequest(std::int64_t); -int APS5_VABI sceHttpSendRequest(int, const void*, std::size_t); + int APS5_VABI sceNpEntitlementAccessGetEntitlementKey( std::uint32_t, const NpUnifiedEntitlementLabel*, NpEntitlementAccessEntitlementKey*); int APS5_VABI sceNpEntitlementAccessGetGameTrialsFlag(std::uint32_t*); diff --git a/core/libs/tests/GuestPad.cpp b/core/libs/tests/GuestPad.cpp index 36e3e9e0ab..e7c2f60371 100644 --- a/core/libs/tests/GuestPad.cpp +++ b/core/libs/tests/GuestPad.cpp @@ -14,38 +14,6 @@ #include #include -extern "C" { -int APS5_VABI scePadOpen_nid_postfix(int, int, int, const void*); -int APS5_VABI scePadOpenExt(int, int, int, const void*); -int APS5_VABI scePadClose_nid_postfix(int); -int APS5_VABI scePadGetHandle(int, int, int); -int APS5_VABI scePadSetVibrationTriggerEffectWeakWhileEmbeddedMicInUse(bool); -int APS5_VABI scePadSetVibrationMode(int, int); -int APS5_VABI scePadInit_nid_postfix(void); -int APS5_VABI scePadUnknown_n3kSX62fgNo(); -int APS5_VABI scePadRead_nid_postfix(int, PadData*, int); -int APS5_VABI scePadReadState(int, PadData*); -int APS5_VABI scePadSetTiltCorrectionState(int, bool); -int APS5_VABI scePadResetOrientation(int); -int APS5_VABI scePadSetAngularVelocityDeadbandState(int, bool); -int APS5_VABI scePadSetAngularVelocityBiasCorrectionState(int, bool); -int APS5_VABI scePadIsRemoteController(int, bool*); -int APS5_VABI scePadGetAccessibilityControllerState(int, std::uint32_t*); -bool APS5_VABI scePadIsDS4Connected(std::int32_t); -bool APS5_VABI scePadIsBlasterConnected(std::int32_t); -bool APS5_VABI scePadIsMoveConnected(std::int32_t); -int APS5_VABI scePadGetControllerInformation(int, PadControllerInformation*); -int APS5_VABI scePadDeviceClassParseData(int, const PadData*, PadDeviceClassData*); -int APS5_VABI scePadDeviceClassGetExtendedInformation(int, PadDeviceClassExtendedInformation*); -int APS5_VABI scePadSetVibration(int, const PadVibrationParam*); -int APS5_VABI scePadGetExtControllerInformation(int, void*); -int APS5_VABI scePadResetLightBar(int); -int APS5_VABI scePadSetLightBar(int, const PadLightBarParam*); -int APS5_VABI scePadSetMotionSensorState(int, bool); -int APS5_VABI scePadGetControllerType(int, std::int32_t*); -int APS5_VABI scePadGetInfo_nid_postfix(PadInfo*); -} - static void Require(bool value) { if (!value) std::abort(); } static void CheckInputCommands() { diff --git a/core/libs/tests/GuestPadVibrationMode.cpp b/core/libs/tests/GuestPadVibrationMode.cpp index 1d826fedb1..3b82071a1f 100644 --- a/core/libs/tests/GuestPadVibrationMode.cpp +++ b/core/libs/tests/GuestPadVibrationMode.cpp @@ -3,13 +3,6 @@ #include #include -extern "C" { -int APS5_VABI scePadInit_nid_postfix(void); -int APS5_VABI scePadOpen_nid_postfix(int userId, int type, int index, const void* param); -int APS5_VABI scePadClose_nid_postfix(int handle); -int APS5_VABI scePadSetVibrationMode(int handle, int mode); -} - static void Require(bool value) { if (!value) std::abort(); } int main() { diff --git a/core/libs/tests/GuestPlayerReviewDialog.cpp b/core/libs/tests/GuestPlayerReviewDialog.cpp index 45621694d4..ee13064857 100644 --- a/core/libs/tests/GuestPlayerReviewDialog.cpp +++ b/core/libs/tests/GuestPlayerReviewDialog.cpp @@ -5,8 +5,7 @@ #include extern "C" { -int APS5_VABI sceUserServiceInitialize(const UserServiceInitParam* param); -int APS5_VABI sceUserServiceTerminate(); + int APS5_VABI scePlayerReviewDialogInitialize(void); int APS5_VABI scePlayerReviewDialogTerminate(void); int APS5_VABI scePlayerReviewDialogOpen(const void* param); diff --git a/core/libs/tests/GuestPlayerSelectionDialog.cpp b/core/libs/tests/GuestPlayerSelectionDialog.cpp index 4d3e163d12..f4440703a8 100644 --- a/core/libs/tests/GuestPlayerSelectionDialog.cpp +++ b/core/libs/tests/GuestPlayerSelectionDialog.cpp @@ -6,8 +6,7 @@ #include "prx/libSceUserService/UserService.hpp" extern "C" { -int APS5_VABI sceUserServiceInitialize(const UserServiceInitParam* param); -int APS5_VABI sceUserServiceTerminate(); + int APS5_VABI scePlayerSelectionDialogInitialize(void); int APS5_VABI scePlayerSelectionDialogOpen(const PlayerSelectionDialogParam* param); int APS5_VABI scePlayerSelectionDialogUpdateStatus(void); diff --git a/core/libs/tests/GuestRefusedConnect.cpp b/core/libs/tests/GuestRefusedConnect.cpp index 409f8ad97c..515029a52f 100644 --- a/core/libs/tests/GuestRefusedConnect.cpp +++ b/core/libs/tests/GuestRefusedConnect.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceNet/include/Net.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include #include @@ -14,11 +15,7 @@ int APS5_VABI accept_nid_postfix(int, void*, std::uint32_t*); int APS5_VABI getsockname_nid_postfix(int, void*, std::uint32_t*); int APS5_VABI close_nid_postfix(int); int* APS5_VABI __error_nid_postfix(); -int APS5_VABI sceNetInit_nid_postfix(); -int APS5_VABI sceNetSocket(const char*, int, int, int); -int APS5_VABI sceNetConnect(int, const void*, std::uint32_t); -int APS5_VABI sceNetSocketClose(int); -int* APS5_VABI sceNetErrnoLoc(); + } namespace { diff --git a/core/libs/tests/GuestRenderingWait.cpp b/core/libs/tests/GuestRenderingWait.cpp index a17c039713..352b8b1d1d 100644 --- a/core/libs/tests/GuestRenderingWait.cpp +++ b/core/libs/tests/GuestRenderingWait.cpp @@ -8,14 +8,7 @@ #include #include #include -extern "C" std::uint32_t APS5_VABI sceAgcDriverGetWaitRenderingPacketSizeInDwords(); -extern "C" std::uint32_t APS5_VABI sceAgcDriverGetSetFlipPacketSizeInDwords(); -extern "C" std::uint32_t APS5_VABI sceAgcDriverGetSetWorkloadsActivePacketSize(); -extern "C" std::uint32_t APS5_VABI sceAgcDriverGetSetWorkloadCompletePacketSize(); -extern "C" std::uint32_t APS5_VABI sceAgcDriverGetSetWorkloadStreamInactivePacketSize(); -extern "C" std::uint32_t APS5_VABI sceAgcDriverNopDataGetPacketSize(std::uint32_t); -extern "C" std::uint32_t APS5_VABI sceAgcDriverUserDataGetPacketSize(std::uint32_t); -extern "C" std::uint32_t APS5_VABI sceAgcDriverWaitUntilSafeForRendering(std::uint32_t**, std::uint32_t, std::uint32_t, std::uint32_t, int); + static void Require(bool value) { if (!value) std::abort(); } class Output final : public AgcDriver::IVideoOutput, public AgcDriver::IRenderingWait, public AgcDriver::IFlipRequest, public std::enable_shared_from_this { diff --git a/core/libs/tests/GuestResolver.cpp b/core/libs/tests/GuestResolver.cpp index 20f02e1d16..2e5c7a4566 100644 --- a/core/libs/tests/GuestResolver.cpp +++ b/core/libs/tests/GuestResolver.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceNet/include/Net.hpp" #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #include @@ -18,7 +19,7 @@ extern "C" { GuestResolver::HostEntry* APS5_VABI gethostbyname_nid_postfix(const char*); -int* APS5_VABI sceNetErrnoLoc(); + int APS5_VABI getaddrinfo_nid_postfix(const char*, const char*, const GuestResolver::AddressInfo*, GuestResolver::AddressInfo**); void APS5_VABI freeaddrinfo_nid_postfix(GuestResolver::AddressInfo*); int APS5_VABI getnameinfo_nid_postfix(const void*, std::uint32_t, char*, std::uint32_t, char*, std::uint32_t, int); diff --git a/core/libs/tests/GuestRtc.cpp b/core/libs/tests/GuestRtc.cpp index 09d0659f5f..10a2900e2f 100644 --- a/core/libs/tests/GuestRtc.cpp +++ b/core/libs/tests/GuestRtc.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceRtc/include/Rtc.hpp" #include "SceTypes.hpp" #include "ProcessParametersFixture.hpp" #include "prx/libc/include/general/VabiMacros.hpp" @@ -16,69 +17,6 @@ #include #include -extern "C" { -int APS5_VABI sceRtcCheckValid(const RtcDateTime*); -int APS5_VABI sceRtcIsLeapYear(int); -int APS5_VABI sceRtcGetDaysInMonth(int, int); -int APS5_VABI sceRtcGetDayOfWeek(int, int, int); -int APS5_VABI sceRtcGetTickResolution(void); -int APS5_VABI sceRtcGetTick(const RtcDateTime*, RtcTick*); -int APS5_VABI sceRtcSetTick(RtcDateTime*, const RtcTick*); -int APS5_VABI sceRtcGetCurrentTick(RtcTick*); -int APS5_VABI sceRtcGetCurrentNetworkTick(RtcTick*); -int APS5_VABI sceRtcGetCurrentClock(RtcDateTime*, int); -int APS5_VABI sceRtcGetCurrentClockLocalTime(RtcDateTime*); -int APS5_VABI sceRtcConvertUtcToLocalTime(const RtcTick*, RtcTick*); -int APS5_VABI sceRtcConvertLocalTimeToUtc(const RtcTick*, RtcTick*); -int APS5_VABI sceRtcGetTime_t(const RtcDateTime*, std::int64_t*); -int APS5_VABI sceRtcSetTime_t(RtcDateTime*, std::int64_t); -int APS5_VABI sceRtcGetWin32FileTime(const RtcDateTime*, std::uint64_t*); -int APS5_VABI sceRtcSetWin32FileTime(RtcDateTime*, std::uint64_t); -int APS5_VABI sceRtcGetDosTime(const RtcDateTime*, std::uint32_t*); -int APS5_VABI sceRtcSetDosTime(RtcDateTime*, std::uint32_t); -int APS5_VABI sceRtcGetYear(const RtcDateTime*); -int APS5_VABI sceRtcSetYear(RtcDateTime*, int); -int APS5_VABI sceRtcGetMonth(const RtcDateTime*); -int APS5_VABI sceRtcSetMonth(RtcDateTime*, int); -int APS5_VABI sceRtcGetDay(const RtcDateTime*); -int APS5_VABI sceRtcSetDay(RtcDateTime*, int); -int APS5_VABI sceRtcGetHour(const RtcDateTime*); -int APS5_VABI sceRtcSetHour(RtcDateTime*, int); -int APS5_VABI sceRtcGetMinute(const RtcDateTime*); -int APS5_VABI sceRtcSetMinute(RtcDateTime*, int); -int APS5_VABI sceRtcGetSecond(const RtcDateTime*); -int APS5_VABI sceRtcSetSecond(RtcDateTime*, int); -int APS5_VABI sceRtcGetMicrosecond(const RtcDateTime*); -int APS5_VABI sceRtcSetMicrosecond(RtcDateTime*, int); -int APS5_VABI sceRtcFormatRFC3339(char*, const RtcTick*, int); -int APS5_VABI sceRtcParseRFC3339(RtcTick*, const char*); -int APS5_VABI sceRtcParseDateTime(RtcTick*, const char*); -int APS5_VABI sceRtcTickAddTicks(RtcTick*, const RtcTick*, std::int64_t); -int APS5_VABI sceRtcTickAddMicroseconds(RtcTick*, const RtcTick*, std::int64_t); -int APS5_VABI sceRtcTickAddSeconds(RtcTick*, const RtcTick*, std::int64_t); -int APS5_VABI sceRtcTickAddMinutes(RtcTick*, const RtcTick*, std::int64_t); -int APS5_VABI sceRtcTickAddHours(RtcTick*, const RtcTick*, std::int32_t); -int APS5_VABI sceRtcTickAddDays(RtcTick*, const RtcTick*, std::int32_t); -int APS5_VABI sceRtcTickAddWeeks(RtcTick*, const RtcTick*, std::int32_t); -int APS5_VABI sceRtcTickAddMonths(RtcTick*, const RtcTick*, std::int32_t); -int APS5_VABI sceRtcTickAddYears(RtcTick*, const RtcTick*, std::int16_t); -int APS5_VABI sceRtcFormatRFC3339LocalTime(char*, const RtcTick*); -int APS5_VABI sceRtcFormatRFC2822(char*, const RtcTick*, int); -int APS5_VABI sceRtcFormatRFC2822LocalTime(char*, const RtcTick*); -int APS5_VABI sceRtcFormatRFC3339Precise(char*, const RtcTick*, int, int); -int APS5_VABI sceRtcFormatRFC3339PreciseLocalTime(char*, const RtcTick*, int); -int APS5_VABI sceRtcCompareTick(const RtcTick*, const RtcTick*); -int APS5_VABI sceRtcGetCurrentAdNetworkTick(RtcTick*); -int APS5_VABI sceRtcGetCurrentRawNetworkTick(RtcTick*); -int APS5_VABI sceRtcGetCurrentDebugNetworkTick(RtcTick*); -int APS5_VABI sceRtcSetCurrentTick(const RtcTick*); -int APS5_VABI sceRtcSetCurrentNetworkTick(const RtcTick*); -int APS5_VABI sceRtcSetCurrentAdNetworkTick(const RtcTick*); -int APS5_VABI sceRtcSetCurrentDebugNetworkTick(const RtcTick*); -int APS5_VABI sceRtcInit(void); -int APS5_VABI sceRtcEnd(void); -} - static void Require(bool value) { if (!value) std::abort(); } static void SetTimeZone(const char* zone) { diff --git a/core/libs/tests/GuestSceNet.cpp b/core/libs/tests/GuestSceNet.cpp index 4e5f27cab2..4983d1f035 100644 --- a/core/libs/tests/GuestSceNet.cpp +++ b/core/libs/tests/GuestSceNet.cpp @@ -1,3 +1,5 @@ +#include "prx/libSceNetCtl/include/NetCtl.hpp" +#include "prx/libSceNet/include/Net.hpp" #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #include @@ -32,69 +34,10 @@ extern "C" { extern const std::uint8_t in6addr_any_nid_postfix[16]; extern const std::uint8_t in6addr_loopback_nid_postfix[16]; -int APS5_VABI sceNetInit_nid_postfix(void); -int APS5_VABI sceNetShowNetstatWithMemory(int); -int APS5_VABI sceNetShowRouteWithMemory(int); -int APS5_VABI sceNetShowNetstat(void); -int APS5_VABI sceNetShowNetstatEx(std::uint32_t); -int APS5_VABI sceNetShowIfconfig(void); -int APS5_VABI sceNetShowPolicy(void); -int APS5_VABI sceNetShowRoute(void); -int APS5_VABI sceNetShowRoute6(void); -int APS5_VABI sceNetSocket(const char*, int, int, int); -int APS5_VABI sceNetBind_nid_postfix(int, const void*, std::uint32_t); -int APS5_VABI sceNetListen(int, int); -int APS5_VABI sceNetGetsockname(int, void*, std::uint32_t*); -int APS5_VABI sceNetGetpeername(int, void*, std::uint32_t*); -int APS5_VABI sceNetGetSockInfo(int, void*, int, int); -int APS5_VABI sceNetGetSockInfo6(int, void*, int, int); -int APS5_VABI sceNetConnect(int, const void*, std::uint32_t); -int APS5_VABI sceNetAccept(int, void*, std::uint32_t*); -std::int64_t APS5_VABI sceNetSend(int, const void*, std::size_t, int); -std::int64_t APS5_VABI sceNetRecv(int, void*, std::size_t, int); -std::int64_t APS5_VABI sceNetSendto(int, const void*, std::size_t, int, const void*, std::uint32_t); -std::int64_t APS5_VABI sceNetRecvfrom(int, void*, std::size_t, int, void*, std::uint32_t*); -int APS5_VABI sceNetSocketClose(int); -int APS5_VABI sceNetSocketAbort(int, int); -int APS5_VABI sceNetShutdown(int, int); -int APS5_VABI sceNetSetsockopt(int, int, int, const void*, std::uint32_t); -int APS5_VABI sceNetGetsockopt(int, int, int, void*, std::uint32_t*); -int APS5_VABI sceNetIoctl(int, std::uint32_t, void*); -int* APS5_VABI sceNetErrnoLoc(void); -int APS5_VABI sceNetEtherNtostr(const NetEtherAddr*, char*, std::size_t); -int APS5_VABI sceNetEtherStrton(const char*, NetEtherAddr*); -int APS5_VABI sceNetEpollCreate(const char*, int); -int APS5_VABI sceNetEpollControl(int, int, int, const NetEpollEvent*); -int APS5_VABI sceNetEpollWait(int, NetEpollEvent*, int, int); -int APS5_VABI sceNetEpollDestroy(int); -int APS5_VABI sceNetEpollAbort(int, int); -int APS5_VABI sceNetGetsockopt(int, int, int, void*, std::uint32_t*); + extern const std::uint32_t sce_net_in6addr_any[4]; extern const std::uint8_t sce_net_in6addr_linklocal_allnodes[16]; -int APS5_VABI sceNetResolverCreate(const char*, int, int); -int APS5_VABI sceNetResolverStartNtoa(int, const char*, void*, int, int, int); -int APS5_VABI sceNetResolverStartNtoa6(int, const char*, void*, int, int, int); -int APS5_VABI sceNetResolverStartNtoaMultipleRecordsEx(int, const char*, void*, int, int, int); -int APS5_VABI sceNetResolverStartNtoaMultipleRecords(int, const char*, void*, int, int, int); -int APS5_VABI sceNetResolverStartAton(int, const void*, char*, int, int, int, int); -int APS5_VABI sceNetResolverStartAton6(int, const void*, char*, int, int, int, int); -int APS5_VABI sceNetResolverAbort(int, int); -int APS5_VABI sceNetResolverDestroy(int); -int APS5_VABI sceNetResolverGetError(int, int*); -int APS5_VABI sceNetClearDnsCache(int); -int APS5_VABI sceNetGetDnsInfo(std::uint32_t*, int); -int APS5_VABI sceNetCtlInit(void); -int APS5_VABI sceNetCtlGetState(int*); -int APS5_VABI sceNetCtlGetInfo(int, NetCtlInfo*); -int APS5_VABI sceNetCtlGetIfStat(NetCtlIfStat*); -int APS5_VABI sceNetCtlRegisterCallback(NetCtlCallback, void*, int*); -int APS5_VABI sceNetCtlUnregisterCallback(int); -int APS5_VABI sceNetCtlRegisterCallbackV6(NetCtlCallback, void*, int*); -int APS5_VABI sceNetCtlUnregisterCallbackV6(int); -int APS5_VABI sceNetCtlCheckCallback(void); -int APS5_VABI sceNetCtlRegisterCallbackForNpToolkit(NetCtlCallback, void*, int*); -int APS5_VABI sceNetCtlUnregisterCallbackForNpToolkit(int); -int APS5_VABI sceNetCtlCheckCallbackForNpToolkit(void); + std::uint64_t NetCtlReadByteCounter_nid_no_patch(const char*); int APS5_VABI select_nid_postfix(int, void*, void*, void*, const void*); int APS5_VABI open_nid_postfix(const char*, int, int); @@ -111,45 +54,7 @@ struct GuestPollEntry { }; int APS5_VABI poll_nid_postfix(GuestPollEntry*, std::uint32_t, int); int* APS5_VABI __error_nid_postfix(); -int APS5_VABI sceNetInetPton(int, const char*, void*); -int APS5_VABI sceNetInetPtonEx(int, const char*, void*, int); -int APS5_VABI sceNetUsleep(int); -void APS5_VABI sceNetGetSystemTime(std::uint64_t*); -const char* APS5_VABI sceNetInetNtop(int, const void*, char*, std::uint32_t); -int* APS5_VABI sceNetErrnoLoc(void); -} -struct NetIovec { - void* base; - std::uint64_t length; -}; - -struct NetMsghdr { - void* name; - std::uint32_t name_length; - NetIovec* iov; - int iov_length; - void* control; - std::uint32_t control_length; - int flags; -}; - -struct NetMemoryPoolStats { - std::size_t pool_size; - std::size_t max_inuse_size; - std::size_t current_inuse_size; -}; - -extern "C" { -std::int64_t APS5_VABI sceNetSendmsg(int, const NetMsghdr*, int); -std::int64_t APS5_VABI sceNetRecvmsg(int, NetMsghdr*, int); -int APS5_VABI sceNetPoolCreate(const char*, int, int); -int APS5_VABI sceNetPoolDestroy(int); -int APS5_VABI sceNetGetMemoryPoolStats(int, NetMemoryPoolStats*); -const char* APS5_VABI sceNetGetIfName(std::uint32_t); -int APS5_VABI sceNetGetRandom(std::uint32_t*); -void* APS5_VABI sceNetMemoryAllocate(std::int32_t, int); -void APS5_VABI sceNetMemoryFree(void*); } static void Require(bool condition) { @@ -2138,9 +2043,9 @@ int main() { Require(sceNetResolverGetError(resolver, &resolver_error) == 0 && resolver_error == static_cast(0x804101E1)); Require(sceNetResolverStartNtoa(resolver, "localhost", ipv4.data(), 5000000, 1, 0) == 0); Require(sceNetResolverGetError(resolver, &resolver_error) == 0 && resolver_error == 0); - std::array records{}; + alignas(NetResolverInfo) std::array records{}; records.fill(0xA5); - Require(sceNetResolverStartNtoaMultipleRecordsEx(resolver, "localhost", records.data(), 5000000, 1, 0) == 0); + Require(sceNetResolverStartNtoaMultipleRecordsEx(resolver, "localhost", reinterpret_cast(records.data()), 5000000, 1, 0) == 0); std::int32_t record_family = 0; std::int32_t record_count = 0; std::int32_t record_count4 = 0; @@ -2158,37 +2063,37 @@ int main() { } } const auto resolved = records; - Require(sceNetResolverStartNtoaMultipleRecordsEx(resolver, nullptr, records.data(), 5000000, 1, 0) == + Require(sceNetResolverStartNtoaMultipleRecordsEx(resolver, nullptr, reinterpret_cast(records.data()), 5000000, 1, 0) == static_cast(0x80410116) && *sceNetErrnoLoc() == 22 && records == resolved); Require(sceNetResolverStartNtoaMultipleRecordsEx(resolver, "localhost", nullptr, 5000000, 1, 0) == static_cast(0x80410116) && *sceNetErrnoLoc() == 22); { ScopedResolverLookupOverride lookupOverride(FailResolverLookup); - Require(sceNetResolverStartNtoaMultipleRecordsEx(resolver, "guest-sce-net.invalid.", records.data(), 5000000, 1, 0) == + Require(sceNetResolverStartNtoaMultipleRecordsEx(resolver, "guest-sce-net.invalid.", reinterpret_cast(records.data()), 5000000, 1, 0) == static_cast(0x804101E1)); } Require(records == resolvedRecords); - std::array plain{}; + alignas(NetResolverInfo) std::array plain{}; plain.fill(0xA5); - Require(sceNetResolverStartNtoaMultipleRecords(resolver, "localhost", plain.data(), 5000000, 1, 0) == 0); + Require(sceNetResolverStartNtoaMultipleRecords(resolver, "localhost", reinterpret_cast(plain.data()), 5000000, 1, 0) == 0); Require(plain == resolved); Require(sceNetResolverGetError(resolver, &resolver_error) == 0 && resolver_error == 0); - Require(sceNetResolverStartNtoaMultipleRecords(resolver, nullptr, plain.data(), 5000000, 1, 0) == + Require(sceNetResolverStartNtoaMultipleRecords(resolver, nullptr, reinterpret_cast(plain.data()), 5000000, 1, 0) == static_cast(0x80410116) && *sceNetErrnoLoc() == 22 && plain == resolved); Require(sceNetResolverStartNtoaMultipleRecords(resolver, "localhost", nullptr, 5000000, 1, 0) == static_cast(0x80410116) && *sceNetErrnoLoc() == 22); const auto resolvedPlain = plain; { ScopedResolverLookupOverride lookupOverride(FailResolverLookup); - Require(sceNetResolverStartNtoaMultipleRecords(resolver, "guest-sce-net.invalid", plain.data(), 5000000, 1, 0) == + Require(sceNetResolverStartNtoaMultipleRecords(resolver, "guest-sce-net.invalid", reinterpret_cast(plain.data()), 5000000, 1, 0) == static_cast(0x804101E1)); } Require(plain == resolvedPlain); Require(sceNetResolverGetError(resolver, &resolver_error) == 0 && resolver_error == static_cast(0x804101E1)); for (const int flags : {0x1, 0x10000}) { bool threw = false; - try { sceNetResolverStartNtoaMultipleRecords(resolver, "localhost", plain.data(), 5000000, 1, flags); } + try { sceNetResolverStartNtoaMultipleRecords(resolver, "localhost", reinterpret_cast(plain.data()), 5000000, 1, flags); } catch (const std::runtime_error&) { threw = true; } Require(threw && plain == resolved); } @@ -2212,11 +2117,11 @@ int main() { Require(sceNetResolverStartNtoa(resolver, "localhost", ipv4.data(), 5000000, 1, 0) == 0 && ipv4[0] == 127); Require(sceNetResolverGetError(resolver, &resolver_error) == 0 && resolver_error == 0); Require(sceNetResolverAbort(resolver, 1) == 0); - Require(sceNetResolverStartNtoaMultipleRecords(resolver, "localhost", plain.data(), 5000000, 1, 0) == + Require(sceNetResolverStartNtoaMultipleRecords(resolver, "localhost", reinterpret_cast(plain.data()), 5000000, 1, 0) == static_cast(0x80410104) && *sceNetErrnoLoc() == 4); - Require(sceNetResolverStartNtoaMultipleRecords(resolver, "localhost", plain.data(), 5000000, 1, 0) == 0 && plain == resolved); + Require(sceNetResolverStartNtoaMultipleRecords(resolver, "localhost", reinterpret_cast(plain.data()), 5000000, 1, 0) == 0 && plain == resolved); Require(sceNetResolverAbort(resolver, 2) == 0); - Require(sceNetResolverStartNtoaMultipleRecordsEx(resolver, "localhost", records.data(), 5000000, 1, 0) == 0 && records == resolved); + Require(sceNetResolverStartNtoaMultipleRecordsEx(resolver, "localhost", reinterpret_cast(records.data()), 5000000, 1, 0) == 0 && records == resolved); std::memset(reverse, 0x5A, sizeof(reverse)); Require(sceNetResolverStartAton(resolver, loopback.data(), reverse, sizeof(reverse), 5000000, 1, 0) == static_cast(0x80410104) && *sceNetErrnoLoc() == 4 && reverse[0] == 0x5A); @@ -2225,7 +2130,7 @@ int main() { Require(sceNetResolverAbort(resolver, 3) == 0); Require(sceNetResolverStartAton(resolver, loopback.data(), reverse, sizeof(reverse), 5000000, 1, 0) == static_cast(0x80410104) && *sceNetErrnoLoc() == 4); - Require(sceNetResolverStartNtoaMultipleRecordsEx(resolver, "localhost", records.data(), 5000000, 1, 0) == + Require(sceNetResolverStartNtoaMultipleRecordsEx(resolver, "localhost", reinterpret_cast(records.data()), 5000000, 1, 0) == static_cast(0x80410104) && *sceNetErrnoLoc() == 4 && records == resolved); Require(sceNetResolverStartNtoa(resolver, "localhost", ipv4.data(), 5000000, 1, 0) == 0); for (const int flags : {0x4, -1}) { @@ -2285,7 +2190,7 @@ int main() { const int other = sceNetResolverCreate("guest-sce-net-other", 0, 0); Require(other >= 0 && other != resolver); Require(sceNetResolverAbort(other, 3) == 0); - Require(sceNetResolverStartNtoaMultipleRecords(resolver, "localhost", plain.data(), 5000000, 1, 0) == 0); + Require(sceNetResolverStartNtoaMultipleRecords(resolver, "localhost", reinterpret_cast(plain.data()), 5000000, 1, 0) == 0); Require(sceNetResolverDestroy(other) == 0); Require(sceNetResolverAbort(other, 0) == static_cast(0x80410109) && *sceNetErrnoLoc() == 9); Require(sceNetResolverAbort(-1, 1) == static_cast(0x80410109) && *sceNetErrnoLoc() == 9); @@ -2302,9 +2207,9 @@ int main() { resolver_error = -1; Require(sceNetResolverGetError(resolver, &resolver_error) == static_cast(0x80410109) && *sceNetErrnoLoc() == 9 && resolver_error == -1); - Require(sceNetResolverStartNtoaMultipleRecordsEx(resolver, "localhost", records.data(), 5000000, 1, 0) == + Require(sceNetResolverStartNtoaMultipleRecordsEx(resolver, "localhost", reinterpret_cast(records.data()), 5000000, 1, 0) == static_cast(0x80410109) && *sceNetErrnoLoc() == 9 && records == resolved); - Require(sceNetResolverStartNtoaMultipleRecords(resolver, "localhost", plain.data(), 5000000, 1, 0) == + Require(sceNetResolverStartNtoaMultipleRecords(resolver, "localhost", reinterpret_cast(plain.data()), 5000000, 1, 0) == static_cast(0x80410109) && *sceNetErrnoLoc() == 9 && plain == resolved); Require(sceNetResolverAbort(resolver, 1) == static_cast(0x80410109) && *sceNetErrnoLoc() == 9); @@ -2341,7 +2246,7 @@ int main() { { std::array dns{}; dns.fill(0xA5A5A5A5u); - const int count = sceNetGetDnsInfo(dns.data(), 0); + const int count = sceNetGetDnsInfo(reinterpret_cast(dns.data()), 0); Require(count >= 0 && count <= 2 && dns[2] == 0xA5A5A5A5u); Require(count == 0 || state == 3); for (int index = count; index < 2; ++index) Require(dns[index] == 0); @@ -2359,7 +2264,7 @@ int main() { } for (const int flags : {0x1, -1}) { bool threw = false; - try { sceNetGetDnsInfo(dns.data(), flags); } catch (const std::runtime_error&) { threw = true; } + try { sceNetGetDnsInfo(reinterpret_cast(dns.data()), flags); } catch (const std::runtime_error&) { threw = true; } Require(threw); } bool threw = false; diff --git a/core/libs/tests/GuestShaderLink.cpp b/core/libs/tests/GuestShaderLink.cpp index f5b510652b..5c39b6fffe 100644 --- a/core/libs/tests/GuestShaderLink.cpp +++ b/core/libs/tests/GuestShaderLink.cpp @@ -1,3 +1,5 @@ +#include "prx/libSceAgc/Shader/include/LinkShaders.hpp" +#include "prx/libSceAgc/Misc/include/RegisterDefaults.hpp" #include "SceShaders.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "prx/libSceAgc/Shader/include/ShaderConstants.hpp" @@ -6,9 +8,7 @@ #include #include #include -extern "C" int APS5_VABI sceAgcLinkShaders(ShaderRegister*, ShaderRegister*, const void*, const Shader*, const Shader*, std::uint32_t); -extern "C" void* APS5_VABI sceAgcGetRegisterDefaults(); -extern "C" void* APS5_VABI sceAgcGetRegisterDefaults2(std::uint32_t); + static void Require(bool value) { if (!value) std::abort(); } static unsigned preparations = 0; static unsigned mappings = 0; diff --git a/core/libs/tests/GuestSocketHostWrite.cpp b/core/libs/tests/GuestSocketHostWrite.cpp index df022d1f8a..ba90d26e5a 100644 --- a/core/libs/tests/GuestSocketHostWrite.cpp +++ b/core/libs/tests/GuestSocketHostWrite.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceNet/include/Net.hpp" #define WIN32_LEAN_AND_MEAN #include #include "prx/libc/include/GuestArena.hpp" @@ -12,20 +13,6 @@ #include #include -struct NetIovec { - void* base; - std::uint64_t length; -}; - -struct NetMsghdr { - void* name; - std::uint32_t nameLength; - NetIovec* iov; - int iovLength; - void* control; - std::uint32_t controlLength; - int flags; -}; static_assert(sizeof(NetMsghdr) == 48 && offsetof(NetMsghdr, iov) == 16 && offsetof(NetMsghdr, flags) == 44); extern "C" { @@ -43,19 +30,7 @@ std::int64_t APS5_VABI read_nid_postfix(int, void*, std::uint64_t); std::int64_t APS5_VABI sceKernelRead(int, void*, std::size_t); int APS5_VABI close_nid_postfix(int); int* APS5_VABI __error_nid_postfix(); -int APS5_VABI sceNetSocket(const char*, int, int, int); -int APS5_VABI sceNetBind_nid_postfix(int, const void*, std::uint32_t); -int APS5_VABI sceNetGetsockname(int, void*, std::uint32_t*); -int APS5_VABI sceNetListen(int, int); -int APS5_VABI sceNetConnect(int, const void*, std::uint32_t); -int APS5_VABI sceNetAccept(int, void*, std::uint32_t*); -int APS5_VABI sceNetSetsockopt(int, int, int, const void*, std::uint32_t); -std::int64_t APS5_VABI sceNetSendto(int, const void*, std::size_t, int, const void*, std::uint32_t); -std::int64_t APS5_VABI sceNetRecv(int, void*, std::size_t, int); -std::int64_t APS5_VABI sceNetRecvfrom(int, void*, std::size_t, int, void*, std::uint32_t*); -std::int64_t APS5_VABI sceNetRecvmsg(int, NetMsghdr*, int); -int APS5_VABI sceNetSocketClose(int); -int* APS5_VABI sceNetErrnoLoc(); + int APS5_VABI sceKernelAllocateDirectMemory(std::int64_t, std::int64_t, std::size_t, std::size_t, int, std::int64_t*); int APS5_VABI sceKernelMapDirectMemory(void**, std::size_t, int, int, std::int64_t, std::size_t); int APS5_VABI sceKernelMprotect(void*, std::size_t, int); @@ -355,7 +330,7 @@ int main(int argc, char** argv) { waitForPacket(); Require(sceNetRecvmsg(receiver, message, 0) == static_cast(0x8041010eu) && *error == 14, "read-only message outputs fail with EFAULT"); - Require(message->flags == -1 && message->controlLength == 123, "rejected message outputs unchanged"); + Require(message->flags == -1 && message->control_length == 123, "rejected message outputs unchanged"); Require(receive(recovery.data(), recovery.size(), 0, nullptr, nullptr) == sizeof(payload), "a rejected message preserves queued data"); Require(sceKernelMprotect(twin, page, 3) == 0, "restore receive message write permission"); diff --git a/core/libs/tests/GuestSsl.cpp b/core/libs/tests/GuestSsl.cpp index 4aa00482b6..f4d57bc7a2 100644 --- a/core/libs/tests/GuestSsl.cpp +++ b/core/libs/tests/GuestSsl.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSsl/include/Ssl.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "ProcessParametersFixture.hpp" #include @@ -8,37 +9,6 @@ #include #include -extern "C" { -int APS5_VABI sceSslInit_nid_postfix(std::size_t); -int APS5_VABI sceSslTerm_nid_postfix(int); -int APS5_VABI sceSslGetCaCerts(int, void*); -int APS5_VABI sceSslFreeCaCerts(int, void*); -int APS5_VABI sceSslGetCaList(int, void*); -int APS5_VABI sceSslFreeCaList(int, void*); -int APS5_VABI sceSslUnloadCert(int); -int APS5_VABI sceSslCreateConnection(int, int, const char*); -int APS5_VABI sceSslDeleteConnection(int); -int APS5_VABI sceSslSetVerifyCallback(int, int (APS5_VABI *)(int, unsigned int, void**, int, void*), void*); -int APS5_VABI sceSslConnect(int); -int APS5_VABI sceSslRead(int, void*, std::size_t, int); -int APS5_VABI sceSslWrite(int, void*, std::size_t, int); -int APS5_VABI sceSslClose(int); -int APS5_VABI sceSslEnableVerifyOption(int, std::uint32_t); -int APS5_VABI sceSslDisableVerifyOption(int, std::uint32_t); -int APS5_VABI sceSslSetMinSslVersion(int, int); -int APS5_VABI sceSslSetAlpn(int, const char*); -const char* APS5_VABI sceSslGetAlpnSelected(int); -} - -struct SslMemoryPoolStats { - std::size_t pool_size; - std::size_t max_inuse_size; - std::size_t current_inuse_size; - std::int32_t reserved; -}; - -extern "C" int APS5_VABI sceSslGetMemoryPoolStats(int, SslMemoryPoolStats*); - static void Require(bool value) { if (!value) std::abort(); } template @@ -53,17 +23,6 @@ static bool Throws(TCall call) { static int APS5_VABI VerifyCallback(int, unsigned int, void**, int, void*) { return 0; } -struct SslCaCerts { - void* certs; - std::size_t num; - void* pool; -}; - -struct SslCaList { - void** certs; - int num; -}; - int main() { static std::array parameters{}; const std::uint64_t processSize = parameters.size(); @@ -77,17 +36,18 @@ int main() { int marker = 0; const int context = sceSslInit_nid_postfix(0x10000); Require(context > 0); - SslMemoryPoolStats stats{1, 1, 1, 1}; + SceSsl::MemoryPoolStats stats{1, 1, 1, 1}; Require(sceSslGetMemoryPoolStats(context, &stats) == 0); - Require(stats.pool_size == 0x10000 && stats.max_inuse_size == 0 && stats.current_inuse_size == 0 && stats.reserved == 0); + Require(stats.poolSize == 0x10000 && stats.maxInuseSize == 0 && stats.currentInuseSize == 0 && stats.reserved == 0); Require(sceSslGetCaCerts(context, nullptr) == invalidValue); Require(sceSslFreeCaCerts(context, nullptr) == invalidArg); - SslCaCerts certs{&marker, 3, &marker}; + SceSsl::Data certificateMarker{}; + SceSsl::CaCerts certs{&certificateMarker, 3, &marker}; Require(sceSslGetCaCerts(context, &certs) == notFound); Require(certs.certs == nullptr && certs.num == 0 && certs.pool == nullptr); - certs = {&marker, 3, &marker}; + certs = {&certificateMarker, 3, &marker}; Require(sceSslFreeCaCerts(context, &certs) == 0); Require(certs.certs == nullptr && certs.num == 0 && certs.pool == nullptr); @@ -95,13 +55,13 @@ int main() { Require(sceSslFreeCaList(context, nullptr) == invalidArg); void* handle = ▮ - SslCaList list{&handle, 3}; + SceSsl::CaList list{&handle, 3}; Require(sceSslGetCaList(context, &list) == notFound); Require(list.certs == nullptr && list.num == 0); Require(sceSslFreeCaList(context, &list) == 0); Require(list.certs == nullptr && list.num == 0); - SslCaList foreign{&handle, 1}; + SceSsl::CaList foreign{&handle, 1}; Require(Throws([&] { sceSslFreeCaList(context, &foreign); })); foreign = {nullptr, 1}; Require(Throws([&] { sceSslFreeCaList(context, &foreign); })); @@ -187,9 +147,9 @@ int main() { Require(sceSslGetCaList(context, &list) == invalidId); Require(list.certs == &handle && list.num == 3); Require(sceSslGetCaCerts(context, nullptr) == invalidId); - certs = {&marker, 3, &marker}; + certs = {&certificateMarker, 3, &marker}; Require(sceSslGetCaCerts(context, &certs) == invalidId); - Require(certs.certs == &marker && certs.num == 3 && certs.pool == &marker); + Require(certs.certs == &certificateMarker && certs.num == 3 && certs.pool == &marker); Require(Throws([&] { sceSslFreeCaList(context, &list); })); for (const std::uint32_t sdkVersion : {0u, 0x074fffffu, 0x07500000u, 0x09000000u}) { std::memcpy(parameters.data() + 16, &sdkVersion, sizeof(sdkVersion)); diff --git a/core/libs/tests/GuestSslLoad.cpp b/core/libs/tests/GuestSslLoad.cpp index b59ad7c6c5..92507f0183 100644 --- a/core/libs/tests/GuestSslLoad.cpp +++ b/core/libs/tests/GuestSslLoad.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSsl/include/Ssl.hpp" #include "prx/libSceSsl/SslTypes.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "SslCertificateFixture.hpp" @@ -10,32 +11,6 @@ #include #include -extern "C" { -int APS5_VABI sceSslInit_nid_postfix(std::uint64_t); -int APS5_VABI sceSslTerm_nid_postfix(int); -int APS5_VABI sceSslGetMemoryPoolStats(int, SceSsl::MemoryPoolStats*); -int APS5_VABI sceSslLoadCert(int, int, SceSsl::Data**, SceSsl::Data*, SceSsl::Data*); -int APS5_VABI sceSslUnloadCert(int); -int APS5_VABI sceSslGetCaList(int, SceSsl::CaList*); -int APS5_VABI sceSslFreeCaList(int, SceSsl::CaList*); -int APS5_VABI sceSslGetCaCerts(int, SceSsl::CaCerts*); -int APS5_VABI sceSslFreeCaCerts(int, SceSsl::CaCerts*); -int APS5_VABI sceSslCreateConnection(int, int, const char*); -int APS5_VABI sceSslDeleteConnection(int); -int APS5_VABI sceSslSetVerifyCallback(int, int (APS5_VABI *)(int, unsigned int, void**, int, void*), void*); -int APS5_VABI sceSslGetSerialNumber(int, void*, unsigned char*, std::size_t*); -void* APS5_VABI sceSslGetSubjectName(int, void*); -void* APS5_VABI sceSslGetIssuerName(int, void*); -int APS5_VABI sceSslGetNameEntryCount(int, void*); -int APS5_VABI sceSslGetNameEntryInfo(int, void*, int, char*, std::size_t, char*, std::size_t, std::size_t*); -int APS5_VABI sceSslFreeSslCertName(int, void*); -int APS5_VABI sceSslClose(int); -int APS5_VABI sceSslGetNotBefore(int, void*, SceSsl::RtcTick*); -int APS5_VABI sceSslGetNotAfter(int, void*, SceSsl::RtcTick*); -int APS5_VABI sceSslGetFingerprint(int, void*, int, unsigned char*); -int APS5_VABI sceSslGetPem(int, void*, char*, std::size_t*); -} - namespace { constexpr int NotFound = static_cast(0x8095F004); diff --git a/core/libs/tests/GuestSslPs5Readers.cpp b/core/libs/tests/GuestSslPs5Readers.cpp index 3075a601e9..60aeebcbde 100644 --- a/core/libs/tests/GuestSslPs5Readers.cpp +++ b/core/libs/tests/GuestSslPs5Readers.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSsl/include/Ssl.hpp" #include "prx/libSceSsl/SslTypes.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "SslCertificateFixture.hpp" @@ -11,22 +12,6 @@ #include #include -extern "C" { -int APS5_VABI sceSslInit_nid_postfix(std::uint64_t); -int APS5_VABI sceSslTerm_nid_postfix(int); -int APS5_VABI sceSslLoadCert(int, int, SceSsl::Data**, SceSsl::Data*, SceSsl::Data*); -int APS5_VABI sceSslUnloadCert(int); -int APS5_VABI sceSslGetCaList(int, SceSsl::CaList*); -int APS5_VABI sceSslFreeCaList(int, SceSsl::CaList*); -int APS5_VABI sceSslGetSerialNumber(int, void*, unsigned char*, std::size_t*); -void* APS5_VABI sceSslGetSubjectName(int, void*); -void* APS5_VABI sceSslGetIssuerName(int, void*); -int APS5_VABI sceSslGetNameEntryCount(int, void*); -int APS5_VABI sceSslGetNameEntryInfo(int, void*, int, char*, std::size_t, char*, std::size_t, std::size_t*); -int APS5_VABI sceSslFreeSslCertName(int, void*); -int APS5_VABI sceSslGetPem(int, void*, char*, std::size_t*); -} - namespace { void Check(bool value, const char* message) { diff --git a/core/libs/tests/GuestSslTransport.cpp b/core/libs/tests/GuestSslTransport.cpp index 4d956c68be..1533e20e5b 100644 --- a/core/libs/tests/GuestSslTransport.cpp +++ b/core/libs/tests/GuestSslTransport.cpp @@ -1,3 +1,5 @@ +#include "prx/libSceSsl/include/Ssl.hpp" +#include "prx/libSceNet/include/Net.hpp" #ifdef _WIN32 #include #else @@ -29,37 +31,12 @@ #include extern "C" { -int APS5_VABI sceSslInit_nid_postfix(std::uint64_t); -int APS5_VABI sceSslTerm_nid_postfix(int); -int APS5_VABI sceSslGetMemoryPoolStats(int, SceSsl::MemoryPoolStats*); -int APS5_VABI sceSslLoadCert(int, int, SceSsl::Data**, SceSsl::Data*, SceSsl::Data*); -int APS5_VABI sceSslCreateConnection(int, int, const char*); -int APS5_VABI sceSslDeleteConnection(int); -int APS5_VABI sceSslSetVerifyCallback(int, int (APS5_VABI *)(int, unsigned int, void**, int, void*), void*); -int APS5_VABI sceSslConnect(int); -int APS5_VABI sceSslRead(int, void*, std::size_t, int); -int APS5_VABI sceSslWrite(int, void*, std::size_t, int); -int APS5_VABI sceSslRecv(int, void*, std::size_t); -int APS5_VABI sceSslSend(int, void*, std::size_t); -int APS5_VABI sceSslClose(int); -int APS5_VABI sceSslEnableVerifyOption(int, std::uint32_t); -int APS5_VABI sceSslDisableVerifyOption(int, std::uint32_t); -int APS5_VABI sceSslSetMinSslVersion(int, int); -int APS5_VABI sceSslSetAlpn(int, const char*); -const char* APS5_VABI sceSslGetAlpnSelected(int); -void* APS5_VABI sceSslGetSubjectName(int, void*); -int APS5_VABI sceSslGetNameEntryCount(int, void*); -int APS5_VABI sceSslGetNameEntryInfo(int, void*, int, char*, std::size_t, char*, std::size_t, std::size_t*); -int APS5_VABI sceSslFreeSslCertName(int, void*); + int APS5_VABI socket_nid_postfix(int, int, int); int APS5_VABI connect_nid_postfix(int, const void*, std::uint32_t); int APS5_VABI setsockopt_nid_postfix(int, int, int, const void*, std::uint32_t); int APS5_VABI close_nid_postfix(int); -int APS5_VABI sceNetInit_nid_postfix(); -int APS5_VABI sceNetSocket(const char*, int, int, int); -int APS5_VABI sceNetConnect(int, const void*, std::uint32_t); -int APS5_VABI sceNetSetsockopt(int, int, int, const void*, std::uint32_t); -int APS5_VABI sceNetSocketClose(int); + } namespace { diff --git a/core/libs/tests/GuestSystemExit.cpp b/core/libs/tests/GuestSystemExit.cpp index 612272c35b..bde5c3e87b 100644 --- a/core/libs/tests/GuestSystemExit.cpp +++ b/core/libs/tests/GuestSystemExit.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSystemService/include/SystemService.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "prx/libc/include/Shutdown.hpp" #include "prx/libSceSystemService/SystemService.hpp" @@ -22,7 +23,7 @@ #include #include #endif -extern "C" int APS5_VABI sceSystemServiceLoadExec(const char*, const char* const*); + extern "C" int APS5_VABI __cxa_atexit_nid_postfix(void (APS5_VABI *func)(void*), void* arg, void* dsoHandle); extern "C" void APS5_VABI _Exit_nid_postfix(int); extern "C" void APS5_VABI exit_nid_postfix(int); diff --git a/core/libs/tests/GuestSystemKillApp.cpp b/core/libs/tests/GuestSystemKillApp.cpp index 3ebfe28013..b42f9d8de6 100644 --- a/core/libs/tests/GuestSystemKillApp.cpp +++ b/core/libs/tests/GuestSystemKillApp.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSystemService/include/SystemService.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "prx/libc/include/Shutdown.hpp" #include @@ -5,10 +6,7 @@ #include #include #include -extern "C" int APS5_VABI sceSystemServiceGetAppIdOfRunningBigApp(void); -extern "C" int APS5_VABI sceSystemServiceKillApp(int, int, int, int); -extern "C" int APS5_VABI sceLncUtilKillApp(unsigned); -extern "C" int APS5_VABI sceLncUtilKillAppWithReason(unsigned, int); + namespace { bool cleaned = false; bool finished = false; diff --git a/core/libs/tests/GuestSystemService.cpp b/core/libs/tests/GuestSystemService.cpp index 9ad6c43d4c..8a197d97b5 100644 --- a/core/libs/tests/GuestSystemService.cpp +++ b/core/libs/tests/GuestSystemService.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSystemService/include/SystemService.hpp" #include "SceTypes.hpp" #include "prx/libSceSystemService/SystemService.hpp" #include @@ -7,12 +8,6 @@ #include #include -extern "C" int APS5_VABI sceSystemServiceGetHdrToneMapLuminance(SystemServiceHdrToneMapLuminance* luminance); -extern "C" int APS5_VABI sceSystemServiceParamGetString(int paramId, char* buf, std::size_t bufSize); -extern "C" int APS5_VABI sceSystemServiceLaunchApp(const char* titleId, const char* const* arguments, const void* param); -extern "C" int APS5_VABI sceSystemServiceAddLocalProcessForPsmKit(const char* path, const char* const* arguments, const void* param); -extern "C" int APS5_VABI sceSystemServiceKillLocalProcessForPsmKit(int handle); - namespace { constexpr int browserUnavailable = static_cast(0x8002002Du); @@ -40,27 +35,6 @@ bool LaunchAppThrows(const char* titleId, const char* const* arguments, const vo } -extern "C" int APS5_VABI sceSystemServicePowerTick(void); -extern "C" int APS5_VABI sceSystemServiceIsBgmPlaying(void); -extern "C" int APS5_VABI sceShellCoreUtilIsBgmPlaying(void); -extern "C" int APS5_VABI sceSystemServiceReportAbnormalTermination(const void* info); -extern "C" int APS5_VABI sceSystemServiceDisableMusicPlayer(void); -extern "C" int APS5_VABI sceSystemServiceReenableMusicPlayer(void); -extern "C" int APS5_VABI sceSystemServiceDisableMediaPlay(void); -extern "C" int APS5_VABI sceSystemServiceReenableMediaPlay(void); -extern "C" int APS5_VABI sceSystemServiceLaunchWebBrowser(const char* uri); -extern "C" int APS5_VABI sceSystemServiceShowControllerSettings(void); -extern "C" int APS5_VABI sceSystemServiceShowDisplaySafeAreaSettings(void); -extern "C" int APS5_VABI sceSystemServiceOpenChallengeActivity(void); -extern "C" int APS5_VABI sceSystemServiceGetStatus(SystemServiceStatus* status); -extern "C" int APS5_VABI sceSystemServiceGetDisplaySafeAreaInfo(SystemServiceDisplaySafeAreaInfo* info); -extern "C" int APS5_VABI sceSystemServiceGetNoticeScreenSkipFlag(bool* value); -extern "C" int APS5_VABI sceSystemServiceSetNoticeScreenSkipFlag(void); -extern "C" int APS5_VABI sceSystemServiceDisableNoticeScreenSkipFlagAutoSet(void); -extern "C" int APS5_VABI sceSystemServiceHideSplashScreen(void); -extern "C" int APS5_VABI sceSystemServiceReceiveEvent(SystemServiceEvent* event); -extern "C" void APS5_VABI sceSystemServiceInitializePlayerDialogParam(SystemServicePlayerDialogParam* param); - namespace { void TestPlayerDialogParam() { diff --git a/core/libs/tests/GuestSystemServiceLanguage.cpp b/core/libs/tests/GuestSystemServiceLanguage.cpp index 2be7c170c6..8e1aefdf3a 100644 --- a/core/libs/tests/GuestSystemServiceLanguage.cpp +++ b/core/libs/tests/GuestSystemServiceLanguage.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSystemService/include/SystemService.hpp" #include "SceTypes.hpp" #include "prx/libSceSystemService/SystemService.hpp" #include @@ -6,8 +7,6 @@ #include #include -extern "C" int APS5_VABI sceSystemServiceParamGetInt(int paramId, int* value); - namespace { void Require(bool value) { if (!value) std::abort(); } diff --git a/core/libs/tests/GuestSystemServiceLoadExecStandardError.cpp b/core/libs/tests/GuestSystemServiceLoadExecStandardError.cpp index ec83ac1c10..0734dd9439 100644 --- a/core/libs/tests/GuestSystemServiceLoadExecStandardError.cpp +++ b/core/libs/tests/GuestSystemServiceLoadExecStandardError.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSystemService/include/SystemService.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include #include @@ -7,7 +8,7 @@ #include extern "C" { -int APS5_VABI sceSystemServiceLoadExec(const char*, const char* const*); + int APS5_VABI dup2_nid_postfix(int, int); } diff --git a/core/libs/tests/GuestSystemServicePathBoundary.cpp b/core/libs/tests/GuestSystemServicePathBoundary.cpp index da8e6927f0..8d80cb489a 100644 --- a/core/libs/tests/GuestSystemServicePathBoundary.cpp +++ b/core/libs/tests/GuestSystemServicePathBoundary.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceSystemService/include/SystemService.hpp" #include "prx/libc/include/Shutdown.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include @@ -8,8 +9,6 @@ #include #include -extern "C" int APS5_VABI sceSystemServiceLoadExec(const char*, const char* const*); - namespace { void Require(bool value) { diff --git a/core/libs/tests/GuestSystemServiceTimeZone.cpp b/core/libs/tests/GuestSystemServiceTimeZone.cpp index 7f61bcf1fe..cb0e4c65c8 100644 --- a/core/libs/tests/GuestSystemServiceTimeZone.cpp +++ b/core/libs/tests/GuestSystemServiceTimeZone.cpp @@ -1,10 +1,9 @@ +#include "prx/libSceSystemService/include/SystemService.hpp" #include "SceTypes.hpp" #include "prx/libSceSystemService/SystemService.hpp" #include #include -extern "C" int APS5_VABI sceSystemServiceParamGetInt(int paramId, int* value); - namespace { void Require(bool value) { if (!value) std::abort(); } diff --git a/core/libs/tests/GuestUsbStorageDialog.cpp b/core/libs/tests/GuestUsbStorageDialog.cpp index e21bcc50eb..23924ed0ea 100644 --- a/core/libs/tests/GuestUsbStorageDialog.cpp +++ b/core/libs/tests/GuestUsbStorageDialog.cpp @@ -9,8 +9,7 @@ #include "prx/libSceUserService/UserService.hpp" extern "C" { -int APS5_VABI sceUserServiceInitialize(const UserServiceInitParam* param); -int APS5_VABI sceUserServiceTerminate(); + int APS5_VABI sceUsbStorageDialogInitialize(void); int APS5_VABI sceUsbStorageDialogOpen(const UsbStorageDialogParam* param); int APS5_VABI sceUsbStorageDialogUpdateStatus(void); diff --git a/core/libs/tests/GuestUserService.cpp b/core/libs/tests/GuestUserService.cpp index 88116c03d8..d42de627a9 100644 --- a/core/libs/tests/GuestUserService.cpp +++ b/core/libs/tests/GuestUserService.cpp @@ -7,31 +7,6 @@ #include #include -extern "C" { -int APS5_VABI sceUserServiceGetInitialUser(int* user_id); -int APS5_VABI sceUserServiceGetGamePresets(int user_id, UserServiceGamePresets* presets); -int APS5_VABI sceUserServiceGetUserNumber(int user_id, int32_t* number); -int APS5_VABI sceUserServiceGetPlatformPrivacyWs1(int32_t user_id, int32_t* value); -int APS5_VABI sceUserServiceGetForegroundUser(int* user_id); -int APS5_VABI sceUserServiceGetRegisteredUserIdList(UserServiceRegisteredUserIdList* user_id_list); -int APS5_VABI sceUserServiceGetUserColor(int user_id, int* color); -int APS5_VABI sceUserServiceGetKeyboardType(int user_id, std::int32_t* type); -int APS5_VABI sceUserServiceGetJapaneseInputType(int user_id, std::int32_t* type); -int APS5_VABI sceUserServiceGetTraditionalChineseInputType(int user_id, std::int32_t* type); -int APS5_VABI sceUserServiceGetNpAccountId(int user_id, std::uint64_t* account_id); -int APS5_VABI sceUserServiceGetAgeLevel(int user_id, std::uint32_t* age_level); -int APS5_VABI sceUserServiceGetAccessibilityChatTranscription(int user_id, std::int32_t* value); -int APS5_VABI sceUserServiceGetAccessibilityKeyremapEnable(); -int APS5_VABI sceUserServiceGetAccessibilityPressAndHoldDelay(int user_id, std::int32_t* value); -int APS5_VABI sceUserServiceGetAccessibilityTriggerEffect(int user_id, std::int32_t* value); -int APS5_VABI sceUserServiceGetAccessibilityVibration(int user_id, std::int32_t* value); -int APS5_VABI sceUserServiceGetAccessibilityZoom(); -int APS5_VABI sceUserServiceGetAccessibilityZoomEnabled(int user_id, std::int32_t* value); -int APS5_VABI sceUserServiceGetAccessibilityZoomFollowFocus(int user_id, std::int32_t* value); -int APS5_VABI sceUserServiceGetUserName(int user_id, char* name, std::size_t size); -int APS5_VABI sceUserServiceGetUserNumber(int user_id, std::int32_t* number); -} - namespace { void Require(bool value) { if (!value) std::abort(); } @@ -167,9 +142,10 @@ int main() { presets.difficulty = 0x5a; Require(sceUserServiceGetGamePresets(0, &presets) == USER_SERVICE_ERROR_INVALID_ARGUMENT && presets.difficulty == 0x5a); Require(sceUserServiceGetGamePresets(USER_SERVICE_INITIAL_USER_ID, &presets) == USER_SERVICE_OK && presets.difficulty == 0); + std::int32_t accessibilityValue = 0; bool threwKeyremap = false; try { - sceUserServiceGetAccessibilityKeyremapEnable(); + sceUserServiceGetAccessibilityKeyremapEnable(USER_SERVICE_INITIAL_USER_ID, &accessibilityValue); } catch (const std::runtime_error&) { threwKeyremap = true; } @@ -177,7 +153,7 @@ int main() { bool threwZoom = false; try { - sceUserServiceGetAccessibilityZoom(); + sceUserServiceGetAccessibilityZoom(USER_SERVICE_INITIAL_USER_ID, &accessibilityValue); } catch (const std::runtime_error&) { threwZoom = true; } diff --git a/core/libs/tests/GuestUserServiceLifecycle.cpp b/core/libs/tests/GuestUserServiceLifecycle.cpp index b1346120f8..99a61cc97b 100644 --- a/core/libs/tests/GuestUserServiceLifecycle.cpp +++ b/core/libs/tests/GuestUserServiceLifecycle.cpp @@ -4,14 +4,6 @@ #include #include -extern "C" { -int APS5_VABI sceUserServiceInitialize(const UserServiceInitParam* params); -int APS5_VABI sceUserServiceInitialize2(std::int32_t priority, KernelCpumask affinityMask); -int APS5_VABI sceUserServiceTerminate(void); -int APS5_VABI sceUserServiceGetLoginUserIdList(UserServiceLoginUserIdList* user_id_list); -int APS5_VABI sceUserServiceGetEvent(SceUserServiceEvent* event); -} - namespace { void Require(bool value) { if (!value) std::abort(); } diff --git a/core/libs/tests/GuestUserServiceUserName.cpp b/core/libs/tests/GuestUserServiceUserName.cpp index f755162970..15ad3469e3 100644 --- a/core/libs/tests/GuestUserServiceUserName.cpp +++ b/core/libs/tests/GuestUserServiceUserName.cpp @@ -5,10 +5,6 @@ #include #include -extern "C" { -int APS5_VABI sceUserServiceGetUserName(int user_id, char* name, std::size_t size); -} - namespace { void Require(bool value) { if (!value) std::abort(); } diff --git a/core/libs/tests/GuestVideoOutColorSpace.cpp b/core/libs/tests/GuestVideoOutColorSpace.cpp index 1c081f65f9..d794feff72 100644 --- a/core/libs/tests/GuestVideoOutColorSpace.cpp +++ b/core/libs/tests/GuestVideoOutColorSpace.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceVideoOut/include/Output.hpp" #include "SceTypes.hpp" #include "prx/libc/include/Shutdown.hpp" #include "tests/VideoOutTestEnvironment.hpp" @@ -8,18 +9,6 @@ #include #include -extern "C" { -int APS5_VABI sceVideoOutOpen(int userId, int busType, int index, const void* param); -int APS5_VABI sceVideoOutClose(int handle); -int APS5_VABI sceVideoOutColorSpaceConversionSettingsSetDefaultSdrToHdrConversion(VideoOutColorSpaceConversionSettings* settings); -int APS5_VABI sceVideoOutColorSpaceConversionSettingsSetSdrToHdrConversion(VideoOutColorSpaceConversionSettings* settings, float lumaScale, uint32_t option); -int APS5_VABI sceVideoOutAdjustColorSpaceConversion(int handle, const VideoOutColorSpaceConversionSettings* settings); -int APS5_VABI sceVideoOutColorSpaceConversionSettingsSetDefaultSdrToHdrConversion_(VideoOutColorSpaceConversionSettings* settings, uint32_t settings_size); -int APS5_VABI sceVideoOutColorSpaceConversionSettingsSetSdrToHdrConversion_(VideoOutColorSpaceConversionSettings* settings, float lumaScale, uint32_t option, uint32_t settings_size); -int APS5_VABI sceVideoOutAdjustColorSpaceConversion_(int handle, const VideoOutColorSpaceConversionSettings* settings, uint32_t settings_size); -int APS5_VABI sceVideoOutSetGlobalBlendSpace(int handle, uint32_t space, uint32_t option); -} - static constexpr int SYSTEM_USER = 255; static constexpr int MAIN_BUS = 0; diff --git a/core/libs/tests/GuestVideoOutCursor.cpp b/core/libs/tests/GuestVideoOutCursor.cpp index 214293bdd2..283d91bccf 100644 --- a/core/libs/tests/GuestVideoOutCursor.cpp +++ b/core/libs/tests/GuestVideoOutCursor.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceVideoOut/include/VideoOut.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include @@ -6,13 +7,6 @@ #include #include -extern "C" { -int APS5_VABI sceVideoOutCursorEnable(std::int32_t handle, std::int32_t index, const void* address); -int APS5_VABI sceVideoOutCursorDisable(std::int32_t handle, std::int32_t index); -int APS5_VABI sceVideoOutCursorSetImageAddress(std::int32_t handle, std::int32_t index, const void* address); -int APS5_VABI sceVideoOutCursorSetPosition(std::int32_t handle, std::int32_t index, std::uint32_t x, std::uint32_t y); -} - static bool ReportsNotImplemented(const std::string& name, const std::function& call) { try { call(); diff --git a/core/libs/tests/GuestVideoOutHdr.cpp b/core/libs/tests/GuestVideoOutHdr.cpp index a6e78ed34d..5f6b7d29c8 100644 --- a/core/libs/tests/GuestVideoOutHdr.cpp +++ b/core/libs/tests/GuestVideoOutHdr.cpp @@ -1,3 +1,6 @@ +#include "prx/libSceVideoOut/include/Output.hpp" +#include "prx/libSceVideoOut/include/Event.hpp" +#include "prx/libSceSystemService/include/SystemService.hpp" #include "SceTypes.hpp" #include "prx/libc/include/Shutdown.hpp" #include "prx/libkernel/Equeue/Equeue.hpp" @@ -15,16 +18,11 @@ #include extern "C" { -int APS5_VABI sceVideoOutOpen(int userId, int busType, int index, const void* param); -int APS5_VABI sceVideoOutClose(int handle); -int APS5_VABI sceVideoOutGetOutputStatus(int handle, VideoOutOutputStatus* status); -int APS5_VABI sceVideoOutGetOutputStatusWithVrr(int handle, void* status); -int APS5_VABI sceVideoOutAddOutputModeEvent(KernelEqueue eq, int handle, void* udata); -int APS5_VABI sceVideoOutGetEventId(const KernelEvent* ev); + int APS5_VABI sceKernelCreateEqueue(KernelEqueue* eq, const char* name); int APS5_VABI sceKernelDeleteEqueue(KernelEqueue eq); int APS5_VABI sceKernelWaitEqueue(KernelEqueue eq, KernelEvent* ev, int num, int* out, const KernelUseconds* timo); -int APS5_VABI sceSystemServiceGetHdrToneMapLuminance(SystemServiceHdrToneMapLuminance* luminance); + } namespace { diff --git a/core/libs/tests/GuestVideoOutHighFrameRate.cpp b/core/libs/tests/GuestVideoOutHighFrameRate.cpp index 3e4f4c4437..541436b236 100644 --- a/core/libs/tests/GuestVideoOutHighFrameRate.cpp +++ b/core/libs/tests/GuestVideoOutHighFrameRate.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceVideoOut/include/Output.hpp" #include "SceTypes.hpp" #include "prx/libc/include/Shutdown.hpp" #include "tests/VideoOutTestEnvironment.hpp" @@ -7,16 +8,6 @@ #include #include -extern "C" { -int APS5_VABI sceVideoOutOpen(int, int, int, const void*); -int APS5_VABI sceVideoOutClose(int); -int APS5_VABI sceVideoOutIsOutputSupported(int, std::uint64_t, const VideoOutOutputOptions*, void*, std::uint64_t); -int APS5_VABI sceVideoOutConfigureOutput(int, std::uint64_t, const VideoOutOutputOptions*, void*, std::uint64_t); -int APS5_VABI sceVideoOutWaitVblank(int); -int APS5_VABI sceVideoOutGetOutputStatus(int, VideoOutOutputStatus*); -int APS5_VABI sceVideoOutGetResolutionStatus(int, VideoOutResolutionStatus*); -} - static constexpr int Unsupported = static_cast(0x80290016u); static void Require(bool value, const char* message) { diff --git a/core/libs/tests/GuestVideoOutOutputMode.cpp b/core/libs/tests/GuestVideoOutOutputMode.cpp index 82ce4bc2fa..7c86474ea9 100644 --- a/core/libs/tests/GuestVideoOutOutputMode.cpp +++ b/core/libs/tests/GuestVideoOutOutputMode.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceVideoOut/include/Output.hpp" #include "SceTypes.hpp" #include "prx/libc/include/Shutdown.hpp" #include "tests/VideoOutTestEnvironment.hpp" @@ -8,14 +9,6 @@ #include #include -extern "C" { -int APS5_VABI sceVideoOutOpen(int userId, int busType, int index, const void* param); -int APS5_VABI sceVideoOutClose(int handle); -int APS5_VABI sceVideoOutInitializeOutputOptions(VideoOutOutputOptions* options); -int APS5_VABI sceVideoOutIsOutputSupported(int handle, std::uint64_t mode, const VideoOutOutputOptions* options, void* reservedPtr, std::uint64_t reserved); -int APS5_VABI sceVideoOutConfigureOutput(int handle, std::uint64_t mode, const VideoOutOutputOptions* options, void* reservedPtr, std::uint64_t reserved); -} - static constexpr int SYSTEM_USER = 255; static constexpr int MAIN_BUS = 0; static constexpr int HMD2_MAIN_BUS = 0x20; diff --git a/core/libs/tests/GuestVideoOutResolutionStatus.cpp b/core/libs/tests/GuestVideoOutResolutionStatus.cpp index e401ad3023..338783ec96 100644 --- a/core/libs/tests/GuestVideoOutResolutionStatus.cpp +++ b/core/libs/tests/GuestVideoOutResolutionStatus.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceVideoOut/include/Output.hpp" #include "SceTypes.hpp" #include "prx/libc/include/Shutdown.hpp" #include "tests/VideoOutTestEnvironment.hpp" @@ -8,14 +9,6 @@ #include #include -extern "C" { -int APS5_VABI sceVideoOutOpen(int userId, int busType, int index, const void* param); -int APS5_VABI sceVideoOutClose(int handle); -int APS5_VABI sceVideoOutGetOutputStatus(int handle, VideoOutOutputStatus* status); -int APS5_VABI sceVideoOutGetOutputStatusWithVrr(int handle, void* status); -int APS5_VABI sceVideoOutGetResolutionStatus(int handle, VideoOutResolutionStatus* status); -} - static constexpr int SYSTEM_USER = 255; static constexpr int MAIN_BUS = 0; static constexpr int NEVER_OPENED_HANDLE = 2; diff --git a/core/libs/tests/GuestVideoOutWqhdDetection.cpp b/core/libs/tests/GuestVideoOutWqhdDetection.cpp index c0e68b0c49..0e543eaade 100644 --- a/core/libs/tests/GuestVideoOutWqhdDetection.cpp +++ b/core/libs/tests/GuestVideoOutWqhdDetection.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceVideoOut/include/Output.hpp" #include "SceTypes.hpp" #include "prx/libc/include/Shutdown.hpp" #include "tests/VideoOutTestEnvironment.hpp" @@ -6,13 +7,6 @@ #include #include -extern "C" { -int APS5_VABI sceVideoOutOpen(int userId, int busType, int index, const void* param); -int APS5_VABI sceVideoOutClose(int handle); -int APS5_VABI sceVideoOutGetOutputStatus(int handle, VideoOutOutputStatus* status); -int APS5_VABI sceVideoOutAllowOutputResolutionWqhdDetection(int handle); -} - static constexpr int SYSTEM_USER = 255; static constexpr int MAIN_BUS = 0; static constexpr int NEVER_OPENED_HANDLE = 2; diff --git a/core/libs/tests/NetDontWait.cpp b/core/libs/tests/NetDontWait.cpp index 7507f2fde5..54ca9c59c7 100644 --- a/core/libs/tests/NetDontWait.cpp +++ b/core/libs/tests/NetDontWait.cpp @@ -1,3 +1,4 @@ +#include "prx/libSceNet/include/Net.hpp" #include "SceTypes.hpp" #include #include @@ -12,39 +13,8 @@ #include #include -struct NetIovec { - void* base; - std::uint64_t length; -}; - -struct NetMsghdr { - void* name; - std::uint32_t nameLength; - NetIovec* iov; - int iovLength; - void* control; - std::uint32_t controlLength; - int flags; -}; - extern "C" { -int APS5_VABI sceNetSocket(const char*, int, int, int); -int APS5_VABI sceNetSocketClose(int); -int APS5_VABI sceNetSocketAbort(int, int); -int APS5_VABI sceNetBind_nid_postfix(int, const void*, std::uint32_t); -int APS5_VABI sceNetGetsockname(int, void*, std::uint32_t*); -int APS5_VABI sceNetListen(int, int); -int APS5_VABI sceNetConnect(int, const void*, std::uint32_t); -int APS5_VABI sceNetAccept(int, void*, std::uint32_t*); -int APS5_VABI sceNetSetsockopt(int, int, int, const void*, std::uint32_t); -int APS5_VABI sceNetGetsockopt(int, int, int, void*, std::uint32_t*); -std::int64_t APS5_VABI sceNetSend(int, const void*, std::size_t, int); -std::int64_t APS5_VABI sceNetSendto(int, const void*, std::size_t, int, const void*, std::uint32_t); -std::int64_t APS5_VABI sceNetSendmsg(int, const NetMsghdr*, int); -std::int64_t APS5_VABI sceNetRecv(int, void*, std::size_t, int); -std::int64_t APS5_VABI sceNetRecvfrom(int, void*, std::size_t, int, void*, std::uint32_t*); -std::int64_t APS5_VABI sceNetRecvmsg(int, NetMsghdr*, int); -int* APS5_VABI sceNetErrnoLoc(); + int APS5_VABI fcntl_nid_postfix(int, int, ...); } diff --git a/core/libs/tests/test_public_headers.py b/core/libs/tests/test_public_headers.py new file mode 100644 index 0000000000..f098c31d7a --- /dev/null +++ b/core/libs/tests/test_public_headers.py @@ -0,0 +1,134 @@ +import argparse +import concurrent.futures +import importlib.util +import re +import subprocess +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[3] +LIBS = ROOT / "core/libs" +sys.dont_write_bytecode = True +SPEC = importlib.util.spec_from_file_location("nid_names", ROOT / "tools/nid_names.py") +NIDS = importlib.util.module_from_spec(SPEC) +SPEC.loader.exec_module(NIDS) +DECLARATION = re.compile(r"(?:\bAPS5_VABI\s+|^[ \t]*[A-Za-z_][\w:*&<> \t]*?[ \t]+)(\w+)\s*\([^;{}]*\)\s*(?:noexcept\s*)?;", re.M) +INCLUDE = re.compile(r'^\s*#\s*include\s*"([^"]+)"', re.M) +TYPE_TOKEN = re.compile(r"\bnamespace\s*([\w:]*)\s*\{|\bextern\s*\{|\b(?:struct|union|class)\s+(\w+)\s*([;{])|\busing\s+(\w+)\s*=|[{}]") + + +def code(text): + return NIDS.CPP_TOKEN.sub(lambda match: match.group() if match.group("code") else re.sub(r"[^\n]", " ", match.group()), text) + + +def declared_types(text): + scopes = [] + result = set() + for token in TYPE_TOKEN.finditer(text): + namespace, name, ending, alias = token.groups() + if namespace is not None: + scopes.append(namespace or None) + elif name or alias: + if None not in scopes: + result.add("::".join([scope for scope in scopes if scope] + [name or alias])) + if ending == "{": + scopes.append(name) + elif token.group().startswith("extern"): + scopes.append("") + elif token.group() == "{": + scopes.append(None) + elif scopes: + scopes.pop() + return result + + +def reachable(header, visited): + if header in visited: + return + visited.add(header) + for name in INCLUDE.findall(header.read_text(encoding="utf-8")): + candidates = {path.resolve() for path in (header.parent / name, LIBS / name) if path.is_file()} + if len(candidates) != 1: + raise RuntimeError(f"{header}: include {name} resolves to {len(candidates)} files") + reachable(candidates.pop(), visited) + + +def audit(): + umbrellas = sorted((LIBS / "prx").glob("libSce*/libSce*.hpp")) + if not umbrellas: + raise RuntimeError("No library umbrella headers found") + exports = {} + for umbrella in umbrellas: + included = set() + reachable(umbrella.resolve(), included) + for source in NIDS.source_files(umbrella.parent): + text = source.read_text(encoding="utf-8") + aliases = {name for nid, name in NIDS.source_aliases(text)} + definitions = {match.group(1) for match in NIDS.source_definitions(text)} + definitions.update(NIDS.source_assembly_definitions(text)) + for name in definitions | aliases: + if "_nid_no_patch" in name and name not in aliases: + continue + exports.setdefault(name, []).append((source, included)) + declarations = {name: [] for name in exports} + for source in sorted((ROOT / "core").rglob("*")): + if source.suffix not in {".cpp", ".h", ".hpp"}: + continue + text = code(source.read_text(encoding="utf-8")) + for match in DECLARATION.finditer(text): + prefix = match.group()[:match.start(1) - match.start()] + if re.search(r"\b(?:return|co_return|throw|else|case)\b|&&|\|\|", prefix): + continue + if match.group(1) in declarations: + declarations[match.group(1)].append((source.resolve(), text.count("\n", 0, match.start()) + 1)) + errors = [] + headers = set(umbrellas) + for name, definitions in exports.items(): + found = declarations[name] + if len(found) != 1 or found[0][0].suffix not in {".h", ".hpp"}: + locations = ", ".join(f"{path.relative_to(ROOT)}:{line}" for path, line in found) + errors.append(f"{name}: expected exactly one header declaration; found {len(found)}: {locations}") + continue + header = found[0][0] + headers.add(header) + for source, included in definitions: + if header not in included: + errors.append(f"{name}: {header.relative_to(ROOT)} is not included by {source.parent} library umbrella") + if errors: + raise RuntimeError("\n".join(errors)) + public_types = set() + for header in headers: + text = code(header.read_text(encoding="utf-8")) + public_types.update(declared_types(text)) + for source in sorted((ROOT / "core").rglob("*.cpp")): + text = code(source.read_text(encoding="utf-8")) + types = declared_types(text) + for name in sorted(public_types & types): + errors.append(f"{source.relative_to(ROOT)}: duplicate public type {name}; include its header") + if errors: + raise RuntimeError("\n".join(errors)) + return umbrellas, sorted(headers), len(exports) + + +def compile_headers(compiler, umbrellas, headers): + def compile_one(group): + includes = "".join(f'#include "{header.relative_to(LIBS).as_posix()}"\n' for header in group) + result = subprocess.run([compiler, "-std=c++20", "-Werror", "-fsyntax-only", "-x", "c++", f"-I{LIBS}", "-"], input=includes * 2, text=True, capture_output=True) + if result.returncode: + raise RuntimeError(f"Header compilation failed: {group}\n{result.stdout}{result.stderr}") + + with concurrent.futures.ThreadPoolExecutor(max_workers=4) as pool: + list(pool.map(compile_one, [[header] for header in headers] + [umbrellas])) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--compiler", required=True) + args = parser.parse_args() + umbrellas, headers, count = audit() + compile_headers(args.compiler, umbrellas, headers) + print(f"{len(umbrellas)} libraries, {count} exports: unique declarations, umbrella coverage and standalone headers verified") + + +if __name__ == "__main__": + main()