Stub libfs_utility_init to bypass FSCK checks by vsh.

This commit is contained in:
clienthax 2021-07-17 12:08:21 +01:00 committed by Megamouse
parent 1e605de31e
commit 9c5c4457b6
8 changed files with 99 additions and 1 deletions

View file

@ -333,6 +333,7 @@ target_sources(rpcs3_emu PRIVATE
Cell/Modules/sys_rsxaudio_.cpp
Cell/Modules/sys_spinlock.cpp
Cell/Modules/sys_spu_.cpp
Cell/Modules/libfs_utility_init.cpp
)
if(NOT MSVC)

View file

@ -0,0 +1,85 @@
#include "stdafx.h"
#include "Emu/Cell/PPUModule.h"
LOG_CHANNEL(libfs_utility_init);
error_code fs_utility_init_1F3CD9F1()
{
libfs_utility_init.todo("fs_utility_init_1F3CD9F1()");
return CELL_OK;
}
error_code fs_utility_init_263172B8(u32 arg1)
{
libfs_utility_init.todo("fs_utility_init_263172B8(0x%0x)", arg1);
// arg1 usually 0x3 ??
// This method seems to call fsck on the various partitions, among other checks
// Negative numbers indicate an error
// Some positive numbers are deemed illegal, others (including 0) are accepted as valid
return CELL_OK;
}
error_code fs_utility_init_4E949DA4()
{
libfs_utility_init.todo("fs_utility_init_4E949DA4()");
return CELL_OK;
}
error_code fs_utility_init_665DF255()
{
libfs_utility_init.todo("fs_utility_init_665DF255()");
return CELL_OK;
}
error_code fs_utility_init_6B5896B0(vm::ptr<u64> dest)
{
libfs_utility_init.todo("fs_utility_init_6B5896B0(dest=*0x%0x)", dest);
if (!dest)
{
return CELL_EFAULT;
}
// This method writes the number of partitions to the address pointed to by dest
*dest = 2;
return CELL_OK;
}
error_code fs_utility_init_A9B04535(u32 arg1)
{
libfs_utility_init.todo("fs_utility_init_A9B04535(0x%0x)", arg1);
// This method seems to call fsck on the various partitions, among other checks
// Negative numbers indicate an error
// Some positive numbers are deemed illegal, others (including 0) are accepted as valid
return CELL_OK;
}
error_code fs_utility_init_E7563CE6()
{
libfs_utility_init.todo("fs_utility_init_E7563CE6()");
return CELL_OK;
}
error_code fs_utility_init_F691D443()
{
libfs_utility_init.todo("fs_utility_init_F691D443()");
return CELL_OK;
}
DECLARE(ppu_module_manager::libfs_utility_init)("fs_utility_init", []()
{
REG_FNID(fs_utility_init, 0x1F3CD9F1, fs_utility_init_1F3CD9F1);
REG_FNID(fs_utility_init, 0x263172B8, fs_utility_init_263172B8);
REG_FNID(fs_utility_init, 0x4E949DA4, fs_utility_init_4E949DA4);
REG_FNID(fs_utility_init, 0x665DF255, fs_utility_init_665DF255);
REG_FNID(fs_utility_init, 0x6B5896B0, fs_utility_init_6B5896B0);
REG_FNID(fs_utility_init, 0xA9B04535, fs_utility_init_A9B04535);
REG_FNID(fs_utility_init, 0xE7563CE6, fs_utility_init_E7563CE6);
REG_FNID(fs_utility_init, 0xF691D443, fs_utility_init_F691D443);
});

View file

@ -0,0 +1 @@
#pragma once

View file

@ -228,6 +228,7 @@ static void ppu_initialize_modules(ppu_linkage_info* link)
&ppu_module_manager::cellVpost,
&ppu_module_manager::libad_async,
&ppu_module_manager::libad_core,
&ppu_module_manager::libfs_utility_init,
&ppu_module_manager::libmedi,
&ppu_module_manager::libmixer,
&ppu_module_manager::libsnd3,

View file

@ -248,6 +248,7 @@ public:
static const ppu_static_module cellVpost;
static const ppu_static_module libad_async;
static const ppu_static_module libad_core;
static const ppu_static_module libfs_utility_init;
static const ppu_static_module libmedi;
static const ppu_static_module libmixer;
static const ppu_static_module libsnd3;

View file

@ -25,6 +25,7 @@ LOG_CHANNEL(sys_prx);
// <string: firmware sprx, int: should hle if 1>
extern const std::map<std::string_view, int> g_prx_list
{
{ "/dev_flash/sys/internal/libfs_utility_init.sprx", 1 },
{ "libaacenc.sprx", 0 },
{ "libaacenc_spurs.sprx", 0 },
{ "libac3dec.sprx", 0 },
@ -225,7 +226,7 @@ static error_code prx_load_module(const std::string& vpath, u64 flags, vm::ptr<s
}
else if (vpath0.starts_with("/"))
{
// Special case (currently unused): HLE for files outside of "/dev_flash/sys/external/"
// Special case : HLE for files outside of "/dev_flash/sys/external/"
// Have to specify full path for them
ignore = g_prx_list.count(vpath0) && g_prx_list.at(vpath0);
}

View file

@ -60,6 +60,7 @@
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="Emu\cache_utils.cpp" />
<ClCompile Include="Emu\Cell\Modules\libfs_utility_init.cpp" />
<ClCompile Include="Emu\Cell\Modules\sys_crashdump.cpp" />
<ClCompile Include="Emu\Io\Turntable.cpp" />
<ClCompile Include="Emu\Io\GHLtar.cpp" />
@ -439,6 +440,7 @@
<ClInclude Include="Emu\Cell\Modules\cellRemotePlay.h" />
<ClInclude Include="Emu\Cell\Modules\cellSsl.h" />
<ClInclude Include="Emu\Cell\Modules\cellStorage.h" />
<ClInclude Include="Emu\Cell\Modules\libfs_utility_init.h" />
<ClInclude Include="Emu\Cell\Modules\sys_crashdump.h" />
<ClInclude Include="Emu\Io\Turntable.h" />
<ClInclude Include="Emu\Io\GHLtar.h" />

View file

@ -996,6 +996,9 @@
<ClCompile Include="util\media_utils.cpp">
<Filter>Utilities</Filter>
</ClCompile>
<ClCompile Include="Emu\Cell\Modules\libfs_utility_init.cpp">
<Filter>Emu\Cell\Modules</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Crypto\aes.h">
@ -1968,6 +1971,9 @@
<ClInclude Include="util\media_utils.h">
<Filter>Utilities</Filter>
</ClInclude>
<ClInclude Include="Emu\Cell\Modules\libfs_utility_init.h">
<Filter>Emu\Cell\Modules</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="Emu\RSX\Common\Interpreter\FragmentInterpreter.glsl">