error_code cellSearchStartContentSearchInList(vm::cptr<CellSearchContentId> listId, CellSearchSortKey sortKey, CellSearchSortOrder sortOrder, vm::ptr<CellSearchId> outSearchId) { cellSearch.todo("cellSearchStartContentSearchInList(listId=*0x%x, sortKey=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", listId, (u32) sortKey, (u32) sortOrder, outSearchId); if (!listId || !outSearchId) { return CELL_SEARCH_ERROR_PARAM; } *outSearchId = idm::make<search_object_t>(); sysutil_register_cb([=](ppu_thread& ppu) -> s32 { const auto search = fxm::get_always<search_t>(); vm::var<CellSearchResultParam> resultParam; resultParam->searchId = *outSearchId; resultParam->resultNum = 0; // TODO search->func(ppu, CELL_SEARCH_EVENT_CONTENTSEARCH_INLIST_RESULT, CELL_OK, vm::cast(resultParam.addr()), search->userData); return CELL_OK; }); return CELL_OK; }
error_code cellSearchStartSceneSearch(CellSearchSceneSearchType searchType, vm::cptr<char> gameTitle, vm::cpptr<char> tags, u32 tagNum, CellSearchSortKey sortKey, CellSearchSortOrder sortOrder, vm::ptr<CellSearchId> outSearchId) { cellSearch.todo("cellSearchStartSceneSearch(searchType=0x%x, gameTitle=%s, tags=**0x%x, tagNum=0x%x, sortKey=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", (u32) searchType, gameTitle, tags, tagNum, (u32) sortKey, (u32) sortOrder, outSearchId); if (!gameTitle || !outSearchId) { return CELL_SEARCH_ERROR_PARAM; } *outSearchId = idm::make<search_object_t>(); sysutil_register_cb([=](ppu_thread& ppu) -> s32 { const auto search = fxm::get_always<search_t>(); vm::var<CellSearchResultParam> resultParam; resultParam->searchId = *outSearchId; resultParam->resultNum = 0; // TODO search->func(ppu, CELL_SEARCH_EVENT_SCENESEARCH_RESULT, CELL_OK, vm::cast(resultParam.addr()), search->userData); return CELL_OK; }); return CELL_OK; }
error_code cellSearchStartSceneSearchInVideo(vm::cptr<CellSearchContentId> videoId, CellSearchSceneSearchType searchType, CellSearchSortOrder sortOrder, vm::ptr<CellSearchId> outSearchId) { cellSearch.todo("cellSearchStartSceneSearchInVideo(videoId=*0x%x, searchType=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", videoId, (u32) searchType, (u32) sortOrder, outSearchId); if (!videoId || !outSearchId) { return CELL_SEARCH_ERROR_PARAM; } *outSearchId = idm::make<search_object_t>(); sysutil_register_cb([=](ppu_thread& ppu) -> s32 { const auto search = fxm::get_always<search_t>(); vm::var<CellSearchResultParam> resultParam; resultParam->searchId = *outSearchId; resultParam->resultNum = 0; // TODO search->func(ppu, CELL_SEARCH_EVENT_SCENESEARCH_INVIDEO_RESULT, CELL_OK, vm::cast(resultParam.addr()), search->userData); return CELL_OK; }); return CELL_OK; }
error_code cellSearchStartListSearch(CellSearchListSearchType type, CellSearchSortOrder sortOrder, vm::ptr<CellSearchId> outSearchId) { cellSearch.todo("cellSearchStartListSearch(type=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", (u32) type, (u32) sortOrder, outSearchId); if (!outSearchId) { return CELL_SEARCH_ERROR_PARAM; } *outSearchId = idm::make<search_object_t>(); sysutil_register_cb([=](ppu_thread& ppu) -> s32 { const auto search = fxm::get_always<search_t>(); vm::var<CellSearchResultParam> resultParam; resultParam->searchId = *outSearchId; resultParam->resultNum = 0; // TODO search->func(ppu, CELL_SEARCH_EVENT_LISTSEARCH_RESULT, CELL_OK, vm::cast(resultParam.addr()), search->userData); return CELL_OK; }); return CELL_OK; }
error_code cellPrintOpenConfig(vm::ptr<CellPrintCallback> function, vm::ptr<void> userdata) { cellPrint.todo("cellPrintOpenConfig(function=*0x%x, userdata=*0x%x)", function, userdata); sysutil_register_cb([=](ppu_thread& ppu) -> s32 { function(ppu, CELL_OK, userdata); return CELL_OK; }); return CELL_OK; }
s32 cellSysconfOpen(u32 type, vm::ptr<CellSysconfCallback> func, vm::ptr<void> userdata, vm::ptr<void> extparam, u32 id) { cellSysconf.todo("cellSysconfOpen(type=%d, func=*0x%x, userdata=*0x%x, extparam=*0x%x, id=%d)", type, func, userdata, extparam, id); sysutil_register_cb([=](ppu_thread& ppu) -> s32 { func(ppu, CELL_OK, userdata); return CELL_OK; }); return CELL_OK; }
error_code cellPhotoDecodeInitialize2(u32 version, u32 container2, vm::ptr<CellPhotoDecodeFinishCallback> funcFinish, vm::ptr<void> userdata) { cellPhotoDecode.todo("cellPhotoDecodeInitialize2(version=0x%x, container2=0x%x, funcFinish=*0x%x, userdata=*0x%x)", version, container2, funcFinish, userdata); sysutil_register_cb([=](ppu_thread& ppu) -> s32 { funcFinish(ppu, CELL_OK, userdata); return CELL_OK; }); return CELL_OK; }
error_code cellPhotoDecodeFinalize(vm::ptr<CellPhotoDecodeFinishCallback> funcFinish, vm::ptr<void> userdata) { cellPhotoDecode.todo("cellPhotoDecodeFinalize(funcFinish=*0x%x, userdata=*0x%x)", funcFinish, userdata); sysutil_register_cb([=](ppu_thread& ppu) -> s32 { funcFinish(ppu, CELL_OK, userdata); return CELL_OK; }); return CELL_OK; }
error_code cellPrintLoadAsync2(vm::ptr<CellPrintCallback> function, vm::ptr<void> userdata, vm::cptr<CellPrintLoadParam> param) { cellPrint.todo("cellPrintLoadAsync2(function=*0x%x, userdata=*0x%x, param=*0x%x)", function, userdata, param); sysutil_register_cb([=](ppu_thread& ppu) -> s32 { function(ppu, CELL_OK, userdata); return CELL_OK; }); return CELL_OK; }
error_code cellUserInfoSelectUser_SetList(vm::ptr<CellUserInfoListSet> setList, vm::ptr<CellUserInfoFinishCallback> funcSelect, u32 container, vm::ptr<void> userdata) { cellUserInfo.todo("cellUserInfoSelectUser_SetList(setList=*0x%x, funcSelect=*0x%x, container=0x%x, userdata=*0x%x)", setList, funcSelect, container, userdata); sysutil_register_cb([=](ppu_thread& ppu) -> s32 { vm::var<CellUserInfoUserStat> selectUser; funcSelect(ppu, CELL_OK, selectUser, userdata); return CELL_OK; }); return CELL_OK; }
error_code cellRecStart() { cellRec.todo("cellRecStart()"); sysutil_register_cb([=](ppu_thread& ppu) -> s32 { const auto rec = fxm::get_always<rec_t>(); rec->cb(ppu, CELL_REC_STATUS_START, CELL_OK, rec->cbUserData); return CELL_OK; }); return CELL_OK; }
error_code cellRecClose(s32 isDiscard) { cellRec.todo("cellRecClose(isDiscard=0x%x)", isDiscard); sysutil_register_cb([=](ppu_thread& ppu) -> s32 { const auto rec = fxm::get_always<rec_t>(); rec->cb(ppu, CELL_REC_STATUS_CLOSE, CELL_OK, rec->cbUserData); return CELL_OK; }); return CELL_OK; }
error_code cellSearchFinalize() { cellSearch.warning("cellSearchFinalize()"); sysutil_register_cb([=](ppu_thread& ppu) -> s32 { const auto search = fxm::get_always<search_t>(); search->func(ppu, CELL_SEARCH_EVENT_FINALIZE_RESULT, CELL_OK, vm::null, search->userData); return CELL_OK; }); return CELL_OK; }
s32 cellMusicDecodeInitializeSystemWorkload(s32 mode, u32 container, vm::ptr<CellMusicDecodeCallback> func, vm::ptr<void> userData, s32 spuUsageRate, vm::ptr<CellSpurs> spurs, vm::cptr<u8> priority, vm::cptr<struct CellSpursSystemWorkloadAttribute> attr) { cellMusicDecode.todo("cellMusicDecodeInitializeSystemWorkload(mode=0x%x, container=0x%x, func=*0x%x, userData=*0x%x, spuUsageRate=0x%x, spurs=*0x%x, priority=*0x%x, attr=*0x%x)", mode, container, func, userData, spuUsageRate, spurs, priority, attr); const auto musicDecode = fxm::make_always<music_decode_t>(); musicDecode->func = func; musicDecode->userData = userData; sysutil_register_cb([=](ppu_thread& ppu) -> s32 { musicDecode->func(ppu, CELL_MUSIC_DECODE_EVENT_INITIALIZE_RESULT, vm::addr_t(CELL_OK), userData); return CELL_OK; }); return CELL_OK; }
s32 cellMusicDecodeInitialize(s32 mode, u32 container, s32 spuPriority, vm::ptr<CellMusicDecodeCallback> func, vm::ptr<void> userData) { cellMusicDecode.todo("cellMusicDecodeInitialize(mode=0x%x, container=0x%x, spuPriority=0x%x, func=*0x%x, userData=*0x%x)", mode, container, spuPriority, func, userData); const auto musicDecode = fxm::make_always<music_decode_t>(); musicDecode->func = func; musicDecode->userData = userData; sysutil_register_cb([=](ppu_thread& ppu) -> s32 { musicDecode->func(ppu, CELL_MUSIC_DECODE_EVENT_INITIALIZE_RESULT, vm::addr_t(CELL_OK), userData); return CELL_OK; }); return CELL_OK; }
error_code cellRecOpen(vm::cptr<char> pDirName, vm::cptr<char> pFileName, vm::cptr<CellRecParam> pParam, u32 container, vm::ptr<CellRecCallback> cb, vm::ptr<void> cbUserData) { cellRec.todo("cellRecOpen(pDirName=%s, pFileName=%s, pParam=*0x%x, container=0x%x, cb=*0x%x, cbUserData=*0x%x)", pDirName, pFileName, pParam, container, cb, cbUserData); const auto rec = fxm::make_always<rec_t>(); rec->cb = cb; rec->cbUserData = cbUserData; sysutil_register_cb([=](ppu_thread& ppu) -> s32 { cb(ppu, CELL_REC_STATUS_OPEN, CELL_OK, cbUserData); return CELL_OK; }); return CELL_OK; }
error_code cellSearchInitialize(CellSearchMode mode, u32 container, vm::ptr<CellSearchSystemCallback> func, vm::ptr<void> userData) { cellSearch.warning("cellSearchInitialize(mode=0x%x, container=0x%x, func=*0x%x, userData=*0x%x)", (u32) mode, container, func, userData); const auto search = fxm::make_always<search_t>(); search->func = func; search->userData = userData; sysutil_register_cb([=](ppu_thread& ppu) -> s32 { func(ppu, CELL_SEARCH_EVENT_INITIALIZE_RESULT, CELL_OK, vm::null, userData); return CELL_OK; }); return CELL_OK; }
s32 cellMusicDecodeSetSelectionContext2(vm::ptr<CellMusicSelectionContext> context) { cellMusicDecode.todo("cellMusicDecodeSetSelectionContext2(context=*0x%x)", context); const auto musicDecode = fxm::get_always<music_decode2_t>(); if (!musicDecode->func) return CELL_MUSIC_DECODE_ERROR_GENERIC; sysutil_register_cb([=](ppu_thread& ppu) -> s32 { musicDecode->func(ppu, CELL_MUSIC_DECODE2_EVENT_SET_SELECTION_CONTEXT_RESULT, vm::addr_t(CELL_OK), musicDecode->userData); return CELL_OK; }); return CELL_OK; }
s32 cellMusicDecodeSetDecodeCommand2(s32 command) { cellMusicDecode.todo("cellMusicDecodeSetDecodeCommand2(command=0x%x)", command); const auto musicDecode = fxm::get_always<music_decode2_t>(); if (!musicDecode->func) return CELL_MUSIC_DECODE_ERROR_GENERIC; sysutil_register_cb([=](ppu_thread& ppu) -> s32 { musicDecode->func(ppu, CELL_MUSIC_DECODE2_EVENT_SET_DECODE_COMMAND_RESULT, vm::addr_t(CELL_OK), musicDecode->userData); return CELL_OK; }); return CELL_OK; }
s32 cellMusicDecodeSelectContents2() { cellMusicDecode.todo("cellMusicDecodeSelectContents2()"); const auto musicDecode = fxm::get_always<music_decode2_t>(); if (!musicDecode->func) return CELL_MUSIC_DECODE_ERROR_GENERIC; sysutil_register_cb([=](ppu_thread& ppu) -> s32 { musicDecode->func(ppu, CELL_MUSIC_DECODE2_EVENT_SELECT_CONTENTS_RESULT, vm::addr_t(CELL_OK), musicDecode->userData); return CELL_OK; }); return CELL_OK; }
s32 cellMusicDecodeFinalize2() { cellMusicDecode.todo("cellMusicDecodeFinalize2()"); const auto musicDecode = fxm::get_always<music_decode2_t>(); if (musicDecode->func) { sysutil_register_cb([=](ppu_thread& ppu) -> s32 { musicDecode->func(ppu, CELL_MUSIC_DECODE2_EVENT_FINALIZE_RESULT, vm::addr_t(CELL_OK), musicDecode->userData); return CELL_OK; }); } return CELL_OK; }
s32 cellMusicInitialize2(s32 mode, s32 spuPriority, vm::ptr<CellMusic2Callback> func, vm::ptr<void> userData) { cellMusic.todo("cellMusicInitialize2(mode=%d, spuPriority=%d, func=*0x%x, userData=*0x%x)", mode, spuPriority, func, userData); if (mode != CELL_MUSIC2_PLAYER_MODE_NORMAL) { cellMusic.todo("Unknown player mode: 0x%x", mode); return CELL_MUSIC2_ERROR_PARAM; } const auto music = fxm::make_always<music2_t>(); music->func = func; music->userData = userData; sysutil_register_cb([=](ppu_thread& ppu) -> s32 { func(ppu, CELL_MUSIC2_EVENT_INITIALIZE_RESULT, vm::make_var<s32>(CELL_OK), userData); return CELL_OK; }); return CELL_OK; }