mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 08:33:12 -05:00
sceSysmoduleIsLoaded returned 0x80A90002 and the unload calls 0x80A90003 for a module that is not loaded. Neither value exists in the SDK: the sysmodule facility is 0x5A and the error is 0x805A1001, which titles compare against (GTA V PPSA04263: cmp eax,0x805a1001 after IsLoaded) to decide whether to load and initialise the module themselves. Return that value from all three places and cover it in guest_sysmodule. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
41 lines
1.6 KiB
C++
41 lines
1.6 KiB
C++
#include "prx/libc/include/general/VabiMacros.hpp"
|
|
#include <cstdint>
|
|
#include <cstdlib>
|
|
|
|
extern "C" {
|
|
int APS5_VABI sceSysmoduleIsLoaded(std::uint16_t id);
|
|
int APS5_VABI sceSysmoduleLoadModule(std::uint16_t id);
|
|
int APS5_VABI sceSysmoduleUnloadModule(std::uint16_t id);
|
|
int APS5_VABI sceSysmoduleLoadModuleInternal(std::uint32_t id);
|
|
int APS5_VABI sceSysmoduleUnloadModuleInternal(std::uint32_t id);
|
|
}
|
|
|
|
namespace {
|
|
|
|
void Require(bool value) { if (!value) std::abort(); }
|
|
|
|
constexpr std::uint16_t kFiberModuleId = 0x0006;
|
|
constexpr std::uint16_t kUltModuleId = 0x0007;
|
|
constexpr int kModuleUnloaded = static_cast<int>(0x805A1001);
|
|
|
|
}
|
|
|
|
int main() {
|
|
Require(sceSysmoduleIsLoaded(kFiberModuleId) == kModuleUnloaded);
|
|
Require(sceSysmoduleLoadModuleInternal(kFiberModuleId) == 0);
|
|
Require(sceSysmoduleIsLoaded(kFiberModuleId) == 0);
|
|
Require(sceSysmoduleLoadModuleInternal(kFiberModuleId) == 0);
|
|
Require(sceSysmoduleUnloadModuleInternal(kFiberModuleId) == 0);
|
|
Require(sceSysmoduleIsLoaded(kFiberModuleId) == 0);
|
|
Require(sceSysmoduleUnloadModuleInternal(kFiberModuleId) == 0);
|
|
Require(sceSysmoduleIsLoaded(kFiberModuleId) == kModuleUnloaded);
|
|
Require(sceSysmoduleUnloadModuleInternal(kFiberModuleId) == kModuleUnloaded);
|
|
|
|
Require(sceSysmoduleIsLoaded(kUltModuleId) == kModuleUnloaded);
|
|
Require(sceSysmoduleUnloadModule(kUltModuleId) == kModuleUnloaded);
|
|
Require(sceSysmoduleLoadModule(kUltModuleId) == 0);
|
|
Require(sceSysmoduleIsLoaded(kUltModuleId) == 0);
|
|
Require(sceSysmoduleUnloadModule(kUltModuleId) == 0);
|
|
Require(sceSysmoduleIsLoaded(kUltModuleId) == kModuleUnloaded);
|
|
}
|