From 199f0dd704faf42172308384fcf9f6151a84ff30 Mon Sep 17 00:00:00 2001 From: sum2012 Date: Wed, 1 Nov 2023 06:29:55 +0800 Subject: [PATCH 1/5] Record Atrac libersion Gripshift library version 0x101 ,crc 3dd5e32f --- Core/HLE/sceAtrac.cpp | 18 +++++++++++++++++- Core/HLE/sceAtrac.h | 3 ++- Core/HLE/sceKernelModule.cpp | 15 ++++++++++++--- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index 86017681b6..680bb27345 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -657,9 +657,12 @@ const int PSP_NUM_ATRAC_IDS = 6; static bool atracInited = true; static Atrac *atracIDs[PSP_NUM_ATRAC_IDS]; static u32 atracIDTypes[PSP_NUM_ATRAC_IDS]; +static int atracLibVersion = 0; +static u32 atracLibCrc = 0; void __AtracInit() { atracInited = true; + INFO_LOG(ME, "AtracInit, atracLibVersion 0x%0x, atracLibcrc %x", atracLibVersion, atracLibCrc); memset(atracIDs, 0, sizeof(atracIDs)); // Start with 2 of each in this order. @@ -680,8 +683,13 @@ void __AtracInit() { #endif // USE_FFMPEG } +void __AtracLoadModule(int version, u32 crc) { + atracLibVersion = version; + atracLibCrc = crc; +} + void __AtracDoState(PointerWrap &p) { - auto s = p.Section("sceAtrac", 1); + auto s = p.Section("sceAtrac", 1, 2); if (!s) return; @@ -697,6 +705,14 @@ void __AtracDoState(PointerWrap &p) { } } DoArray(p, atracIDTypes, PSP_NUM_ATRAC_IDS); + if (s < 2) { + atracLibVersion = 0; + atracLibCrc = 0; + } + else { + Do(p, atracLibVersion); + Do(p, atracLibCrc); + } } void __AtracShutdown() { diff --git a/Core/HLE/sceAtrac.h b/Core/HLE/sceAtrac.h index 1f48b48cef..f0914c1c63 100644 --- a/Core/HLE/sceAtrac.h +++ b/Core/HLE/sceAtrac.h @@ -90,4 +90,5 @@ typedef struct u32 _AtracAddStreamData(int atracID, u32 bufPtr, u32 bytesToAdd); u32 _AtracDecodeData(int atracID, u8* outbuf, u32 outbufPtr, u32 *SamplesNum, u32* finish, int *remains); -int _AtracGetIDByContext(u32 contextAddr); \ No newline at end of file +int _AtracGetIDByContext(u32 contextAddr); +void __AtracLoadModule(int version, u32 crc); diff --git a/Core/HLE/sceKernelModule.cpp b/Core/HLE/sceKernelModule.cpp index 5b730160d5..1c850693a6 100644 --- a/Core/HLE/sceKernelModule.cpp +++ b/Core/HLE/sceKernelModule.cpp @@ -61,6 +61,7 @@ #include "Core/HLE/sceKernelMemory.h" #include "Core/HLE/sceMpeg.h" #include "Core/HLE/scePsmf.h" +#include "Core/HLE/sceAtrac.h" #include "Core/HLE/sceIo.h" #include "Core/HLE/KernelWaitHelpers.h" #include "Core/ELF/ParamSFO.h" @@ -1185,9 +1186,13 @@ static PSPModule *__KernelLoadELFFromPtr(const u8 *ptr, size_t elfSize, u32 load if (!strcmp(head->modname, "sceMpeg_library")) { __MpegLoadModule(ver, module->crc); } - if (!strcmp(head->modname, "scePsmfP_library") || !strcmp(head->modname, "scePsmfPlayer")) { - __PsmfPlayerLoadModule(head->devkitversion, module->crc); + if (!strcmp(head->modname, "scePsmfP_library") || !strcmp(head->modname, "scePsmfPlayer") || !strcmp(head->modname, "libpsmfplayer") || !strcmp(head->modname, "psmf_jk") || !strcmp(head->modname, "jkPsmfP_librar")) { + __PsmfPlayerLoadModule(devkitVersion, module->crc); } + if (!strcmp(head->modname, "sceATRAC3plus_Library")) { + __AtracLoadModule(ver, module->crc); + } + } const u8 *in = ptr; @@ -1631,9 +1636,13 @@ static PSPModule *__KernelLoadELFFromPtr(const u8 *ptr, size_t elfSize, u32 load if (!strcmp(modinfo->name, "sceMpeg_library")) { __MpegLoadModule(modinfo->moduleVersion, module->crc); } - if (!strcmp(modinfo->name, "scePsmfP_library") || !strcmp(modinfo->name, "scePsmfPlayer")) { + if (!strcmp(modinfo->name, "scePsmfP_library") || !strcmp(modinfo->name, "scePsmfPlayer") || !strcmp(modinfo->name, "libpsmfplayer") || !strcmp(modinfo->name, "psmf_jk") || !strcmp(modinfo->name, "jkPsmfP_librar")){ __PsmfPlayerLoadModule(devkitVersion, module->crc); } + if (!strcmp(modinfo->name, "sceATRAC3plus_Library")) { + __AtracLoadModule(modinfo->moduleVersion, module->crc); + } + } System_Notify(SystemNotification::SYMBOL_MAP_UPDATED); From 9869267160e4db7e47f92dc62f9250a17af5bb28 Mon Sep 17 00:00:00 2001 From: sum2012 Date: Wed, 1 Nov 2023 06:33:08 +0800 Subject: [PATCH 2/5] oop --- Core/HLE/sceKernelModule.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/HLE/sceKernelModule.cpp b/Core/HLE/sceKernelModule.cpp index 1c850693a6..cbb81ed098 100644 --- a/Core/HLE/sceKernelModule.cpp +++ b/Core/HLE/sceKernelModule.cpp @@ -1186,7 +1186,7 @@ static PSPModule *__KernelLoadELFFromPtr(const u8 *ptr, size_t elfSize, u32 load if (!strcmp(head->modname, "sceMpeg_library")) { __MpegLoadModule(ver, module->crc); } - if (!strcmp(head->modname, "scePsmfP_library") || !strcmp(head->modname, "scePsmfPlayer") || !strcmp(head->modname, "libpsmfplayer") || !strcmp(head->modname, "psmf_jk") || !strcmp(head->modname, "jkPsmfP_librar")) { + if (!strcmp(head->modname, "scePsmfP_library") || !strcmp(head->modname, "scePsmfPlayer") || !strcmp(head->modname, "libpsmfplayer") || !strcmp(head->modname, "psmf_jk") || !strcmp(head->modname, "jkPsmfP_library")) { __PsmfPlayerLoadModule(devkitVersion, module->crc); } if (!strcmp(head->modname, "sceATRAC3plus_Library")) { @@ -1636,7 +1636,7 @@ static PSPModule *__KernelLoadELFFromPtr(const u8 *ptr, size_t elfSize, u32 load if (!strcmp(modinfo->name, "sceMpeg_library")) { __MpegLoadModule(modinfo->moduleVersion, module->crc); } - if (!strcmp(modinfo->name, "scePsmfP_library") || !strcmp(modinfo->name, "scePsmfPlayer") || !strcmp(modinfo->name, "libpsmfplayer") || !strcmp(modinfo->name, "psmf_jk") || !strcmp(modinfo->name, "jkPsmfP_librar")){ + if (!strcmp(modinfo->name, "scePsmfP_library") || !strcmp(modinfo->name, "scePsmfPlayer") || !strcmp(modinfo->name, "libpsmfplayer") || !strcmp(modinfo->name, "psmf_jk") || !strcmp(modinfo->name, "jkPsmfP_library")){ __PsmfPlayerLoadModule(devkitVersion, module->crc); } if (!strcmp(modinfo->name, "sceATRAC3plus_Library")) { From b3527fe1bef41d9d8c3b4e2458911595357b9959 Mon Sep 17 00:00:00 2001 From: sum2012 Date: Thu, 2 Nov 2023 20:37:20 +0800 Subject: [PATCH 3/5] Move to _AtracSetData Fix before LoadModule --- Core/HLE/sceAtrac.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index 680bb27345..65d9217af8 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -662,7 +662,6 @@ static u32 atracLibCrc = 0; void __AtracInit() { atracInited = true; - INFO_LOG(ME, "AtracInit, atracLibVersion 0x%0x, atracLibcrc %x", atracLibVersion, atracLibCrc); memset(atracIDs, 0, sizeof(atracIDs)); // Start with 2 of each in this order. @@ -1987,7 +1986,7 @@ static int _AtracSetData(Atrac *atrac, u32 buffer, u32 readSize, u32 bufferSize, // Already logged. return ret; } - + INFO_LOG(ME, "AtracInit, atracLibVersion 0x%0x, atracLibcrc %x", atracLibVersion, atracLibCrc); return hleLogSuccessInfoI(ME, successCode, "%s %s audio", codecName, channelName); } From a41a1dcfffb1684d834ac618e2caf703c99ff2e8 Mon Sep 17 00:00:00 2001 From: sum2012 Date: Thu, 2 Nov 2023 20:42:03 +0800 Subject: [PATCH 4/5] Fix indentation --- Core/HLE/sceAtrac.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index 65d9217af8..71e6d13164 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -709,8 +709,8 @@ void __AtracDoState(PointerWrap &p) { atracLibCrc = 0; } else { - Do(p, atracLibVersion); - Do(p, atracLibCrc); + Do(p, atracLibVersion); + Do(p, atracLibCrc); } } From fad262e810f4067ff3e9a64a97834ae1e459be6e Mon Sep 17 00:00:00 2001 From: sum2012 Date: Fri, 3 Nov 2023 03:52:18 +0800 Subject: [PATCH 5/5] oop --- Core/HLE/sceAtrac.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index 71e6d13164..3ca2541f73 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -685,6 +685,7 @@ void __AtracInit() { void __AtracLoadModule(int version, u32 crc) { atracLibVersion = version; atracLibCrc = crc; + INFO_LOG(ME, "AtracInit, atracLibVersion 0x%0x, atracLibcrc %x", atracLibVersion, atracLibCrc); } void __AtracDoState(PointerWrap &p) { @@ -1986,7 +1987,6 @@ static int _AtracSetData(Atrac *atrac, u32 buffer, u32 readSize, u32 bufferSize, // Already logged. return ret; } - INFO_LOG(ME, "AtracInit, atracLibVersion 0x%0x, atracLibcrc %x", atracLibVersion, atracLibCrc); return hleLogSuccessInfoI(ME, successCode, "%s %s audio", codecName, channelName); }