From 911eb34e595dc01966059961333c0db52065e9dd Mon Sep 17 00:00:00 2001 From: microsoftv <6063922+microsoftv@users.noreply.github.com> Date: Thu, 15 Aug 2024 06:55:52 -0400 Subject: [PATCH] init ngs2 --- CMakeLists.txt | 2 + src/common/logging/filter.cpp | 1 + src/common/logging/types.h | 1 + src/core/libraries/libs.cpp | 2 + src/core/libraries/ngs2/ngs2.cpp | 491 +++++++++++++++++++++++++++++++ src/core/libraries/ngs2/ngs2.h | 82 ++++++ 6 files changed, 579 insertions(+) create mode 100644 src/core/libraries/ngs2/ngs2.cpp create mode 100644 src/core/libraries/ngs2/ngs2.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 3685b7f85..4f211f78f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -117,6 +117,8 @@ set(AUDIO_LIB src/core/libraries/audio/audioin.cpp src/core/libraries/audio/audioout.h src/core/libraries/ajm/ajm.cpp src/core/libraries/ajm/ajm.h + src/core/libraries/ngs2/ngs2.cpp + src/core/libraries/ngs2/ngs2.h ) set(GNM_LIB src/core/libraries/gnmdriver/gnmdriver.cpp diff --git a/src/common/logging/filter.cpp b/src/common/logging/filter.cpp index a514652d4..847361c86 100644 --- a/src/common/logging/filter.cpp +++ b/src/common/logging/filter.cpp @@ -111,6 +111,7 @@ bool ParseFilterRule(Filter& instance, Iterator begin, Iterator end) { SUB(Lib, ErrorDialog) \ SUB(Lib, ImeDialog) \ SUB(Lib, AvPlayer) \ + SUB(Lib, Ngs2) \ SUB(Lib, Random) \ CLS(Frontend) \ CLS(Render) \ diff --git a/src/common/logging/types.h b/src/common/logging/types.h index dccb838a5..dd2376ea6 100644 --- a/src/common/logging/types.h +++ b/src/common/logging/types.h @@ -79,6 +79,7 @@ enum class Class : u8 { Lib_ErrorDialog, ///< The LibSceErrorDialog implementation. Lib_ImeDialog, ///< The LibSceImeDialog implementation. Lib_AvPlayer, ///< The LibSceAvPlayer implementation. + Lib_Ngs2, ///< The LibSceNgs2 implementation. Frontend, ///< Emulator UI Render, ///< Video Core Render_Vulkan, ///< Vulkan backend diff --git a/src/core/libraries/libs.cpp b/src/core/libraries/libs.cpp index 20efd3c0e..8f9a118f2 100644 --- a/src/core/libraries/libs.cpp +++ b/src/core/libraries/libs.cpp @@ -38,6 +38,7 @@ #include "src/core/libraries/dialogs/error_dialog.h" #include "src/core/libraries/dialogs/ime_dialog.h" #include "src/core/libraries/libpng/pngdec.h" +#include "src/core/libraries/ngs2/ngs2.h" namespace Libraries { @@ -79,6 +80,7 @@ void InitHLELibs(Core::Loader::SymbolsResolver* sym) { Libraries::ErrorDialog::RegisterlibSceErrorDialog(sym); Libraries::ImeDialog::RegisterlibSceImeDialog(sym); Libraries::AvPlayer::RegisterlibSceAvPlayer(sym); + Libraries::Ngs2::RegisterlibSceNgs2(sym); } } // namespace Libraries diff --git a/src/core/libraries/ngs2/ngs2.cpp b/src/core/libraries/ngs2/ngs2.cpp new file mode 100644 index 000000000..9867ba60d --- /dev/null +++ b/src/core/libraries/ngs2/ngs2.cpp @@ -0,0 +1,491 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +// Generated By moduleGenerator +#include "common/logging/log.h" +#include "core/libraries/ngs2/ngs2.h" +#include "core/libraries/error_codes.h" +#include "core/libraries/libs.h" + +namespace Libraries::Ngs2 { + +struct StackBuffer { + void** top; + void* base; + void* curr; + size_t usedSize; + size_t totalSize; + size_t alignment; + char isVerifyEnabled; + char padding[7]; +}; + +int StackBufferOpen(StackBuffer* buf, void* base_addr, size_t size, void** stackTop, bool verify) { + buf->top = stackTop; + buf->base = base_addr; + buf->curr = base_addr; + buf->usedSize = 0; + buf->totalSize = size; + buf->alignment = 8; + buf->isVerifyEnabled = verify; + + if (stackTop) { + *stackTop = nullptr; + } + + return ORBIS_OK; +} + +int StackBufferClose(StackBuffer* buf, size_t* usedSize) { + if (usedSize) { + *usedSize = buf->usedSize + buf->alignment; + } + + return ORBIS_OK; +} + +struct SystemOptions { + char padding[6]; + s32 maxGrainSamples; + s32 numGrainSamples; + s32 sampleRate; +}; + +struct SystemState { + // TODO +}; + +int64_t sceNgs2SystemSetupCore(void* stackBuffer, SystemOptions* options, SystemState** outSystem) { + int32_t maxGrainSamples = 512; + int32_t numGrainSamples = 256; + int32_t sampleRate = 48000; + + if (options) { + maxGrainSamples = options->maxGrainSamples; + numGrainSamples = options->numGrainSamples; + sampleRate = options->sampleRate; + } + + // Validate maxGrainSamples + if (maxGrainSamples < 64 || maxGrainSamples > 1024 || (maxGrainSamples & 0x3F) != 0) { + // return sceNgs2ReportError(0, 2152333392, "Invalid system option (maxGrainSamples=%d:%d~%d,x64)", maxGrainSamples); + } + + // Validate numGrainSamples + if (numGrainSamples < 64 || numGrainSamples > 1024 || (numGrainSamples & 0x3F) != 0) { + // return sceNgs2ReportError(0, 2152333393, "Invalid system option (numGrainSamples=%d:%d~%d,x64)", numGrainSamples); + } + + // Validate sampleRate + if (sampleRate != 11025 && sampleRate != 12000 && sampleRate != 22050 && sampleRate != 24000 && + sampleRate != 44100 && sampleRate != 48000 && sampleRate != 88200 && sampleRate != 96000) { + // return sceNgs2ReportError(0, 2152333825, "Invalid system option (sampleRate=%d:44.1/48kHz series)", sampleRate); + } + + int result = ORBIS_OK; + + // TODO + + return result; // Success +} + +int PS4_SYSV_ABI sceNgs2CalcWaveformBlock() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2CustomRackGetModuleInfo() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2FftInit() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2FftProcess() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2FftQuerySize() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2GeomApply() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2GeomCalcListener() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2GeomResetListenerParam() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2GeomResetSourceParam() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2GetWaveformFrameInfo() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2JobSchedulerResetOption() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2ModuleArrayEnumItems() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2ModuleEnumConfigs() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2ModuleQueueEnumItems() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2PanGetVolumeMatrix() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2PanInit() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2ParseWaveformData() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2ParseWaveformFile() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2ParseWaveformUser() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2RackCreate() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2RackCreateWithAllocator() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2RackDestroy() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2RackGetInfo() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2RackGetUserData() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2RackGetVoiceHandle() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2RackLock() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2RackQueryBufferSize() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2RackQueryInfo() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2RackRunCommands() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2RackSetUserData() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2RackUnlock() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2ReportRegisterHandler() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2ReportUnregisterHandler() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemCreate() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemCreateWithAllocator() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemDestroy() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemEnumHandles() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemEnumRackHandles() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemGetInfo() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemGetUserData() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemLock() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemQueryBufferSize() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemQueryInfo() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemRender() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemResetOption() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemRunCommands() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemSetGrainSamples() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemSetLoudThreshold() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemSetSampleRate() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemSetUserData() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2SystemUnlock() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2StreamCreate() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2StreamCreateWithAllocator() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2StreamDestroy() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2StreamQueryBufferSize() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2StreamQueryInfo() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2StreamResetOption() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2StreamRunCommands() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2VoiceControl() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2VoiceGetMatrixInfo() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2VoiceGetOwner() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2VoiceGetPortInfo() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2VoiceGetState() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2VoiceGetStateFlags() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2VoiceQueryInfo() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +int PS4_SYSV_ABI sceNgs2VoiceRunCommands() { + LOG_ERROR(Lib_Ngs2, "(STUBBED) called"); + return ORBIS_OK; +} + +void RegisterlibSceNgs2(Core::Loader::SymbolsResolver* sym) { + LIB_FUNCTION("3pCNbVM11UA", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2CalcWaveformBlock); + LIB_FUNCTION("6qN1zaEZuN0", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2CustomRackGetModuleInfo); + LIB_FUNCTION("Kg1MA5j7KFk", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2FftInit); + LIB_FUNCTION("D8eCqBxSojA", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2FftProcess); + LIB_FUNCTION("-YNfTO6KOMY", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2FftQuerySize); + LIB_FUNCTION("eF8yRCC6W64", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2GeomApply); + LIB_FUNCTION("1WsleK-MTkE", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2GeomCalcListener); + LIB_FUNCTION("7Lcfo8SmpsU", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2GeomResetListenerParam); + LIB_FUNCTION("0lbbayqDNoE", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2GeomResetSourceParam); + LIB_FUNCTION("ekGJmmoc8j4", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2GetWaveformFrameInfo); + LIB_FUNCTION("BcoPfWfpvVI", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2JobSchedulerResetOption); + LIB_FUNCTION("EEemGEQCjO8", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2ModuleArrayEnumItems); + LIB_FUNCTION("TaoNtmMKkXQ", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2ModuleEnumConfigs); + LIB_FUNCTION("ve6bZi+1sYQ", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2ModuleQueueEnumItems); + LIB_FUNCTION("gbMKV+8Enuo", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2PanGetVolumeMatrix); + LIB_FUNCTION("xa8oL9dmXkM", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2PanInit); + LIB_FUNCTION("hyVLT2VlOYk", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2ParseWaveformData); + LIB_FUNCTION("iprCTXPVWMI", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2ParseWaveformFile); + LIB_FUNCTION("t9T0QM17Kvo", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2ParseWaveformUser); + LIB_FUNCTION("cLV4aiT9JpA", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2RackCreate); + LIB_FUNCTION("U546k6orxQo", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2RackCreateWithAllocator); + LIB_FUNCTION("lCqD7oycmIM", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2RackDestroy); + LIB_FUNCTION("M4LYATRhRUE", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2RackGetInfo); + LIB_FUNCTION("Mn4XNDg03XY", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2RackGetUserData); + LIB_FUNCTION("MwmHz8pAdAo", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2RackGetVoiceHandle); + LIB_FUNCTION("MzTa7VLjogY", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2RackLock); + LIB_FUNCTION("0eFLVCfWVds", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2RackQueryBufferSize); + LIB_FUNCTION("TZqb8E-j3dY", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2RackQueryInfo); + LIB_FUNCTION("MI2VmBx2RbM", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2RackRunCommands); + LIB_FUNCTION("JNTMIaBIbV4", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2RackSetUserData); + LIB_FUNCTION("++YZ7P9e87U", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2RackUnlock); + LIB_FUNCTION("uBIN24Tv2MI", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2ReportRegisterHandler); + LIB_FUNCTION("nPzb7Ly-VjE", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2ReportUnregisterHandler); + LIB_FUNCTION("koBbCMvOKWw", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemCreate); + LIB_FUNCTION("mPYgU4oYpuY", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemCreateWithAllocator); + LIB_FUNCTION("u-WrYDaJA3k", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemDestroy); + LIB_FUNCTION("vubFP0T6MP0", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemEnumHandles); + LIB_FUNCTION("U-+7HsswcIs", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemEnumRackHandles); + LIB_FUNCTION("vU7TQ62pItw", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemGetInfo); + LIB_FUNCTION("4lFaRxd-aLs", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemGetUserData); + LIB_FUNCTION("gThZqM5PYlQ", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemLock); + LIB_FUNCTION("pgFAiLR5qT4", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemQueryBufferSize); + LIB_FUNCTION("3oIK7y7O4k0", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemQueryInfo) + LIB_FUNCTION("i0VnXM-C9fc", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemRender); + LIB_FUNCTION("AQkj7C0f3PY", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemResetOption); + LIB_FUNCTION("gXiormHoZZ4", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemRunCommands); + LIB_FUNCTION("l4Q2dWEH6UM", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemSetGrainSamples); + LIB_FUNCTION("Wdlx0ZFTV9s", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemSetLoudThreshold); + LIB_FUNCTION("-tbc2SxQD60", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemSetSampleRate); + LIB_FUNCTION("GZB2v0XnG0k", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemSetUserData); + LIB_FUNCTION("JXRC5n0RQls", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2SystemUnlock); + LIB_FUNCTION("sU2St3agdjg", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2StreamCreate); + LIB_FUNCTION("I+RLwaauggA", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2StreamCreateWithAllocator); + LIB_FUNCTION("bfoMXnTRtwE", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2StreamDestroy); + LIB_FUNCTION("dxulc33msHM", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2StreamQueryBufferSize); + LIB_FUNCTION("rfw6ufRsmow", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2StreamQueryInfo); + LIB_FUNCTION("q+2W8YdK0F8", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2StreamResetOption); + LIB_FUNCTION("qQHCi9pjDps", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2StreamRunCommands); + LIB_FUNCTION("uu94irFOGpA", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2VoiceControl); + LIB_FUNCTION("jjBVvPN9964", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2VoiceGetMatrixInfo); + LIB_FUNCTION("W-Z8wWMBnhk", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2VoiceGetOwner); + LIB_FUNCTION("WCayTgob7-o", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2VoiceGetPortInfo); + LIB_FUNCTION("-TOuuAQ-buE", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2VoiceGetState); + LIB_FUNCTION("rEh728kXk3w", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2VoiceGetStateFlags); + LIB_FUNCTION("9eic4AmjGVI", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2VoiceQueryInfo); + LIB_FUNCTION("AbYvTOZ8Pts", "libSceNgs2", 1, "libSceNgs2", 1, 1, sceNgs2VoiceRunCommands); +}; + +} // namespace Libraries::Ngs2 \ No newline at end of file diff --git a/src/core/libraries/ngs2/ngs2.h b/src/core/libraries/ngs2/ngs2.h new file mode 100644 index 000000000..12cbfb832 --- /dev/null +++ b/src/core/libraries/ngs2/ngs2.h @@ -0,0 +1,82 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "common/types.h" + +namespace Core::Loader { +class SymbolsResolver; +} + +namespace Libraries::Ngs2 { + +int PS4_SYSV_ABI sceNgs2CalcWaveformBlock(); +int PS4_SYSV_ABI sceNgs2CustomRackGetModuleInfo(); +int PS4_SYSV_ABI sceNgs2FftInit(); +int PS4_SYSV_ABI sceNgs2FftProcess(); +int PS4_SYSV_ABI sceNgs2FftQuerySize(); +int PS4_SYSV_ABI sceNgs2GeomApply(); +int PS4_SYSV_ABI sceNgs2GeomCalcListener(); +int PS4_SYSV_ABI sceNgs2GeomResetListenerParam(); +int PS4_SYSV_ABI sceNgs2GeomResetSourceParam(); +int PS4_SYSV_ABI sceNgs2GetWaveformFrameInfo(); +int PS4_SYSV_ABI sceNgs2JobSchedulerResetOption(); +int PS4_SYSV_ABI sceNgs2ModuleArrayEnumItems(); +int PS4_SYSV_ABI sceNgs2ModuleEnumConfigs(); +int PS4_SYSV_ABI sceNgs2ModuleQueueEnumItems(); +int PS4_SYSV_ABI sceNgs2PanGetVolumeMatrix(); +int PS4_SYSV_ABI sceNgs2PanInit(); +int PS4_SYSV_ABI sceNgs2ParseWaveformData(); +int PS4_SYSV_ABI sceNgs2ParseWaveformFile(); +int PS4_SYSV_ABI sceNgs2ParseWaveformUser(); +int PS4_SYSV_ABI sceNgs2RackCreate(); +int PS4_SYSV_ABI sceNgs2RackCreateWithAllocator(); +int PS4_SYSV_ABI sceNgs2RackDestroy(); +int PS4_SYSV_ABI sceNgs2RackGetInfo(); +int PS4_SYSV_ABI sceNgs2RackGetUserData(); +int PS4_SYSV_ABI sceNgs2RackGetVoiceHandle(); +int PS4_SYSV_ABI sceNgs2RackLock(); +int PS4_SYSV_ABI sceNgs2RackQueryBufferSize(); +int PS4_SYSV_ABI sceNgs2RackQueryInfo(); +int PS4_SYSV_ABI sceNgs2RackRunCommands(); +int PS4_SYSV_ABI sceNgs2RackSetUserData(); +int PS4_SYSV_ABI sceNgs2RackUnlock(); +int PS4_SYSV_ABI sceNgs2ReportRegisterHandler(); +int PS4_SYSV_ABI sceNgs2ReportUnregisterHandler(); +int PS4_SYSV_ABI sceNgs2SystemCreate(); +int PS4_SYSV_ABI sceNgs2SystemCreateWithAllocator(); +int PS4_SYSV_ABI sceNgs2SystemDestroy(); +int PS4_SYSV_ABI sceNgs2SystemEnumHandles(); +int PS4_SYSV_ABI sceNgs2SystemEnumRackHandles(); +int PS4_SYSV_ABI sceNgs2SystemGetInfo(); +int PS4_SYSV_ABI sceNgs2SystemGetUserData(); +int PS4_SYSV_ABI sceNgs2SystemLock(); +int PS4_SYSV_ABI sceNgs2SystemQueryBufferSize(); +int PS4_SYSV_ABI sceNgs2SystemQueryInfo(); +int PS4_SYSV_ABI sceNgs2SystemRender(); +int PS4_SYSV_ABI sceNgs2SystemResetOption(); +int PS4_SYSV_ABI sceNgs2SystemRunCommands(); +int PS4_SYSV_ABI sceNgs2SystemSetGrainSamples(); +int PS4_SYSV_ABI sceNgs2SystemSetLoudThreshold(); +int PS4_SYSV_ABI sceNgs2SystemSetSampleRate(); +int PS4_SYSV_ABI sceNgs2SystemSetUserData(); +int PS4_SYSV_ABI sceNgs2SystemUnlock(); +int PS4_SYSV_ABI sceNgs2StreamCreate(); +int PS4_SYSV_ABI sceNgs2StreamCreateWithAllocator(); +int PS4_SYSV_ABI sceNgs2StreamDestroy(); +int PS4_SYSV_ABI sceNgs2StreamQueryBufferSize(); +int PS4_SYSV_ABI sceNgs2StreamQueryInfo(); +int PS4_SYSV_ABI sceNgs2StreamResetOption(); +int PS4_SYSV_ABI sceNgs2StreamRunCommands(); +int PS4_SYSV_ABI sceNgs2VoiceControl(); +int PS4_SYSV_ABI sceNgs2VoiceGetMatrixInfo(); +int PS4_SYSV_ABI sceNgs2VoiceGetOwner(); +int PS4_SYSV_ABI sceNgs2VoiceGetPortInfo(); +int PS4_SYSV_ABI sceNgs2VoiceGetState(); +int PS4_SYSV_ABI sceNgs2VoiceGetStateFlags(); +int PS4_SYSV_ABI sceNgs2VoiceQueryInfo(); +int PS4_SYSV_ABI sceNgs2VoiceRunCommands(); + +void RegisterlibSceNgs2(Core::Loader::SymbolsResolver* sym); +} // namespace Libraries::Ngs2 \ No newline at end of file