diff --git a/rpcs3/Emu/SysCalls/Modules/cellGame.cpp b/rpcs3/Emu/SysCalls/Modules/cellGame.cpp index 042c125425..ca3e7e2308 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellGame.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellGame.cpp @@ -122,12 +122,12 @@ s32 cellHddGameCheck(PPUThread& ppu, u32 version, vm::cptr dirName, u32 er // TODO ? - //funcStat(result, get, set); + funcStat(ppu, result, get, set); - //if (result->result != CELL_HDDGAME_CBRESULT_OK && result->result != CELL_HDDGAME_CBRESULT_OK_CANCEL) - //{ - // return CELL_HDDGAME_ERROR_CBRESULT; - //} + if (result->result != CELL_HDDGAME_CBRESULT_OK && result->result != CELL_HDDGAME_CBRESULT_OK_CANCEL) + { + return CELL_HDDGAME_ERROR_CBRESULT; + } // TODO ? diff --git a/rpcs3/Emu/SysCalls/Modules/cellMusic.cpp b/rpcs3/Emu/SysCalls/Modules/cellMusic.cpp index ed3b438b2d..d0c3261dd0 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellMusic.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellMusic.cpp @@ -1,9 +1,20 @@ #include "stdafx.h" +#include "Emu/System.h" +#include "Emu/IdManager.h" #include "Emu/Memory/Memory.h" +#include "Emu/SysCalls/Callback.h" #include "Emu/SysCalls/Modules.h" +#include "cellMusic.h" + extern Module cellMusic; +struct music2_t +{ + vm::ptr func; + vm::ptr userData; +}; + s32 cellMusicGetSelectionContext() { throw EXCEPTION(""); @@ -99,9 +110,48 @@ s32 cellMusicSelectContents() throw EXCEPTION(""); } -s32 cellMusicInitialize2() +s32 cellMusicInitialize2(s32 mode, s32 spuPriority, vm::ptr func, vm::ptr userData) { - throw EXCEPTION(""); + cellMusic.Todo("cellMusicInitialize2(mode=%d, spuPriority=%d, func=*0x%x, userData=*0x%x)", mode, spuPriority, func, userData); + + named_thread_t(WRAP_EXPR("CellMusicInit"), [=]() + { + if (mode != CELL_MUSIC2_PLAYER_MODE_NORMAL) + { + cellMusic.Todo("Unknown player mode: 0x%x", mode); + Emu.GetCallbackManager().Async([=](CPUThread& CPU) + { + vm::var ret(CPU); + *ret = CELL_MUSIC2_ERROR_PARAM; + func(static_cast(CPU), CELL_MUSIC2_EVENT_INITIALIZE_RESULT, ret, userData); + }); + } + + const auto music = fxm::make(); + + if (!music) + { + Emu.GetCallbackManager().Async([=](CPUThread& CPU) + { + vm::var ret(CPU); + *ret = CELL_MUSIC2_ERROR_GENERIC; + func(static_cast(CPU), CELL_MUSIC2_EVENT_INITIALIZE_RESULT, ret, userData); + }); + return; + } + + music->func = func; + music->userData = userData; + + Emu.GetCallbackManager().Async([=](CPUThread& CPU) + { + vm::var ret(CPU); + *ret = CELL_OK; + func(static_cast(CPU), CELL_MUSIC2_EVENT_INITIALIZE_RESULT, ret, userData); + }); + }).detach(); + + return CELL_OK; } s32 cellMusicSetVolume() diff --git a/rpcs3/Emu/SysCalls/Modules/cellMusic.h b/rpcs3/Emu/SysCalls/Modules/cellMusic.h new file mode 100644 index 0000000000..44d9cc8b6b --- /dev/null +++ b/rpcs3/Emu/SysCalls/Modules/cellMusic.h @@ -0,0 +1,134 @@ +#pragma once + +namespace vm { using namespace ps3; } + +// Error Codes +enum +{ + CELL_MUSIC_OK = 0, + CELL_MUSIC_CANCELED = 1, + CELL_MUSIC_PLAYBACK_FINISHED = 0x8002c101, + CELL_MUSIC_ERROR_PARAM = 0x8002c102, + CELL_MUSIC_ERROR_BUSY = 0x8002c103, + CELL_MUSIC_ERROR_NO_ACTIVE_CONTENT = 0x8002c104, + CELL_MUSIC_ERROR_NO_MATCH_FOUND = 0x8002c105, + CELL_MUSIC_ERROR_INVALID_CONTEXT = 0x8002c106, + CELL_MUSIC_ERROR_PLAYBACK_FAILURE = 0x8002c107, + CELL_MUSIC_ERROR_NO_MORE_CONTENT = 0x8002c108, + CELL_MUSIC_DIALOG_OPEN = 0x8002c109, + CELL_MUSIC_DIALOG_CLOSE = 0x8002c10A, + CELL_MUSIC_ERROR_GENERIC = 0x8002c1FF, + CELL_MUSIC2_OK = CELL_MUSIC_OK, + CELL_MUSIC2_CANCELED = CELL_MUSIC_CANCELED, + CELL_MUSIC2_PLAYBACK_FINISHED = CELL_MUSIC_PLAYBACK_FINISHED, + CELL_MUSIC2_ERROR_PARAM = CELL_MUSIC_ERROR_PARAM, + CELL_MUSIC2_ERROR_BUSY = CELL_MUSIC_ERROR_BUSY, + CELL_MUSIC2_ERROR_NO_ACTIVE_CONTENT = CELL_MUSIC_ERROR_NO_ACTIVE_CONTENT, + CELL_MUSIC2_ERROR_NO_MATCH_FOUND = CELL_MUSIC_ERROR_NO_MATCH_FOUND, + CELL_MUSIC2_ERROR_INVALID_CONTEXT = CELL_MUSIC_ERROR_INVALID_CONTEXT, + CELL_MUSIC2_ERROR_PLAYBACK_FAILURE = CELL_MUSIC_ERROR_PLAYBACK_FAILURE, + CELL_MUSIC2_ERROR_NO_MORE_CONTENT = CELL_MUSIC_ERROR_NO_MORE_CONTENT, + CELL_MUSIC2_DIALOG_OPEN = CELL_MUSIC_DIALOG_OPEN, + CELL_MUSIC2_DIALOG_CLOSE = CELL_MUSIC_DIALOG_CLOSE, + CELL_MUSIC2_ERROR_GENERIC = CELL_MUSIC_ERROR_GENERIC, +}; + +enum +{ + CELL_SYSUTIL_MUSIC_INITIALIZING_FINISHED = 1, + CELL_SYSUTIL_MUSIC_SHUTDOWN_FINISHED = 4, // Was 3 in 1.03, changed to 4 in 1.1 + CELL_SYSUTIL_MUSIC_LOADING_FINISHED = 5, + CELL_SYSUTIL_MUSIC_UNLOADING_FINISHED = 7, + CELL_SYSUTIL_MUSIC_RELEASED = 9, + CELL_SYSUTIL_MUSIC_GRABBED = 11, +}; + +enum +{ + CELL_SYSUTIL_MUSIC2_INITIALIZING_FINISHED = CELL_SYSUTIL_MUSIC_INITIALIZING_FINISHED, + CELL_SYSUTIL_MUSIC2_SHUTDOWN_FINISHED = CELL_SYSUTIL_MUSIC_SHUTDOWN_FINISHED, + CELL_SYSUTIL_MUSIC2_LOADING_FINISHED = CELL_SYSUTIL_MUSIC_LOADING_FINISHED, + CELL_SYSUTIL_MUSIC2_UNLOADING_FINISHED = CELL_SYSUTIL_MUSIC_UNLOADING_FINISHED, + CELL_SYSUTIL_MUSIC2_RELEASED = CELL_SYSUTIL_MUSIC_RELEASED, + CELL_SYSUTIL_MUSIC2_GRABBED = CELL_SYSUTIL_MUSIC_GRABBED, +}; + +enum +{ + CELL_MUSIC_EVENT_STATUS_NOTIFICATION = 0, + CELL_MUSIC_EVENT_INITIALIZE_RESULT = 1, + CELL_MUSIC_EVENT_FINALIZE_RESULT = 2, + CELL_MUSIC_EVENT_SELECT_CONTENTS_RESULT = 3, + CELL_MUSIC_EVENT_SET_PLAYBACK_COMMAND_RESULT = 4, + CELL_MUSIC_EVENT_SET_VOLUME_RESULT = 5, + CELL_MUSIC_EVENT_SET_SELECTION_CONTEXT_RESULT = 6, + CELL_MUSIC_EVENT_UI_NOTIFICATION = 7, +}; + +enum +{ + CELL_MUSIC2_EVENT_STATUS_NOTIFICATION = CELL_MUSIC_EVENT_STATUS_NOTIFICATION, + CELL_MUSIC2_EVENT_INITIALIZE_RESULT = CELL_MUSIC_EVENT_INITIALIZE_RESULT, + CELL_MUSIC2_EVENT_FINALIZE_RESULT = CELL_MUSIC_EVENT_FINALIZE_RESULT, + CELL_MUSIC2_EVENT_SELECT_CONTENTS_RESULT = CELL_MUSIC_EVENT_SELECT_CONTENTS_RESULT, + CELL_MUSIC2_EVENT_SET_PLAYBACK_COMMAND_RESULT = CELL_MUSIC_EVENT_SET_PLAYBACK_COMMAND_RESULT, + CELL_MUSIC2_EVENT_SET_VOLUME_RESULT = CELL_MUSIC_EVENT_SET_VOLUME_RESULT, + CELL_MUSIC2_EVENT_SET_SELECTION_CONTEXT_RESULT = CELL_MUSIC_EVENT_SET_SELECTION_CONTEXT_RESULT, + CELL_MUSIC2_EVENT_UI_NOTIFICATION = CELL_MUSIC_EVENT_UI_NOTIFICATION, +}; + +enum +{ + CELL_MUSIC_PB_CMD_STOP = 0, + CELL_MUSIC_PB_CMD_PLAY = 1, + CELL_MUSIC_PB_CMD_PAUSE = 2, + CELL_MUSIC_PB_CMD_NEXT = 3, + CELL_MUSIC_PB_CMD_PREV = 4, + CELL_MUSIC_PB_CMD_FASTFORWARD = 5, + CELL_MUSIC_PB_CMD_FASTREVERSE = 6, +}; + +enum +{ + CELL_MUSIC2_PB_CMD_STOP = CELL_MUSIC_PB_CMD_STOP, + CELL_MUSIC2_PB_CMD_PLAY = CELL_MUSIC_PB_CMD_PLAY, + CELL_MUSIC2_PB_CMD_PAUSE = CELL_MUSIC_PB_CMD_PAUSE, + CELL_MUSIC2_PB_CMD_NEXT = CELL_MUSIC_PB_CMD_NEXT, + CELL_MUSIC2_PB_CMD_PREV = CELL_MUSIC_PB_CMD_PREV, + CELL_MUSIC2_PB_CMD_FASTFORWARD = CELL_MUSIC_PB_CMD_FASTFORWARD, + CELL_MUSIC2_PB_CMD_FASTREVERSE = CELL_MUSIC_PB_CMD_FASTREVERSE, +}; + +enum +{ + CELL_MUSIC_PB_STATUS_STOP = 0, + CELL_MUSIC_PB_STATUS_PLAY = 1, + CELL_MUSIC_PB_STATUS_PAUSE = 2, + CELL_MUSIC_PB_STATUS_FASTFORWARD = 3, + CELL_MUSIC_PB_STATUS_FASTREVERSE = 4, +}; + +enum +{ + CELL_MUSIC2_PB_STATUS_STOP = CELL_MUSIC_PB_STATUS_STOP, + CELL_MUSIC2_PB_STATUS_PLAY = CELL_MUSIC_PB_STATUS_PLAY, + CELL_MUSIC2_PB_STATUS_PAUSE = CELL_MUSIC_PB_STATUS_PAUSE, + CELL_MUSIC2_PB_STATUS_FASTFORWARD = CELL_MUSIC_PB_STATUS_FASTFORWARD, + CELL_MUSIC2_PB_STATUS_FASTREVERSE = CELL_MUSIC_PB_STATUS_FASTREVERSE, +}; + +enum +{ + CELL_MUSIC_PLAYBACK_MEMORY_CONTAINER_SIZE = 11 * 1024 * 1024, + CELL_MUSIC_PLAYER_MODE_NORMAL = 0, + CELL_MUSIC2_PLAYER_MODE_NORMAL = CELL_MUSIC_PLAYER_MODE_NORMAL, + CELL_MUSIC_SELECTION_CONTEXT_SIZE = 2048, +}; + +using CellMusicCallback = void(u32 evnt, vm::ptr param, vm::ptr userData); +using CellMusic2Callback = void(u32 evnt, vm::ptr param, vm::ptr userData); + +struct CellMusicSelectionContext +{ + char data[CELL_MUSIC_SELECTION_CONTEXT_SIZE]; +}; \ No newline at end of file diff --git a/rpcs3/Emu/SysCalls/Modules/cellSysutilAvc2.cpp b/rpcs3/Emu/SysCalls/Modules/cellSysutilAvc2.cpp index 3f726b2a4b..57c3661b74 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSysutilAvc2.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellSysutilAvc2.cpp @@ -1,6 +1,11 @@ #include "stdafx.h" #include "Emu/Memory/Memory.h" #include "Emu/SysCalls/Modules.h" +#include "rpcs3/Ini.h" + +#include "sceNp.h" +#include "sceNp2.h" +#include "cellSysutilAvc2.h" extern Module cellSysutilAvc2; @@ -124,9 +129,21 @@ s32 cellSysutilAvc2GetSpeakerVolumeLevel() throw EXCEPTION(""); } -s32 cellSysutilAvc2IsCameraAttached() +s32 cellSysutilAvc2IsCameraAttached(vm::ptr status) { - throw EXCEPTION(""); + cellSysutilAvc2.Todo("cellSysutilAvc2IsCameraAttached()"); + + if (Ini.Camera.GetValue() == 0) + { + *status = CELL_AVC2_CAMERA_STATUS_DETACHED; + } + else + { + // TODO: We need to check if the camera has been turned on, but this requires further implementation of cellGem/cellCamera. + *status = CELL_AVC2_CAMERA_STATUS_ATTACHED_OFF; + } + + return CELL_OK; } s32 cellSysutilAvc2MicRead() @@ -159,9 +176,51 @@ s32 cellSysutilAvc2GetWindowShowStatus() throw EXCEPTION(""); } -s32 cellSysutilAvc2InitParam() +s32 cellSysutilAvc2InitParam(u16 version, vm::ptr option) { - throw EXCEPTION(""); + cellSysutilAvc2.Warning("cellSysutilAvc2InitParam(version=%d, option=*0x%x)", version, option); + + if (version >= 110) + { + // Notify the user that, a version different from the one, that we know the constants for, is used. + // Other versions shouldn't differ by too much, if at all - they most likely differ in other functions. + if (version != 140) + { + cellSysutilAvc2.Todo("cellSysutilAvc2InitParam(): Older/newer version %d used, might cause problems.", version); + } + + option->avc_init_param_version = version; + + if (option->media_type == CELL_SYSUTIL_AVC2_VOICE_CHAT) + { + option->max_players = 16; + } + else if (option->media_type == CELL_SYSUTIL_AVC2_VIDEO_CHAT) + { + if (option->video_param.frame_mode == CELL_SYSUTIL_AVC2_FRAME_MODE_NORMAL) + { + option->max_players = 6; + } + else if (option->video_param.frame_mode == CELL_SYSUTIL_AVC2_FRAME_MODE_INTRA_ONLY) + { + option->max_players = 16; + } + else + { + cellSysutilAvc2.Error("Unknown frame mode 0x%x", option->video_param.frame_mode); + } + } + else + { + cellSysutilAvc2.Error("Unknown media type 0x%x", option->media_type); + } + } + else + { + cellSysutilAvc2.Error("cellSysutilAvc2InitParam(): Unknown version %d used, please report this to a developer.", version); + } + + return CELL_OK; } s32 cellSysutilAvc2GetWindowSize() diff --git a/rpcs3/Emu/SysCalls/Modules/cellSysutilAvc2.h b/rpcs3/Emu/SysCalls/Modules/cellSysutilAvc2.h new file mode 100644 index 0000000000..03c6790c37 --- /dev/null +++ b/rpcs3/Emu/SysCalls/Modules/cellSysutilAvc2.h @@ -0,0 +1,206 @@ +#pragma once + +namespace vm { using namespace ps3; } + +// Error codes +enum +{ + CELL_AVC2_ERROR_UNKNOWN = 0x8002b701, + CELL_AVC2_ERROR_NOT_SUPPORTED = 0x8002b702, + CELL_AVC2_ERROR_NOT_INITIALIZED = 0x8002b703, + CELL_AVC2_ERROR_ALREADY_INITIALIZED = 0x8002b704, + CELL_AVC2_ERROR_INVALID_ARGUMENT = 0x8002b705, + CELL_AVC2_ERROR_OUT_OF_MEMORY = 0x8002b706, + CELL_AVC2_ERROR_ERROR_BAD_ID = 0x8002b707, + CELL_AVC2_ERROR_INVALID_STATUS = 0x8002b70a, + CELL_AVC2_ERROR_TIMEOUT = 0x8002b70b, + CELL_AVC2_ERROR_NO_SESSION = 0x8002b70d, + CELL_AVC2_ERROR_WINDOW_ALREADY_EXISTS = 0x8002b70f, + CELL_AVC2_ERROR_TOO_MANY_WINDOWS = 0x8002b710, + CELL_AVC2_ERROR_TOO_MANY_PEER_WINDOWS = 0x8002b711, + CELL_AVC2_ERROR_WINDOW_NOT_FOUND = 0x8002b712, +}; + +enum +{ + CELL_SYSUTIL_AVC2_VOICE_CHAT = 0x00000001, + CELL_SYSUTIL_AVC2_VIDEO_CHAT = 0x00000010, +}; + +enum +{ + CELL_SYSUTIL_AVC2_VOICE_QUALITY_NORMAL = 0x00000001, +}; + +enum +{ + CELL_SYSUTIL_AVC2_VIDEO_QUALITY_NORMAL = 0x00000001, +}; + +enum +{ + CELL_SYSUTIL_AVC2_FRAME_MODE_NORMAL = 0x00000001, + CELL_SYSUTIL_AVC2_FRAME_MODE_INTRA_ONLY = 0x00000002, +}; + +enum +{ + CELL_SYSUTIL_AVC2_VIRTUAL_COORDINATES = 0x00000001, + CELL_SYSUTIL_AVC2_ABSOLUTE_COORDINATES = 0x00000002, +}; + +enum +{ + CELL_SYSUTIL_AVC2_VIDEO_RESOLUTION_QQVGA = 0x00000001, + CELL_SYSUTIL_AVC2_VIDEO_RESOLUTION_QVGA = 0x00000002, +}; + +enum +{ + CELL_SYSUTIL_AVC2_CHAT_TARGET_MODE_ROOM = 0x00000100, + CELL_SYSUTIL_AVC2_CHAT_TARGET_MODE_TEAM = 0x00000200, + CELL_SYSUTIL_AVC2_CHAT_TARGET_MODE_PRIVATE = 0x00000300, + CELL_SYSUTIL_AVC2_CHAT_TARGET_MODE_DIRECT = 0x00001000, +}; + +enum +{ + CELL_SYSUTIL_AVC2_ATTRIBUTE_VOICE_DETECT_EVENT_TYPE = 0x00001001, + CELL_SYSUTIL_AVC2_ATTRIBUTE_VOICE_DETECT_INTERVAL_TIME = 0x00001002, + CELL_SYSUTIL_AVC2_ATTRIBUTE_VOICE_DETECT_SIGNAL_LEVEL = 0x00001003, + CELL_SYSUTIL_AVC2_ATTRIBUTE_VOICE_MAX_BITRATE = 0x00001004, + CELL_SYSUTIL_AVC2_ATTRIBUTE_VOICE_DATA_FEC = 0x00001005, + CELL_SYSUTIL_AVC2_ATTRIBUTE_VOICE_PACKET_CONTENTION = 0x00001006, + CELL_SYSUTIL_AVC2_ATTRIBUTE_VOICE_DTX_MODE = 0x00001007, + CELL_SYSUTIL_AVC2_ATTRIBUTE_MIC_STATUS_DETECTION = 0x00001008, + CELL_SYSUTIL_AVC2_ATTRIBUTE_MIC_SETTING_NOTIFICATION = 0x00001009, + CELL_SYSUTIL_AVC2_ATTRIBUTE_VOICE_MUTING_NOTIFICATION = 0x0000100A, + CELL_SYSUTIL_AVC2_ATTRIBUTE_CAMERA_STATUS_DETECTION = 0x0000100B, +}; + +enum +{ + CELL_SYSUTIL_AVC2_WINDOW_ATTRIBUTE_ALPHA = 0x00002001, + CELL_SYSUTIL_AVC2_WINDOW_ATTRIBUTE_TRANSITION_TYPE = 0x00002002, + CELL_SYSUTIL_AVC2_WINDOW_ATTRIBUTE_TRANSITION_DURATION = 0x00002003, + CELL_SYSUTIL_AVC2_WINDOW_ATTRIBUTE_STRING_VISIBLE = 0x00002004, + CELL_SYSUTIL_AVC2_WINDOW_ATTRIBUTE_ROTATION = 0x00002005, + CELL_SYSUTIL_AVC2_WINDOW_ATTRIBUTE_ZORDER = 0x00002006, + CELL_SYSUTIL_AVC2_WINDOW_ATTRIBUTE_SURFACE = 0x00002007, +}; + +enum +{ + CELL_SYSUTIL_AVC2_TRANSITION_NONE = 0xffffffff, + CELL_SYSUTIL_AVC2_TRANSITION_LINEAR = 0x00000000, + CELL_SYSUTIL_AVC2_TRANSITION_SLOWDOWN = 0x00000001, + CELL_SYSUTIL_AVC2_TRANSITION_FASTUP = 0x00000002, + CELL_SYSUTIL_AVC2_TRANSITION_ANGULAR = 0x00000003, + CELL_SYSUTIL_AVC2_TRANSITION_EXPONENT = 0x00000004, +}; + +enum +{ + CELL_SYSUTIL_AVC2_ZORDER_FORWARD_MOST = 0x00000001, + CELL_SYSUTIL_AVC2_ZORDER_BEHIND_MOST = 0x00000002, +}; + +enum +{ + CELL_AVC2_CAMERA_STATUS_DETACHED = 0, + CELL_AVC2_CAMERA_STATUS_ATTACHED_OFF = 1, + CELL_AVC2_CAMERA_STATUS_ATTACHED_ON = 2, + CELL_AVC2_CAMERA_STATUS_UNKNOWN = 3, +}; + +typedef u32 CellSysutilAvc2AttributeId; +typedef u32 CellSysutilAvc2WindowAttributeId; + +typedef u32 CellSysutilAvc2EventId; +typedef u64 CellSysutilAvc2EventParam; + +using CellSysutilAvc2Callback = void(CellSysutilAvc2EventId event_id, CellSysutilAvc2EventParam event_param, vm::ptr userdata); + +typedef u32 CellSysutilAvc2MediaType; +typedef u32 CellSysutilAvc2VoiceQuality; +typedef u32 CellSysutilAvc2VideoQuality; +typedef u32 CellSysutilAvc2FrameMode; +typedef u32 CellSysutilAvc2VideoResolution; +typedef u32 CellSysutilAvc2CoordinatesForm; + +struct CellSysutilAvc2VoiceInitParam +{ + be_t voice_quality; + be_t max_speakers; + u8 mic_out_stream_sharing; +}; + +struct CellSysutilAvc2VideoInitParam +{ + be_t video_quality; + be_t frame_mode; + be_t max_video_resolution; + be_t max_video_windows; + be_t max_video_framerate; + be_t max_video_bitrate; + CellSysutilAvc2CoordinatesForm coordinates_form; + u8 video_stream_sharing; +}; + +struct CellSysutilAvc2StreamingModeParam +{ + be_t mode; + be_t port; +}; + +struct CellSysutilAvc2InitParam +{ + be_t avc_init_param_version; + be_t max_players; + be_t spu_load_average; + CellSysutilAvc2StreamingModeParam streaming_mode; + be_t media_type; + CellSysutilAvc2VoiceInitParam voice_param; + CellSysutilAvc2VideoInitParam video_param; +}; + +struct CellSysutilAvc2RoomMemberList +{ + vm::ptr member_id; + u8 member_num; +}; + +struct CellSysutilAvc2MemberIpAndPortList +{ + vm::ptr member_id; + vm::ptr dst_addr; // in_addr + vm::ptr dst_port; + be_t my_member_id; + u8 member_num; +}; + +union CellSysutilAvc2AttributeParam +{ + be_t int_param; + be_t float_param; + vm::ptr ptr_param; +}; + +struct CellSysutilAvc2Attribute +{ + be_t attr_id; + CellSysutilAvc2AttributeParam attr_param; +}; + +union CellSysutilAvc2WindowAttributeParam +{ + be_t int_vector[4]; + be_t float_vector[4]; + vm::ptr ptr_vector[4]; +}; + +struct CellSysutilAvc2WindowAttribute +{ + be_t attr_id; + CellSysutilAvc2WindowAttributeParam attr_param; +}; \ No newline at end of file diff --git a/rpcs3/Emu/SysCalls/Modules/sys_game.cpp b/rpcs3/Emu/SysCalls/Modules/sys_game.cpp index 9f06602f29..aed67378f2 100644 --- a/rpcs3/Emu/SysCalls/Modules/sys_game.cpp +++ b/rpcs3/Emu/SysCalls/Modules/sys_game.cpp @@ -62,10 +62,10 @@ void sys_game_process_exitspawn(vm::cptr path, u32 argv_addr, u32 envp_add } } - //TODO: execute the file in with the args in argv - //and the environment parameters in envp and copy the data - //from data_addr into the adress space of the new process - //then kill the current process + // TODO: execute the file in with the args in argv + // and the environment parameters in envp and copy the data + // from data_addr into the adress space of the new process + // then kill the current process Emu.Pause(); sysPrxForUser.Success("Process finished"); @@ -138,10 +138,10 @@ void sys_game_process_exitspawn2(vm::cptr path, u32 argv_addr, u32 envp_ad } } - //TODO: execute the file in with the args in argv - //and the environment parameters in envp and copy the data - //from data_addr into the adress space of the new process - //then kill the current process + // TODO: execute the file in with the args in argv + // and the environment parameters in envp and copy the data + // from data_addr into the adress space of the new process + // then kill the current process Emu.Pause(); sysPrxForUser.Success("Process finished"); diff --git a/rpcs3/Emu/SysCalls/lv2/sys_spu.h b/rpcs3/Emu/SysCalls/lv2/sys_spu.h index 15db193013..1b720448de 100644 --- a/rpcs3/Emu/SysCalls/lv2/sys_spu.h +++ b/rpcs3/Emu/SysCalls/lv2/sys_spu.h @@ -6,20 +6,20 @@ namespace vm { using namespace ps3; } enum : s32 { - SYS_SPU_THREAD_GROUP_TYPE_NORMAL = 0x00, - SYS_SPU_THREAD_GROUP_TYPE_SEQUENTIAL = 0x01, - SYS_SPU_THREAD_GROUP_TYPE_SYSTEM = 0x02, + SYS_SPU_THREAD_GROUP_TYPE_NORMAL = 0x00, + SYS_SPU_THREAD_GROUP_TYPE_SEQUENTIAL = 0x01, + SYS_SPU_THREAD_GROUP_TYPE_SYSTEM = 0x02, SYS_SPU_THREAD_GROUP_TYPE_MEMORY_FROM_CONTAINER = 0x04, - SYS_SPU_THREAD_GROUP_TYPE_NON_CONTEXT = 0x08, + SYS_SPU_THREAD_GROUP_TYPE_NON_CONTEXT = 0x08, SYS_SPU_THREAD_GROUP_TYPE_EXCLUSIVE_NON_CONTEXT = 0x18, SYS_SPU_THREAD_GROUP_TYPE_COOPERATE_WITH_SYSTEM = 0x20, }; enum { - SYS_SPU_THREAD_GROUP_JOIN_GROUP_EXIT = 0x0001, + SYS_SPU_THREAD_GROUP_JOIN_GROUP_EXIT = 0x0001, SYS_SPU_THREAD_GROUP_JOIN_ALL_THREADS_EXIT = 0x0002, - SYS_SPU_THREAD_GROUP_JOIN_TERMINATED = 0x0004 + SYS_SPU_THREAD_GROUP_JOIN_TERMINATED = 0x0004 }; enum diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index c5bb69b897..3da301472e 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -613,6 +613,7 @@ + @@ -631,6 +632,7 @@ + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index 0040ea3ba1..95534f0105 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -1876,5 +1876,11 @@ Emu\CPU\Cell + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + \ No newline at end of file