1
0
mirror of https://github.com/RPCS3/rpcs3.git synced 2024-11-25 20:22:30 +01:00

Update cellSpudll

- Stub cellSpudllGetImageSize
- Implement cellSpudllHandleConfigSetDefaultValues
This commit is contained in:
scribam 2017-04-07 22:52:31 +02:00 committed by Ivan
parent d160c862c7
commit 7a1fd27ecc
4 changed files with 61 additions and 6 deletions

View File

@ -1,22 +1,47 @@
#include "stdafx.h"
#include "Emu/Cell/PPUModule.h"
namespace vm { using namespace ps3; }
#include "cellSpudll.h"
logs::channel cellSpudll("cellSpudll", logs::level::notice);
s32 cellSpudllGetImageSize(vm::ptr<u32> psize, vm::cptr<void> so_elf, vm::cptr<struct CellSpudllHandleConfig> config)
s32 cellSpudllGetImageSize(vm::ptr<u32> psize, vm::cptr<void> so_elf, vm::cptr<CellSpudllHandleConfig> config)
{
fmt::throw_exception("Unimplemented" HERE);
cellSpudll.todo("cellSpudllGetImageSize(psize=*0x%x, so_elf=*0x%x, config=*0x%x)", psize, so_elf, config);
if (!psize || !so_elf)
{
return CELL_SPUDLL_ERROR_NULL_POINTER;
}
// todo
return CELL_OK;
}
s32 cellSpudllHandleConfigSetDefaultValues(vm::ptr<struct CellSpudllHandleConfig> config)
s32 cellSpudllHandleConfigSetDefaultValues(vm::ptr<CellSpudllHandleConfig> config)
{
fmt::throw_exception("Unimplemented" HERE);
cellSpudll.trace("cellSpudllHandleConfigSetDefaultValues(config=*0x%x)", config);
if (!config)
{
return CELL_SPUDLL_ERROR_NULL_POINTER;
}
config->mode = 0;
config->dmaTag = 0;
config->numMaxReferred = 16;
config->unresolvedSymbolValueForFunc = vm::null;
config->unresolvedSymbolValueForObject = vm::null;
config->unresolvedSymbolValueForOther = vm::null;
std::memset(config->__reserved__, 0, sizeof(config->__reserved__));
return CELL_OK;
}
DECLARE(ppu_module_manager::cellSpudll)("cellSpudll", []()
{
REG_FUNC(cellSpudll, cellSpudllGetImageSize);
REG_FUNC(cellSpudll, cellSpudllHandleConfigSetDefaultValues);
REG_FUNC(cellSpudll, cellSpudllHandleConfigSetDefaultValues).flags = MFF_PERFECT;
});

View File

@ -0,0 +1,26 @@
#pragma once
namespace vm { using namespace ps3; }
enum
{
CELL_SPUDLL_ERROR_INVAL = 0x80410602,
CELL_SPUDLL_ERROR_STAT = 0x8041060f,
CELL_SPUDLL_ERROR_ALIGN = 0x80410610,
CELL_SPUDLL_ERROR_NULL_POINTER = 0x80410611,
CELL_SPUDLL_ERROR_SRCH = 0x80410605,
CELL_SPUDLL_ERROR_UNDEF = 0x80410612,
CELL_SPUDLL_ERROR_FATAL = 0x80410613,
};
struct CellSpudllHandleConfig
{
be_t<u32> mode;
be_t<u32> dmaTag;
be_t<u32> numMaxReferred;
be_t<u32> numMaxDepend;
vm::bptr<void> unresolvedSymbolValueForFunc;
vm::bptr<void> unresolvedSymbolValueForObject;
vm::bptr<void> unresolvedSymbolValueForOther;
be_t<u32> __reserved__[9];
};

View File

@ -579,6 +579,7 @@
<ClInclude Include="Emu\Cell\Modules\cellSaveData.h" />
<ClInclude Include="Emu\Cell\Modules\cellScreenshot.h" />
<ClInclude Include="Emu\Cell\Modules\cellSearch.h" />
<ClInclude Include="Emu\Cell\Modules\cellSpudll.h" />
<ClInclude Include="Emu\Cell\Modules\cellSpurs.h" />
<ClInclude Include="Emu\Cell\Modules\cellSpursJq.h" />
<ClInclude Include="Emu\Cell\Modules\cellSubdisplay.h" />

View File

@ -1348,6 +1348,9 @@
<ClInclude Include="Emu\Cell\Modules\cellSearch.h">
<Filter>Emu\Cell\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\Cell\Modules\cellSpudll.h">
<Filter>Emu\Cell\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\Cell\Modules\cellSpurs.h">
<Filter>Emu\Cell\Modules</Filter>
</ClInclude>