diff --git a/rpcs3/Emu/SysCalls/ModuleManager.cpp b/rpcs3/Emu/SysCalls/ModuleManager.cpp index 8c919c7cb3..a5b42c6031 100644 --- a/rpcs3/Emu/SysCalls/ModuleManager.cpp +++ b/rpcs3/Emu/SysCalls/ModuleManager.cpp @@ -48,6 +48,7 @@ extern Module *cellSail; extern void cellSpurs_init(); extern Module *cellSpurs; extern void cellSync_init(); +extern void cellSync_load(); extern Module *cellSync; extern void cellSysmodule_init(); extern Module *cellSysmodule; @@ -81,8 +82,10 @@ extern void sceNpTus_unload(); extern void sceNpTus_init(); extern Module *sceNpTus; extern void sysPrxForUser_init(); +extern void sysPrxForUser_load(); extern Module *sysPrxForUser; extern void sys_fs_init(); +extern void sys_fs_load(); extern Module *sys_fs; extern void sys_io_init(); extern Module *sys_io; @@ -250,7 +253,7 @@ void ModuleManager::init() cellSpurs = static_cast (&(m_mod_init.back())) + 1; m_mod_init.emplace_back(0x000a, cellSpurs_init); cellSync = static_cast (&(m_mod_init.back())) + 1; - m_mod_init.emplace_back("cellSync", cellSync_init); + m_mod_init.emplace_back("cellSync", cellSync_init, cellSync_load, nullptr); cellSysutil = static_cast (&(m_mod_init.back())) + 1; m_mod_init.emplace_back(0x0015, cellSysutil_init); cellSysutilAp = static_cast (&(m_mod_init.back())) + 1; @@ -278,9 +281,9 @@ void ModuleManager::init() sceNpTus = static_cast (&(m_mod_init.back())) + 1; m_mod_init.emplace_back(0x0045, sceNpTus_init, nullptr, sceNpTus_unload); sysPrxForUser = static_cast (&(m_mod_init.back())) + 1; - m_mod_init.emplace_back("sysPrxForUser", sysPrxForUser_init); + m_mod_init.emplace_back("sysPrxForUser", sysPrxForUser_init, sysPrxForUser_load, nullptr); sys_fs = static_cast (&(m_mod_init.back())) + 1; - m_mod_init.emplace_back(0x000e, sys_fs_init); + m_mod_init.emplace_back(0x000e, sys_fs_init, sys_fs_load, nullptr); sys_io = static_cast (&(m_mod_init.back())) + 1; m_mod_init.emplace_back(0x0017, sys_io_init); sys_net = static_cast (&(m_mod_init.back())) + 1; diff --git a/rpcs3/Emu/SysCalls/Modules/cellAdec.cpp b/rpcs3/Emu/SysCalls/Modules/cellAdec.cpp index 41c068a329..7fcf739465 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellAdec.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellAdec.cpp @@ -35,6 +35,9 @@ AudioDecoder::AudioDecoder(AudioCodecType type, u32 addr, u32 size, u32 func, u3 , ctx(nullptr) , fmt(nullptr) { + av_register_all(); + avcodec_register_all(); + AVCodec* codec = avcodec_find_decoder(AV_CODEC_ID_ATRAC3P); if (!codec) { @@ -824,7 +827,4 @@ void cellAdec_init() REG_FUNC(cellAdec, cellAdecDecodeAu); REG_FUNC(cellAdec, cellAdecGetPcm); REG_FUNC(cellAdec, cellAdecGetPcmItem); - - av_register_all(); - avcodec_register_all(); } diff --git a/rpcs3/Emu/SysCalls/Modules/cellSync.cpp b/rpcs3/Emu/SysCalls/Modules/cellSync.cpp index 58dac98731..bd1e4fcb78 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSync.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellSync.cpp @@ -2217,7 +2217,10 @@ void cellSync_init() cellSync->AddFunc(0xe1bc7add, _cellSyncLFQueuePopBody); cellSync->AddFunc(0xe9bf2110, _cellSyncLFQueueGetPushPointer); cellSync->AddFunc(0xfe74e8e7, _cellSyncLFQueueCompletePopPointer); +} +void cellSync_load() +{ #ifdef PRX_DEBUG CallAfter([]() { diff --git a/rpcs3/Emu/SysCalls/Modules/cellVdec.cpp b/rpcs3/Emu/SysCalls/Modules/cellVdec.cpp index b8055e8afd..7bfb67aef1 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellVdec.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellVdec.cpp @@ -35,6 +35,9 @@ VideoDecoder::VideoDecoder(CellVdecCodecType type, u32 profile, u32 addr, u32 si , ctx(nullptr) , vdecCb(nullptr) { + av_register_all(); + avcodec_register_all(); + AVCodec* codec = avcodec_find_decoder(AV_CODEC_ID_H264); if (!codec) { @@ -808,7 +811,4 @@ void cellVdec_init() cellVdec->AddFunc(0x807c861a, cellVdecGetPicture); cellVdec->AddFunc(0x17c702b9, cellVdecGetPicItem); cellVdec->AddFunc(0xe13ef6fc, cellVdecSetFrameRate); - - av_register_all(); - avcodec_register_all(); } diff --git a/rpcs3/Emu/SysCalls/Modules/sysPrxForUser.cpp b/rpcs3/Emu/SysCalls/Modules/sysPrxForUser.cpp index c0b845ef55..8a1586aa35 100644 --- a/rpcs3/Emu/SysCalls/Modules/sysPrxForUser.cpp +++ b/rpcs3/Emu/SysCalls/Modules/sysPrxForUser.cpp @@ -397,11 +397,6 @@ void sysPrxForUser_init() REG_FUNC(sysPrxForUser, _sys_strncpy); sysPrxForUser->AddFunc(0xe75c40f2, _unnamed_E75C40F2); // real name is unknown - spu_printf_agcb = 0; - spu_printf_dgcb = 0; - spu_printf_atcb = 0; - spu_printf_dtcb = 0; - REG_FUNC(sysPrxForUser, _sys_spu_printf_initialize); REG_FUNC(sysPrxForUser, _sys_spu_printf_finalize); REG_FUNC(sysPrxForUser, _sys_spu_printf_attach_group); @@ -411,3 +406,11 @@ void sysPrxForUser_init() REG_FUNC(sysPrxForUser, _sys_printf); } + +void sysPrxForUser_load() +{ + spu_printf_agcb = 0; + spu_printf_dgcb = 0; + spu_printf_atcb = 0; + spu_printf_dtcb = 0; +} \ No newline at end of file diff --git a/rpcs3/Emu/SysCalls/Modules/sys_fs.cpp b/rpcs3/Emu/SysCalls/Modules/sys_fs.cpp index 519d2a666e..3f943c843c 100644 --- a/rpcs3/Emu/SysCalls/Modules/sys_fs.cpp +++ b/rpcs3/Emu/SysCalls/Modules/sys_fs.cpp @@ -314,6 +314,9 @@ void sys_fs_init() sys_fs->AddFunc(0x81f33783, cellFsStReadPutCurrentAddr); sys_fs->AddFunc(0x8f71c5b2, cellFsStReadWait); sys_fs->AddFunc(0x866f6aec, cellFsStReadWaitCallback); +} +void sys_fs_load() +{ aio_init = false; }