mirror of https://github.com/RPCS3/rpcs3.git
cellGem and cellGameExec improvements
This commit is contained in:
parent
218e823fdc
commit
c923cb54d3
|
@ -31,6 +31,7 @@ enum
|
|||
{
|
||||
CELL_GAME_PATH_MAX = 128,
|
||||
CELL_GAME_DIRNAME_SIZE = 32,
|
||||
CELL_GAME_HDDGAMEPATH_SIZE = 128,
|
||||
CELL_GAME_THEMEFILENAME_SIZE = 48,
|
||||
CELL_GAME_SYSP_LANGUAGE_NUM = 20,
|
||||
CELL_GAME_SYSP_TITLE_SIZE = 128,
|
||||
|
@ -38,8 +39,10 @@ enum
|
|||
CELL_GAME_SYSP_VERSION_SIZE = 6,
|
||||
CELL_GAME_SYSP_APP_VER_SIZE = 6,
|
||||
|
||||
CELL_GAME_GAMETYPE_SYS = 0,
|
||||
CELL_GAME_GAMETYPE_DISC = 1,
|
||||
CELL_GAME_GAMETYPE_HDD = 2,
|
||||
CELL_GAME_GAMETYPE_HOME = 4,
|
||||
|
||||
CELL_GAME_GAMETYPE_GAMEDATA = 3,
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
#include "Emu/Memory/Memory.h"
|
||||
#include "Emu/SysCalls/Modules.h"
|
||||
|
||||
#include "cellGame.h"
|
||||
|
||||
extern Module cellGameExec;
|
||||
|
||||
s32 cellGameSetExitParam()
|
||||
|
@ -29,11 +31,15 @@ s32 cellGameGetHomeLaunchOptionPath()
|
|||
throw EXCEPTION("");
|
||||
}
|
||||
|
||||
s32 cellGameGetBootGameInfo()
|
||||
s32 cellGameGetBootGameInfo(vm::ptr<u32> type, vm::ptr<char> dirName, vm::ptr<u32> execData)
|
||||
{
|
||||
throw EXCEPTION("");
|
||||
}
|
||||
cellGameExec.Todo("cellGameGetBootGameInfo(type=*0x%x, dirName=*0x%x, execData=*0x%x)");
|
||||
|
||||
// TODO: Support more boot types
|
||||
*type = CELL_GAME_GAMETYPE_SYS;
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
Module cellGameExec("cellGameExec", []()
|
||||
{
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "stdafx.h"
|
||||
#include "Emu/IdManager.h"
|
||||
#include "Emu/Memory/Memory.h"
|
||||
#include "Emu/SysCalls/Modules.h"
|
||||
|
||||
|
@ -6,6 +7,11 @@
|
|||
|
||||
extern Module cellGem;
|
||||
|
||||
struct gem_t
|
||||
{
|
||||
CellGemAttribute attribute;
|
||||
};
|
||||
|
||||
s32 cellGemCalibrate()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellGem);
|
||||
|
@ -45,6 +51,12 @@ s32 cellGemEnableMagnetometer()
|
|||
s32 cellGemEnd()
|
||||
{
|
||||
cellGem.Warning("cellGemEnd()");
|
||||
|
||||
if (!fxm::remove<gem_t>())
|
||||
{
|
||||
return CELL_GEM_ERROR_UNINITIALIZED;
|
||||
}
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
|
@ -106,8 +118,21 @@ s32 cellGemGetInfo(vm::ptr<CellGemInfo> info)
|
|||
{
|
||||
cellGem.Todo("cellGemGetInfo(info=*0x%x)", info);
|
||||
|
||||
// TODO: Support many controllers to be connected
|
||||
*info = {};
|
||||
const auto gem = fxm::get<gem_t>();
|
||||
|
||||
if (!gem)
|
||||
{
|
||||
return CELL_GEM_ERROR_UNINITIALIZED;
|
||||
}
|
||||
|
||||
// TODO: Support connecting PlayStation Move controllers
|
||||
info->max_connect = gem->attribute.max_connect;
|
||||
info->now_connect = 0;
|
||||
|
||||
for (int i = 0; i < CELL_GEM_MAX_NUM; i++)
|
||||
{
|
||||
info->status[i] = CELL_GEM_STATUS_DISCONNECTED;
|
||||
}
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
@ -160,10 +185,19 @@ s32 cellGemHSVtoRGB()
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
s32 cellGemInit(vm::ptr<CellGemAttribute> attribute)
|
||||
s32 cellGemInit(vm::cptr<CellGemAttribute> attribute)
|
||||
{
|
||||
cellGem.Warning("cellGemInit(attribute=*0x%x)", attribute);
|
||||
|
||||
const auto gem = fxm::make<gem_t>();
|
||||
|
||||
if (!gem)
|
||||
{
|
||||
return CELL_GEM_ERROR_ALREADY_INITIALIZED;
|
||||
}
|
||||
|
||||
gem->attribute = *attribute;
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue