mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-20 11:36:13 +00:00
Merge pull request #1021 from tambry/Things
Improvements in cellSearch, cellUsbd and cellRudp
This commit is contained in:
commit
dc90ab3cee
19 changed files with 479 additions and 133 deletions
|
@ -3,7 +3,7 @@
|
|||
|
||||
class KeyboardManager
|
||||
{
|
||||
bool m_inited;
|
||||
bool m_inited = false;
|
||||
std::unique_ptr<KeyboardHandlerBase> m_keyboard_handler;
|
||||
|
||||
public:
|
||||
|
|
|
@ -562,13 +562,10 @@ int cellCameraRemoveNotifyEventQueue2()
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void cellCamera_unload()
|
||||
{
|
||||
cellCameraInstance.m_bInitialized = false;
|
||||
}
|
||||
|
||||
Module cellCamera("cellCamera", []()
|
||||
{
|
||||
cellCameraInstance.m_bInitialized = false;
|
||||
|
||||
REG_FUNC(cellCamera, cellCameraInit);
|
||||
REG_FUNC(cellCamera, cellCameraEnd);
|
||||
REG_FUNC(cellCamera, cellCameraOpen);
|
||||
|
|
|
@ -382,14 +382,11 @@ int cellGemWriteExternalPort()
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void cellGem_unload()
|
||||
{
|
||||
cellGemInstance.m_bInitialized = false;
|
||||
}
|
||||
|
||||
Module cellGem("cellGem", []()
|
||||
{
|
||||
//cellGem.AddFunc(, cellGemAttributeInit);
|
||||
cellGemInstance.m_bInitialized = false;
|
||||
|
||||
//REG_FUNC(cellGem, cellGemAttributeInit);
|
||||
REG_FUNC(cellGem, cellGemCalibrate);
|
||||
REG_FUNC(cellGem, cellGemClearStatusFlags);
|
||||
REG_FUNC(cellGem, cellGemConvertVideoFinish);
|
||||
|
@ -413,21 +410,21 @@ Module cellGem("cellGem", []()
|
|||
REG_FUNC(cellGem, cellGemGetState);
|
||||
REG_FUNC(cellGem, cellGemGetStatusFlags);
|
||||
REG_FUNC(cellGem, cellGemGetTrackerHue);
|
||||
//cellGem.AddFunc(, cellGemGetVideoConvertSize);
|
||||
//REG_FUNC(cellGem, cellGemGetVideoConvertSize);
|
||||
REG_FUNC(cellGem, cellGemHSVtoRGB);
|
||||
REG_FUNC(cellGem, cellGemInit);
|
||||
REG_FUNC(cellGem, cellGemInvalidateCalibration);
|
||||
REG_FUNC(cellGem, cellGemIsTrackableHue);
|
||||
REG_FUNC(cellGem, cellGemPrepareCamera);
|
||||
REG_FUNC(cellGem, cellGemPrepareVideoConvert);
|
||||
//cellGem.AddFunc(, cellGemReadExternalPortDeviceInfo);
|
||||
//REG_FUNC(cellGem, cellGemReadExternalPortDeviceInfo);
|
||||
REG_FUNC(cellGem, cellGemReset);
|
||||
REG_FUNC(cellGem, cellGemSetRumble);
|
||||
REG_FUNC(cellGem, cellGemSetYaw);
|
||||
REG_FUNC(cellGem, cellGemTrackHues);
|
||||
REG_FUNC(cellGem, cellGemUpdateFinish);
|
||||
REG_FUNC(cellGem, cellGemUpdateStart);
|
||||
//cellGem.AddFunc(, cellGemVideoConvertAttributeInit);
|
||||
//cellGem.AddFunc(, cellGemVideoConvertAttributeInitRgba);
|
||||
//REG_FUNC(cellGem, cellGemVideoConvertAttributeInit);
|
||||
//REG_FUNC(cellGem, cellGemVideoConvertAttributeInitRgba);
|
||||
REG_FUNC(cellGem, cellGemWriteExternalPort);
|
||||
});
|
||||
|
|
|
@ -17,16 +17,16 @@ struct cellMicInternal
|
|||
}
|
||||
};
|
||||
|
||||
cellMicInternal CellMicInstance;
|
||||
cellMicInternal cellMicInstance;
|
||||
|
||||
int cellMicInit()
|
||||
{
|
||||
cellMic.Warning("cellMicInit()");
|
||||
|
||||
if (CellMicInstance.m_bCellMicInitialized)
|
||||
if (cellMicInstance.m_bCellMicInitialized)
|
||||
return CELL_MICIN_ERROR_ALREADY_INIT;
|
||||
|
||||
CellMicInstance.m_bCellMicInitialized = true;
|
||||
cellMicInstance.m_bCellMicInitialized = true;
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
@ -35,10 +35,10 @@ int cellMicEnd()
|
|||
{
|
||||
cellMic.Warning("cellMicEnd()");
|
||||
|
||||
if (!CellMicInstance.m_bCellMicInitialized)
|
||||
if (!cellMicInstance.m_bCellMicInitialized)
|
||||
return CELL_MICIN_ERROR_NOT_INIT;
|
||||
|
||||
CellMicInstance.m_bCellMicInitialized = false;
|
||||
cellMicInstance.m_bCellMicInitialized = false;
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
@ -283,13 +283,10 @@ int cellMicGetDeviceIdentifier()
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void cellMic_unload()
|
||||
{
|
||||
CellMicInstance.m_bCellMicInitialized = false;
|
||||
}
|
||||
|
||||
Module cellMic("cellMic", []()
|
||||
{
|
||||
cellMicInstance.m_bCellMicInitialized = false;
|
||||
|
||||
REG_FUNC(cellMic, cellMicInit);
|
||||
REG_FUNC(cellMic, cellMicEnd);
|
||||
REG_FUNC(cellMic, cellMicOpen);
|
||||
|
|
|
@ -118,13 +118,10 @@ int cellNetCtlGetNatInfo(vm::ptr<CellNetCtlNatInfo> natInfo)
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void cellNetCtl_unload()
|
||||
{
|
||||
cellNetCtlInstance.m_bInitialized = false;
|
||||
}
|
||||
|
||||
Module cellNetCtl("cellNetCtl", []()
|
||||
{
|
||||
cellNetCtlInstance.m_bInitialized = false;
|
||||
|
||||
REG_FUNC(cellNetCtl, cellNetCtlInit);
|
||||
REG_FUNC(cellNetCtl, cellNetCtlTerm);
|
||||
|
||||
|
|
|
@ -2,62 +2,43 @@
|
|||
#include "Emu/Memory/Memory.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Emu/SysCalls/Modules.h"
|
||||
#include "cellRudp.h"
|
||||
|
||||
extern Module cellRudp;
|
||||
|
||||
// Return Codes
|
||||
enum
|
||||
struct cellRudpInternal
|
||||
{
|
||||
CELL_RUDP_SUCCESS = 0,
|
||||
CELL_RUDP_ERROR_NOT_INITIALIZED = 0x80770001,
|
||||
CELL_RUDP_ERROR_ALREADY_INITIALIZED = 0x80770002,
|
||||
CELL_RUDP_ERROR_INVALID_CONTEXT_ID = 0x80770003,
|
||||
CELL_RUDP_ERROR_INVALID_ARGUMENT = 0x80770004,
|
||||
CELL_RUDP_ERROR_INVALID_OPTION = 0x80770005,
|
||||
CELL_RUDP_ERROR_INVALID_MUXMODE = 0x80770006,
|
||||
CELL_RUDP_ERROR_MEMORY = 0x80770007,
|
||||
CELL_RUDP_ERROR_INTERNAL = 0x80770008,
|
||||
CELL_RUDP_ERROR_CONN_RESET = 0x80770009,
|
||||
CELL_RUDP_ERROR_CONN_REFUSED = 0x8077000a,
|
||||
CELL_RUDP_ERROR_CONN_TIMEOUT = 0x8077000b,
|
||||
CELL_RUDP_ERROR_CONN_VERSION_MISMATCH = 0x8077000c,
|
||||
CELL_RUDP_ERROR_CONN_TRANSPORT_TYPE_MISMATCH = 0x8077000d,
|
||||
CELL_RUDP_ERROR_QUALITY_LEVEL_MISMATCH = 0x8077000e,
|
||||
CELL_RUDP_ERROR_THREAD = 0x8077000f,
|
||||
CELL_RUDP_ERROR_THREAD_IN_USE = 0x80770010,
|
||||
CELL_RUDP_ERROR_NOT_ACCEPTABLE = 0x80770011,
|
||||
CELL_RUDP_ERROR_MSG_TOO_LARGE = 0x80770012,
|
||||
CELL_RUDP_ERROR_NOT_BOUND = 0x80770013,
|
||||
CELL_RUDP_ERROR_CANCELLED = 0x80770014,
|
||||
CELL_RUDP_ERROR_INVALID_VPORT = 0x80770015,
|
||||
CELL_RUDP_ERROR_WOULDBLOCK = 0x80770016,
|
||||
CELL_RUDP_ERROR_VPORT_IN_USE = 0x80770017,
|
||||
CELL_RUDP_ERROR_VPORT_EXHAUSTED = 0x80770018,
|
||||
CELL_RUDP_ERROR_INVALID_SOCKET = 0x80770019,
|
||||
CELL_RUDP_ERROR_BUFFER_TOO_SMALL = 0x8077001a,
|
||||
CELL_RUDP_ERROR_MSG_MALFORMED = 0x8077001b,
|
||||
CELL_RUDP_ERROR_ADDR_IN_USE = 0x8077001c,
|
||||
CELL_RUDP_ERROR_ALREADY_BOUND = 0x8077001d,
|
||||
CELL_RUDP_ERROR_ALREADY_EXISTS = 0x8077001e,
|
||||
CELL_RUDP_ERROR_INVALID_POLL_ID = 0x8077001f,
|
||||
CELL_RUDP_ERROR_TOO_MANY_CONTEXTS = 0x80770020,
|
||||
CELL_RUDP_ERROR_IN_PROGRESS = 0x80770021,
|
||||
CELL_RUDP_ERROR_NO_EVENT_HANDLER = 0x80770022,
|
||||
CELL_RUDP_ERROR_PAYLOAD_TOO_LARGE = 0x80770023,
|
||||
CELL_RUDP_ERROR_END_OF_DATA = 0x80770024,
|
||||
CELL_RUDP_ERROR_ALREADY_ESTABLISHED = 0x80770025,
|
||||
CELL_RUDP_ERROR_KEEP_ALIVE_FAILURE = 0x80770026,
|
||||
bool m_bInitialized;
|
||||
|
||||
cellRudpInternal()
|
||||
: m_bInitialized(false)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
s32 cellRudpInit()
|
||||
cellRudpInternal cellRudpInstance;
|
||||
|
||||
s32 cellRudpInit(vm::ptr<CellRudpAllocator> allocator)
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellRudp);
|
||||
cellRudp.Warning("cellRudpInit()");
|
||||
|
||||
if (cellRudpInstance.m_bInitialized)
|
||||
return CELL_RUDP_ERROR_ALREADY_INITIALIZED;
|
||||
|
||||
cellRudpInstance.m_bInitialized = true;
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
s32 cellRudpEnd()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellRudp);
|
||||
cellRudp.Log("cellRudpInit()");
|
||||
|
||||
if (!cellRudpInstance.m_bInitialized)
|
||||
return CELL_RUDP_ERROR_NOT_INITIALIZED;
|
||||
|
||||
cellRudpInstance.m_bInitialized = false;
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
|
@ -219,6 +200,8 @@ s32 cellRudpProcessEvents()
|
|||
|
||||
Module cellRudp("cellRudp", []()
|
||||
{
|
||||
cellRudpInstance.m_bInitialized = false;
|
||||
|
||||
REG_FUNC(cellRudp, cellRudpInit);
|
||||
REG_FUNC(cellRudp, cellRudpEnd);
|
||||
REG_FUNC(cellRudp, cellRudpEnableInternalIOThread);
|
||||
|
|
52
rpcs3/Emu/SysCalls/Modules/cellRudp.h
Normal file
52
rpcs3/Emu/SysCalls/Modules/cellRudp.h
Normal file
|
@ -0,0 +1,52 @@
|
|||
// Return Codes
|
||||
enum
|
||||
{
|
||||
CELL_RUDP_SUCCESS = 0,
|
||||
CELL_RUDP_ERROR_NOT_INITIALIZED = 0x80770001,
|
||||
CELL_RUDP_ERROR_ALREADY_INITIALIZED = 0x80770002,
|
||||
CELL_RUDP_ERROR_INVALID_CONTEXT_ID = 0x80770003,
|
||||
CELL_RUDP_ERROR_INVALID_ARGUMENT = 0x80770004,
|
||||
CELL_RUDP_ERROR_INVALID_OPTION = 0x80770005,
|
||||
CELL_RUDP_ERROR_INVALID_MUXMODE = 0x80770006,
|
||||
CELL_RUDP_ERROR_MEMORY = 0x80770007,
|
||||
CELL_RUDP_ERROR_INTERNAL = 0x80770008,
|
||||
CELL_RUDP_ERROR_CONN_RESET = 0x80770009,
|
||||
CELL_RUDP_ERROR_CONN_REFUSED = 0x8077000a,
|
||||
CELL_RUDP_ERROR_CONN_TIMEOUT = 0x8077000b,
|
||||
CELL_RUDP_ERROR_CONN_VERSION_MISMATCH = 0x8077000c,
|
||||
CELL_RUDP_ERROR_CONN_TRANSPORT_TYPE_MISMATCH = 0x8077000d,
|
||||
CELL_RUDP_ERROR_QUALITY_LEVEL_MISMATCH = 0x8077000e,
|
||||
CELL_RUDP_ERROR_THREAD = 0x8077000f,
|
||||
CELL_RUDP_ERROR_THREAD_IN_USE = 0x80770010,
|
||||
CELL_RUDP_ERROR_NOT_ACCEPTABLE = 0x80770011,
|
||||
CELL_RUDP_ERROR_MSG_TOO_LARGE = 0x80770012,
|
||||
CELL_RUDP_ERROR_NOT_BOUND = 0x80770013,
|
||||
CELL_RUDP_ERROR_CANCELLED = 0x80770014,
|
||||
CELL_RUDP_ERROR_INVALID_VPORT = 0x80770015,
|
||||
CELL_RUDP_ERROR_WOULDBLOCK = 0x80770016,
|
||||
CELL_RUDP_ERROR_VPORT_IN_USE = 0x80770017,
|
||||
CELL_RUDP_ERROR_VPORT_EXHAUSTED = 0x80770018,
|
||||
CELL_RUDP_ERROR_INVALID_SOCKET = 0x80770019,
|
||||
CELL_RUDP_ERROR_BUFFER_TOO_SMALL = 0x8077001a,
|
||||
CELL_RUDP_ERROR_MSG_MALFORMED = 0x8077001b,
|
||||
CELL_RUDP_ERROR_ADDR_IN_USE = 0x8077001c,
|
||||
CELL_RUDP_ERROR_ALREADY_BOUND = 0x8077001d,
|
||||
CELL_RUDP_ERROR_ALREADY_EXISTS = 0x8077001e,
|
||||
CELL_RUDP_ERROR_INVALID_POLL_ID = 0x8077001f,
|
||||
CELL_RUDP_ERROR_TOO_MANY_CONTEXTS = 0x80770020,
|
||||
CELL_RUDP_ERROR_IN_PROGRESS = 0x80770021,
|
||||
CELL_RUDP_ERROR_NO_EVENT_HANDLER = 0x80770022,
|
||||
CELL_RUDP_ERROR_PAYLOAD_TOO_LARGE = 0x80770023,
|
||||
CELL_RUDP_ERROR_END_OF_DATA = 0x80770024,
|
||||
CELL_RUDP_ERROR_ALREADY_ESTABLISHED = 0x80770025,
|
||||
CELL_RUDP_ERROR_KEEP_ALIVE_FAILURE = 0x80770026,
|
||||
};
|
||||
|
||||
typedef vm::ptr<u32>(CellRudpAllocatorFuncAlloc)(u32 size);
|
||||
typedef u32(CellRudpAllocatorFuncFree)(vm::ptr<u32> ptr);
|
||||
|
||||
struct CellRudpAllocator
|
||||
{
|
||||
vm::ptr<CellRudpAllocatorFuncAlloc> app_malloc;
|
||||
vm::ptr<CellRudpAllocatorFuncFree> app_free;
|
||||
};
|
|
@ -2,6 +2,7 @@
|
|||
#include "Emu/Memory/Memory.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Emu/SysCalls/Modules.h"
|
||||
#include "cellScreenshot.h"
|
||||
|
||||
extern Module cellScreenshot;
|
||||
|
||||
|
|
|
@ -2,44 +2,49 @@
|
|||
#include "Emu/Memory/Memory.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Emu/SysCalls/Modules.h"
|
||||
#include "cellSearch.h"
|
||||
|
||||
extern Module cellSearch;
|
||||
|
||||
// Error Codes
|
||||
enum
|
||||
struct cellSearchInternal
|
||||
{
|
||||
CELL_SEARCH_OK = 0,
|
||||
CELL_SEARCH_CANCELED = 1,
|
||||
CELL_SEARCH_ERROR_PARAM = 0x8002C801,
|
||||
CELL_SEARCH_ERROR_BUSY = 0x8002C802,
|
||||
CELL_SEARCH_ERROR_NO_MEMORY = 0x8002C803,
|
||||
CELL_SEARCH_ERROR_UNKNOWN_MODE = 0x8002C804,
|
||||
CELL_SEARCH_ERROR_ALREADY_INITIALIZED = 0x8002C805,
|
||||
CELL_SEARCH_ERROR_NOT_INITIALIZED = 0x8002C806,
|
||||
CELL_SEARCH_ERROR_FINALIZING = 0x8002C807,
|
||||
CELL_SEARCH_ERROR_NOT_SUPPORTED_SEARCH = 0x8002C808,
|
||||
CELL_SEARCH_ERROR_CONTENT_OBSOLETE = 0x8002C809,
|
||||
CELL_SEARCH_ERROR_CONTENT_NOT_FOUND = 0x8002C80A,
|
||||
CELL_SEARCH_ERROR_NOT_LIST = 0x8002C80B,
|
||||
CELL_SEARCH_ERROR_OUT_OF_RANGE = 0x8002C80C,
|
||||
CELL_SEARCH_ERROR_INVALID_SEARCHID = 0x8002C80D,
|
||||
CELL_SEARCH_ERROR_ALREADY_GOT_RESULT = 0x8002C80E,
|
||||
CELL_SEARCH_ERROR_NOT_SUPPORTED_CONTEXT = 0x8002C80F,
|
||||
CELL_SEARCH_ERROR_INVALID_CONTENTTYPE = 0x8002C810,
|
||||
CELL_SEARCH_ERROR_DRM = 0x8002C811,
|
||||
CELL_SEARCH_ERROR_TAG = 0x8002C812,
|
||||
CELL_SEARCH_ERROR_GENERIC = 0x8002C8FF,
|
||||
bool m_bInitialized;
|
||||
|
||||
cellSearchInternal()
|
||||
: m_bInitialized(false)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
s32 cellSearchInitialize()
|
||||
cellSearchInternal cellSearchInstance;
|
||||
|
||||
s32 cellSearchInitialize(CellSearchMode mode, u32 container, vm::ptr<CellSearchSystemCallback> func, vm::ptr<u32> userData)
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellSearch);
|
||||
cellSearch.Todo("cellSearchInitialize()");
|
||||
|
||||
if (cellSearchInstance.m_bInitialized)
|
||||
return CELL_SEARCH_ERROR_ALREADY_INITIALIZED;
|
||||
if (mode != 0)
|
||||
return CELL_SEARCH_ERROR_UNKNOWN_MODE;
|
||||
if (!func)
|
||||
return CELL_SEARCH_ERROR_PARAM;
|
||||
|
||||
cellSearchInstance.m_bInitialized = true;
|
||||
|
||||
// TODO: Store the arguments somewhere so we can use them later.
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
s32 cellSearchFinalize()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellSearch);
|
||||
cellSearch.Log("cellSearchFinalize()");
|
||||
|
||||
if (!cellSearchInstance.m_bInitialized)
|
||||
return CELL_SEARCH_ERROR_NOT_INITIALIZED;
|
||||
|
||||
cellSearchInstance.m_bInitialized = false;
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
|
@ -153,6 +158,8 @@ s32 cellSearchEnd()
|
|||
|
||||
Module cellSearch("cellSearch", []()
|
||||
{
|
||||
cellSearchInstance.m_bInitialized = false;
|
||||
|
||||
REG_FUNC(cellSearch, cellSearchInitialize);
|
||||
REG_FUNC(cellSearch, cellSearchFinalize);
|
||||
REG_FUNC(cellSearch, cellSearchStartListSearch);
|
||||
|
|
302
rpcs3/Emu/SysCalls/Modules/cellSearch.h
Normal file
302
rpcs3/Emu/SysCalls/Modules/cellSearch.h
Normal file
|
@ -0,0 +1,302 @@
|
|||
// Error Codes
|
||||
enum
|
||||
{
|
||||
CELL_SEARCH_OK = 0,
|
||||
CELL_SEARCH_CANCELED = 1,
|
||||
CELL_SEARCH_ERROR_PARAM = 0x8002C801,
|
||||
CELL_SEARCH_ERROR_BUSY = 0x8002C802,
|
||||
CELL_SEARCH_ERROR_NO_MEMORY = 0x8002C803,
|
||||
CELL_SEARCH_ERROR_UNKNOWN_MODE = 0x8002C804,
|
||||
CELL_SEARCH_ERROR_ALREADY_INITIALIZED = 0x8002C805,
|
||||
CELL_SEARCH_ERROR_NOT_INITIALIZED = 0x8002C806,
|
||||
CELL_SEARCH_ERROR_FINALIZING = 0x8002C807,
|
||||
CELL_SEARCH_ERROR_NOT_SUPPORTED_SEARCH = 0x8002C808,
|
||||
CELL_SEARCH_ERROR_CONTENT_OBSOLETE = 0x8002C809,
|
||||
CELL_SEARCH_ERROR_CONTENT_NOT_FOUND = 0x8002C80A,
|
||||
CELL_SEARCH_ERROR_NOT_LIST = 0x8002C80B,
|
||||
CELL_SEARCH_ERROR_OUT_OF_RANGE = 0x8002C80C,
|
||||
CELL_SEARCH_ERROR_INVALID_SEARCHID = 0x8002C80D,
|
||||
CELL_SEARCH_ERROR_ALREADY_GOT_RESULT = 0x8002C80E,
|
||||
CELL_SEARCH_ERROR_NOT_SUPPORTED_CONTEXT = 0x8002C80F,
|
||||
CELL_SEARCH_ERROR_INVALID_CONTENTTYPE = 0x8002C810,
|
||||
CELL_SEARCH_ERROR_DRM = 0x8002C811,
|
||||
CELL_SEARCH_ERROR_TAG = 0x8002C812,
|
||||
CELL_SEARCH_ERROR_GENERIC = 0x8002C8FF,
|
||||
};
|
||||
|
||||
typedef be_t<s32> CellSearchId;
|
||||
|
||||
// Constants
|
||||
enum
|
||||
{
|
||||
CELL_SEARCH_CONTENT_ID_SIZE = 16,
|
||||
CELL_SEARCH_TITLE_LEN_MAX = 384,
|
||||
CELL_SEARCH_TAG_NUM_MAX = 6,
|
||||
CELL_SEARCH_TAG_LEN_MAX = 63,
|
||||
CELL_MUSIC_SELECTION_CONTEXT_SIZE = 2048,
|
||||
CELL_SEARCH_PATH_LEN_MAX = 63,
|
||||
CELL_SEARCH_MTOPTION_LEN_MAX = 63,
|
||||
};
|
||||
|
||||
// Sort keys
|
||||
enum
|
||||
{
|
||||
CELL_SEARCH_SORTKEY_NONE = 0,
|
||||
CELL_SEARCH_SORTKEY_DEFAULT = 1,
|
||||
CELL_SEARCH_SORTKEY_TITLE = 2,
|
||||
CELL_SEARCH_SORTKEY_ALBUMTITLE = 3,
|
||||
CELL_SEARCH_SORTKEY_GENRENAME = 4,
|
||||
CELL_SEARCH_SORTKEY_ARTISTNAME = 5,
|
||||
CELL_SEARCH_SORTKEY_IMPORTEDDATE = 6,
|
||||
CELL_SEARCH_SORTKEY_TRACKNUMBER = 7,
|
||||
CELL_SEARCH_SORTKEY_TAKENDATE = 8,
|
||||
CELL_SEARCH_SORTKEY_USERDEFINED = 9,
|
||||
CELL_SEARCH_SORTKEY_MODIFIEDDATE = 10,
|
||||
};
|
||||
|
||||
// Sort order
|
||||
enum
|
||||
{
|
||||
CELL_SEARCH_SORTORDER_NONE = 0,
|
||||
CELL_SEARCH_SORTORDER_ASCENDING = 1,
|
||||
CELL_SEARCH_SOFTORDER_DESCENDING = 2,
|
||||
};
|
||||
|
||||
// Content types
|
||||
enum
|
||||
{
|
||||
CELL_SEARCH_CONTENTTYPE_NONE = 0,
|
||||
CELL_SEARCH_CONTENTTYPE_MUSIC = 1,
|
||||
CELL_SEARCH_CONTENTTYPE_MUSICLIST = 2,
|
||||
CELL_SEARCH_CONTENTTYPE_PHOTO = 3,
|
||||
CELL_SEARCH_CONTENTTYPE_PHOTOLIST = 4,
|
||||
CELL_SEARCH_CONTENTTYPE_VIDEO = 5,
|
||||
CELL_SEARCH_CONTENTTYPE_VIDEOLIST = 6,
|
||||
CELL_SEARCH_CONTENTTYPE_SCENE = 7,
|
||||
};
|
||||
|
||||
// Codecs
|
||||
enum CellSearchCodec
|
||||
{
|
||||
CELL_SEARCH_CODEC_UNKNOWN = 0,
|
||||
CELL_SEARCH_CODEC_MPEG2 = 1,
|
||||
CELL_SEARCH_CODEC_MPEG4 = 2,
|
||||
CELL_SEARCH_CODEC_AVC = 3,
|
||||
CELL_SEARCH_CODEC_MPEG1 = 4,
|
||||
CELL_SEARCH_CODEC_AT3 = 5,
|
||||
CELL_SEARCH_CODEC_AT3P = 6,
|
||||
CELL_SEARCH_CODEC_ATALL = 7,
|
||||
CELL_SEARCH_CODEC_MP3 = 8,
|
||||
CELL_SEARCH_CODEC_AAC = 9,
|
||||
CELL_SEARCH_CODEC_LPCM = 10,
|
||||
CELL_SEARCH_CODEC_WAV = 11,
|
||||
CELL_SEARCH_CODEC_WMA = 12,
|
||||
CELL_SEARCH_CODEC_JPEG = 13,
|
||||
CELL_SEARCH_CODEC_PNG = 14,
|
||||
CELL_SEARCH_CODEC_TIFF = 15,
|
||||
CELL_SEARCH_CODEC_BMP = 16,
|
||||
CELL_SEARCH_CODEC_GIF = 17,
|
||||
CELL_SEARCH_CODEC_MPEG2_TS = 18,
|
||||
CELL_SEARCH_CODEC_DSD = 19,
|
||||
CELL_SEARCH_CODEC_AC3 = 20,
|
||||
CELL_SEARCH_CODEC_MPEG1_LAYER1 = 21,
|
||||
CELL_SEARCH_CODEC_MPEG1_LAYER2 = 22,
|
||||
CELL_SEARCH_CODEC_MPEG1_LAYER3 = 23,
|
||||
CELL_SEARCH_CODEC_MPEG2_LAYER1 = 24,
|
||||
CELL_SEARCH_CODEC_MPEG2_LAYER2 = 25,
|
||||
CELL_SEARCH_CODEC_MPEG2_LAYER3 = 26,
|
||||
CELL_SEARCH_CODEC_MOTIONJPEG = 27,
|
||||
CELL_SEARCH_CODEC_MPO = 28,
|
||||
};
|
||||
|
||||
// Scene types
|
||||
enum CellSearchSceneType
|
||||
{
|
||||
CELL_SEARCH_SCENETYPE_NONE = 0,
|
||||
CELL_SEARCH_SCENETYPE_CHAPTER = 1,
|
||||
CELL_SEARCH_SCENETYPE_CLIP_HIGHLIGHT = 2,
|
||||
CELL_SEARCH_SCENETYPE_CLIP_USER = 3,
|
||||
};
|
||||
|
||||
// List types
|
||||
enum CellSearchListType
|
||||
{
|
||||
CELL_SEARCH_LISTTYPE_MUSIC_ALBUM = 1,
|
||||
CELL_SEARCH_LISTTYPE_MUSIC_GENRE = 2,
|
||||
CELL_SEARCH_LISTTYPE_MUSIC_ARTIST = 3,
|
||||
CELL_SEARCH_LISTTYPE_MUSIC_PLAYLIST = 9,
|
||||
};
|
||||
|
||||
// Content status
|
||||
enum CellSearchContentStatus
|
||||
{
|
||||
CELL_SEARCH_CONTENTSTATUS_AVAILABLE,
|
||||
CELL_SEARCH_CONTENTSTATUS_NOT_SUPPORTED,
|
||||
CELL_SEARCH_CONTENTSTATUS_BROKEN,
|
||||
};
|
||||
|
||||
// Search orientation
|
||||
enum CellSearchOrientation
|
||||
{
|
||||
CELL_SEARCH_ORIENTATION_UNKNOWN,
|
||||
CELL_SEARCH_ORIENTATION_TOP_LEFT,
|
||||
CELL_SEARCH_ORIENTATION_TOP_RIGHT,
|
||||
CELL_SEARCH_ORIENTATION_BOTTOM_RIGHT,
|
||||
CELL_SEARCH_ORIENTATION_BOTTOM_LEFT,
|
||||
};
|
||||
|
||||
// Search modes
|
||||
enum CellSearchMode
|
||||
{
|
||||
CELL_SEARCH_MODE_NORMAL = 0,
|
||||
};
|
||||
|
||||
// Search events
|
||||
enum CellSearchEvent
|
||||
{
|
||||
CELL_SEARCH_EVENT_NOTIFICATION = 0,
|
||||
CELL_SEARCH_EVENT_INITIALIZE_RESULT,
|
||||
CELL_SEARCH_EVENT_FINALIZE_RESULT,
|
||||
CELL_SEARCH_EVENT_LISTSEARCH_RESULT,
|
||||
CELL_SEARCH_EVENT_CONTENTSEARCH_INLIST_RESULT,
|
||||
CELL_SEARCH_EVENT_CONTENTSEARCH_RESULT,
|
||||
CELL_SEARCH_EVENT_SCENESEARCH_INVIDEO_RESULT,
|
||||
CELL_SEARCH_EVENT_SCENESEARCH_RESULT,
|
||||
};
|
||||
|
||||
typedef void(CellSearchSystemCallback)(CellSearchEvent event, s32 result, vm::ptr<const u32> param, vm::ptr<u32> userData);
|
||||
|
||||
struct CellSearchContentId
|
||||
{
|
||||
char data[CELL_SEARCH_CONTENT_ID_SIZE];
|
||||
};
|
||||
|
||||
struct CellSearchResultParam
|
||||
{
|
||||
be_t<CellSearchId> searchId;
|
||||
be_t<u32> resultNum;
|
||||
};
|
||||
|
||||
struct CellSearchMusicListInfo
|
||||
{
|
||||
be_t<CellSearchListType> listType;
|
||||
be_t<u32> numOfItems;
|
||||
be_t<s64> duration;
|
||||
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
|
||||
char reserved[3];
|
||||
char artistName[CELL_SEARCH_TITLE_LEN_MAX + 1];
|
||||
char reserved2[3];
|
||||
};
|
||||
|
||||
struct CellSearchPhotoListInfo
|
||||
{
|
||||
be_t<CellSearchListType> listType;
|
||||
be_t<u32> numOfItems;
|
||||
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
|
||||
char reserved[3];
|
||||
};
|
||||
|
||||
struct CellSearchVideoListInfo
|
||||
{
|
||||
be_t<CellSearchListType> listType;
|
||||
be_t<u32> numOfItems;
|
||||
be_t<s64> duration;
|
||||
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
|
||||
char reserved[3];
|
||||
};
|
||||
|
||||
struct CellSearchMusicInfo
|
||||
{
|
||||
be_t<s64> duration;
|
||||
be_t<s64> size;
|
||||
be_t<s64> importedDate;
|
||||
be_t<s64> lastPlayedDate;
|
||||
be_t<s32> releasedYear;
|
||||
be_t<s32> trackNumber;
|
||||
be_t<s32> bitrate;
|
||||
be_t<s32> samplingRate;
|
||||
be_t<s32> quantizationBitrate;
|
||||
be_t<s32> playCount;
|
||||
be_t<s32> drmEncrypted;
|
||||
be_t<CellSearchCodec> codec;
|
||||
be_t<CellSearchContentStatus> status;
|
||||
char diskNumber[8];
|
||||
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
|
||||
char reserved[3];
|
||||
char albumTitle[CELL_SEARCH_TITLE_LEN_MAX + 1];
|
||||
char reserved2[3];
|
||||
char artistName[CELL_SEARCH_TITLE_LEN_MAX + 1];
|
||||
char reserved3[3];
|
||||
char genreName[CELL_SEARCH_TITLE_LEN_MAX + 1];
|
||||
char reserved4[3];
|
||||
};
|
||||
|
||||
struct CellSearchPhotoInfo
|
||||
{
|
||||
be_t<s64> size;
|
||||
be_t<s64> importedDate;
|
||||
be_t<s64> takenDate;
|
||||
be_t<s32> width;
|
||||
be_t<s32> height;
|
||||
be_t<CellSearchOrientation> orientation;
|
||||
be_t<CellSearchCodec> codec;
|
||||
be_t<CellSearchContentStatus> status;
|
||||
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
|
||||
char reserved[3];
|
||||
char albumTitle[CELL_SEARCH_TITLE_LEN_MAX + 1];
|
||||
char reserved2[3];
|
||||
};
|
||||
|
||||
struct CellSearchVideoInfo
|
||||
{
|
||||
be_t<s64> duration;
|
||||
be_t<s64> size;
|
||||
be_t<s64> importedDate;
|
||||
be_t<s64> takenDate;
|
||||
be_t<s32> videoBitrate;
|
||||
be_t<s32> audioBitrate;
|
||||
be_t<s32> playCount;
|
||||
be_t<s32> drmEncrypted;
|
||||
be_t<CellSearchCodec> videoCodec;
|
||||
be_t<CellSearchCodec> audioCodec;
|
||||
be_t<CellSearchContentStatus> status;
|
||||
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
|
||||
char reserved[3];
|
||||
char albumTitle[CELL_SEARCH_TITLE_LEN_MAX + 1];
|
||||
char reserved2[3];
|
||||
};
|
||||
|
||||
struct CellSearchVideoSceneInfo
|
||||
{
|
||||
be_t<CellSearchSceneType> sceneType;
|
||||
be_t<s64> startTime_ms;
|
||||
be_t<s64> endTime_ms;
|
||||
be_t<CellSearchContentId> videoId;
|
||||
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
|
||||
char reserved[3];
|
||||
char tags[CELL_SEARCH_TAG_NUM_MAX][CELL_SEARCH_TAG_LEN_MAX];
|
||||
};
|
||||
|
||||
struct CellMusicSelectionContext
|
||||
{
|
||||
char data[CELL_MUSIC_SELECTION_CONTEXT_SIZE];
|
||||
};
|
||||
|
||||
struct CellSearchContentInfoPath
|
||||
{
|
||||
char contentPath[CELL_SEARCH_PATH_LEN_MAX + 1];
|
||||
char thumbnailPath[CELL_SEARCH_PATH_LEN_MAX + 1];
|
||||
};
|
||||
|
||||
struct CellSearchContentInfoPathMovieThumb
|
||||
{
|
||||
char movieThumbnailPath[CELL_SEARCH_PATH_LEN_MAX + 1];
|
||||
char movieThumbnailOption[CELL_SEARCH_MTOPTION_LEN_MAX + 1];
|
||||
};
|
||||
|
||||
struct CellSearchTimeInfo
|
||||
{
|
||||
be_t<s64> takenDate;
|
||||
be_t<s64> importedDate;
|
||||
be_t<s64> modifiedDate;
|
||||
};
|
|
@ -2,20 +2,43 @@
|
|||
#include "Emu/Memory/Memory.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Emu/SysCalls/Modules.h"
|
||||
|
||||
#include "cellUsbd.h"
|
||||
|
||||
extern Module cellUsbd;
|
||||
|
||||
struct cellUsbdInternal
|
||||
{
|
||||
bool m_bInitialized;
|
||||
|
||||
cellUsbdInternal()
|
||||
: m_bInitialized(false)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
cellUsbdInternal cellUsbdInstance;
|
||||
|
||||
s32 cellUsbdInit()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellUsbd);
|
||||
cellUsbd.Log("cellUsbdInit()");
|
||||
|
||||
if (cellUsbdInstance.m_bInitialized)
|
||||
return CELL_USBD_ERROR_ALREADY_INITIALIZED;
|
||||
|
||||
cellUsbdInstance.m_bInitialized = true;
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
s32 cellUsbdEnd()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellUsbd);
|
||||
cellUsbd.Log("cellUsbdEnd()");
|
||||
|
||||
if (!cellUsbdInstance.m_bInitialized)
|
||||
return CELL_USBD_ERROR_NOT_INITIALIZED;
|
||||
|
||||
cellUsbdInstance.m_bInitialized = false;
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
|
@ -153,6 +176,8 @@ s32 cellUsbdFreeMemory()
|
|||
|
||||
Module cellUsbd("cellUsbd", []()
|
||||
{
|
||||
cellUsbdInstance.m_bInitialized = false;
|
||||
|
||||
REG_FUNC(cellUsbd, cellUsbdInit);
|
||||
REG_FUNC(cellUsbd, cellUsbdEnd);
|
||||
|
||||
|
|
|
@ -1634,17 +1634,14 @@ int _sceNpSysutilClientFree()
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void sceNp_unload()
|
||||
Module sceNp("sceNp", []()
|
||||
{
|
||||
sceNpInstance.m_bSceNpInitialized = false;
|
||||
sceNpInstance.m_bSceNp2Initialized = false;
|
||||
sceNpInstance.m_bScoreInitialized = false;
|
||||
sceNpInstance.m_bLookupInitialized = false;
|
||||
sceNpInstance.m_bSceNpUtilBandwidthTestInitialized = false;
|
||||
}
|
||||
|
||||
Module sceNp("sceNp", []()
|
||||
{
|
||||
REG_FUNC(sceNp, sceNpInit);
|
||||
REG_FUNC(sceNp, sceNp2Init);
|
||||
REG_FUNC(sceNp, sceNpUtilBandwidthTestInitStart);
|
||||
|
|
|
@ -427,13 +427,10 @@ int sceNpClansRemoveChallenge()
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void sceNpClans_unload()
|
||||
{
|
||||
sceNpClansInstance.m_bSceNpClansInitialized = false;
|
||||
}
|
||||
|
||||
Module sceNpClans("sceNpClans", []()
|
||||
{
|
||||
sceNpClansInstance.m_bSceNpClansInitialized = false;
|
||||
|
||||
REG_FUNC(sceNpClans, sceNpClansInit);
|
||||
REG_FUNC(sceNpClans, sceNpClansTerm);
|
||||
REG_FUNC(sceNpClans, sceNpClansCreateRequest);
|
||||
|
|
|
@ -312,13 +312,10 @@ int sceNpCommerce2DestroyReq()
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void sceNpCommerce2_unload()
|
||||
{
|
||||
sceNpCommerce2Instance.m_bSceNpCommerce2Initialized = false;
|
||||
}
|
||||
|
||||
Module sceNpCommerce2("sceNpCommerce2", []()
|
||||
{
|
||||
sceNpCommerce2Instance.m_bSceNpCommerce2Initialized = false;
|
||||
|
||||
REG_FUNC(sceNpCommerce2, sceNpCommerce2ExecuteStoreBrowse);
|
||||
REG_FUNC(sceNpCommerce2, sceNpCommerce2GetStoreBrowseUserdata);
|
||||
REG_FUNC(sceNpCommerce2, sceNpCommerce2Init);
|
||||
|
|
|
@ -4,11 +4,6 @@
|
|||
|
||||
extern Module sceNpSns;
|
||||
|
||||
void sceNpSns_unload()
|
||||
{
|
||||
// TODO: Unload SNS module
|
||||
}
|
||||
|
||||
Module sceNpSns("sceNpSns", []()
|
||||
{
|
||||
// TODO: Register SNS module functions here
|
||||
|
|
|
@ -448,13 +448,10 @@ int sceNpTrophyGetGameIcon()
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void sceNpTrophy_unload()
|
||||
{
|
||||
sceNpTrophyInstance.m_bInitialized = false;
|
||||
}
|
||||
|
||||
Module sceNpTrophy("sceNpTrophy", []()
|
||||
{
|
||||
sceNpTrophyInstance.m_bInitialized = false;
|
||||
|
||||
REG_FUNC(sceNpTrophy, sceNpTrophyGetGameProgress);
|
||||
REG_FUNC(sceNpTrophy, sceNpTrophyRegisterContext);
|
||||
REG_FUNC(sceNpTrophy, sceNpTrophyCreateHandle);
|
||||
|
|
|
@ -563,13 +563,10 @@ int sceNpTusDeleteMultiSlotDataVUserAsync()
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
void sceNpTus_unload()
|
||||
{
|
||||
sceNpTusInstance.m_bSceNpTusInitialized = false;
|
||||
}
|
||||
|
||||
Module sceNpTus("sceNpTus", []()
|
||||
{
|
||||
sceNpTusInstance.m_bSceNpTusInitialized = false;
|
||||
|
||||
REG_FUNC(sceNpTus, sceNpTusInit);
|
||||
REG_FUNC(sceNpTus, sceNpTusTerm);
|
||||
REG_FUNC(sceNpTus, sceNpTusCreateTitleCtx);
|
||||
|
|
|
@ -488,8 +488,10 @@
|
|||
<ClInclude Include="Emu\SysCalls\Modules\cellPngDec.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellResc.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellRtc.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellRudp.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellSail.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellScreenshot.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellSearch.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellSpurs.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellSpursJq.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellSubdisplay.h" />
|
||||
|
|
|
@ -1534,5 +1534,11 @@
|
|||
<ClInclude Include="Emu\SysCalls\Modules\cellScreenshot.h">
|
||||
<Filter>Emu\SysCalls\Modules</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellRudp.h">
|
||||
<Filter>Emu\SysCalls\Modules</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellSearch.h">
|
||||
<Filter>Emu\SysCalls\Modules</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
Loading…
Add table
Reference in a new issue