mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-21 03:55:32 +00:00
HddGameCheck fix and Music/Avc2 improvements
This commit is contained in:
parent
cbe83ad8dd
commit
f9731de777
9 changed files with 482 additions and 25 deletions
|
@ -122,12 +122,12 @@ s32 cellHddGameCheck(PPUThread& ppu, u32 version, vm::cptr<char> 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 ?
|
||||
|
||||
|
|
|
@ -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<CellMusic2Callback> func;
|
||||
vm::ptr<void> userData;
|
||||
};
|
||||
|
||||
s32 cellMusicGetSelectionContext()
|
||||
{
|
||||
throw EXCEPTION("");
|
||||
|
@ -99,9 +110,48 @@ s32 cellMusicSelectContents()
|
|||
throw EXCEPTION("");
|
||||
}
|
||||
|
||||
s32 cellMusicInitialize2()
|
||||
s32 cellMusicInitialize2(s32 mode, s32 spuPriority, vm::ptr<CellMusic2Callback> func, vm::ptr<void> 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<u32> ret(CPU);
|
||||
*ret = CELL_MUSIC2_ERROR_PARAM;
|
||||
func(static_cast<PPUThread&>(CPU), CELL_MUSIC2_EVENT_INITIALIZE_RESULT, ret, userData);
|
||||
});
|
||||
}
|
||||
|
||||
const auto music = fxm::make<music2_t>();
|
||||
|
||||
if (!music)
|
||||
{
|
||||
Emu.GetCallbackManager().Async([=](CPUThread& CPU)
|
||||
{
|
||||
vm::var<u32> ret(CPU);
|
||||
*ret = CELL_MUSIC2_ERROR_GENERIC;
|
||||
func(static_cast<PPUThread&>(CPU), CELL_MUSIC2_EVENT_INITIALIZE_RESULT, ret, userData);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
music->func = func;
|
||||
music->userData = userData;
|
||||
|
||||
Emu.GetCallbackManager().Async([=](CPUThread& CPU)
|
||||
{
|
||||
vm::var<u32> ret(CPU);
|
||||
*ret = CELL_OK;
|
||||
func(static_cast<PPUThread&>(CPU), CELL_MUSIC2_EVENT_INITIALIZE_RESULT, ret, userData);
|
||||
});
|
||||
}).detach();
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
s32 cellMusicSetVolume()
|
||||
|
|
134
rpcs3/Emu/SysCalls/Modules/cellMusic.h
Normal file
134
rpcs3/Emu/SysCalls/Modules/cellMusic.h
Normal file
|
@ -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<void> param, vm::ptr<void> userData);
|
||||
using CellMusic2Callback = void(u32 evnt, vm::ptr<u32> param, vm::ptr<void> userData);
|
||||
|
||||
struct CellMusicSelectionContext
|
||||
{
|
||||
char data[CELL_MUSIC_SELECTION_CONTEXT_SIZE];
|
||||
};
|
|
@ -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<u8> 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<CellSysutilAvc2InitParam> 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()
|
||||
|
|
206
rpcs3/Emu/SysCalls/Modules/cellSysutilAvc2.h
Normal file
206
rpcs3/Emu/SysCalls/Modules/cellSysutilAvc2.h
Normal file
|
@ -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<void> userdata);
|
||||
|
||||
typedef u32 CellSysutilAvc2MediaType;
|
||||
typedef u32 CellSysutilAvc2VoiceQuality;
|
||||
typedef u32 CellSysutilAvc2VideoQuality;
|
||||
typedef u32 CellSysutilAvc2FrameMode;
|
||||
typedef u32 CellSysutilAvc2VideoResolution;
|
||||
typedef u32 CellSysutilAvc2CoordinatesForm;
|
||||
|
||||
struct CellSysutilAvc2VoiceInitParam
|
||||
{
|
||||
be_t<CellSysutilAvc2VoiceQuality> voice_quality;
|
||||
be_t<u16> max_speakers;
|
||||
u8 mic_out_stream_sharing;
|
||||
};
|
||||
|
||||
struct CellSysutilAvc2VideoInitParam
|
||||
{
|
||||
be_t<CellSysutilAvc2VideoQuality> video_quality;
|
||||
be_t<CellSysutilAvc2FrameMode> frame_mode;
|
||||
be_t<CellSysutilAvc2VideoResolution> max_video_resolution;
|
||||
be_t<u16> max_video_windows;
|
||||
be_t<u16> max_video_framerate;
|
||||
be_t<u32> max_video_bitrate;
|
||||
CellSysutilAvc2CoordinatesForm coordinates_form;
|
||||
u8 video_stream_sharing;
|
||||
};
|
||||
|
||||
struct CellSysutilAvc2StreamingModeParam
|
||||
{
|
||||
be_t<u16> mode;
|
||||
be_t<u16> port;
|
||||
};
|
||||
|
||||
struct CellSysutilAvc2InitParam
|
||||
{
|
||||
be_t<u16> avc_init_param_version;
|
||||
be_t<u16> max_players;
|
||||
be_t<u16> spu_load_average;
|
||||
CellSysutilAvc2StreamingModeParam streaming_mode;
|
||||
be_t<CellSysutilAvc2MediaType> media_type;
|
||||
CellSysutilAvc2VoiceInitParam voice_param;
|
||||
CellSysutilAvc2VideoInitParam video_param;
|
||||
};
|
||||
|
||||
struct CellSysutilAvc2RoomMemberList
|
||||
{
|
||||
vm::ptr<SceNpMatching2RoomMemberId> member_id;
|
||||
u8 member_num;
|
||||
};
|
||||
|
||||
struct CellSysutilAvc2MemberIpAndPortList
|
||||
{
|
||||
vm::ptr<SceNpMatching2RoomMemberId> member_id;
|
||||
vm::ptr<u32> dst_addr; // in_addr
|
||||
vm::ptr<u16> dst_port;
|
||||
be_t<SceNpMatching2RoomMemberId> my_member_id;
|
||||
u8 member_num;
|
||||
};
|
||||
|
||||
union CellSysutilAvc2AttributeParam
|
||||
{
|
||||
be_t<u64> int_param;
|
||||
be_t<f32> float_param;
|
||||
vm::ptr<void> ptr_param;
|
||||
};
|
||||
|
||||
struct CellSysutilAvc2Attribute
|
||||
{
|
||||
be_t<CellSysutilAvc2AttributeId> attr_id;
|
||||
CellSysutilAvc2AttributeParam attr_param;
|
||||
};
|
||||
|
||||
union CellSysutilAvc2WindowAttributeParam
|
||||
{
|
||||
be_t<s32> int_vector[4];
|
||||
be_t<f32> float_vector[4];
|
||||
vm::ptr<void> ptr_vector[4];
|
||||
};
|
||||
|
||||
struct CellSysutilAvc2WindowAttribute
|
||||
{
|
||||
be_t<CellSysutilAvc2WindowAttributeId> attr_id;
|
||||
CellSysutilAvc2WindowAttributeParam attr_param;
|
||||
};
|
|
@ -62,10 +62,10 @@ void sys_game_process_exitspawn(vm::cptr<char> path, u32 argv_addr, u32 envp_add
|
|||
}
|
||||
}
|
||||
|
||||
//TODO: execute the file in <path> 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 <path> 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<char> path, u32 argv_addr, u32 envp_ad
|
|||
}
|
||||
}
|
||||
|
||||
//TODO: execute the file in <path> 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 <path> 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");
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -613,6 +613,7 @@
|
|||
<ClInclude Include="Emu\SysCalls\Modules\cellL10n.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellMic.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellMsgDialog.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellMusic.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellNetCtl.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellPad.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellPamf.h" />
|
||||
|
@ -631,6 +632,7 @@
|
|||
<ClInclude Include="Emu\SysCalls\Modules\cellSync2.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellSysutil.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellSaveData.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellSysutilAvc2.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellUsbd.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellUserInfo.h" />
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellVdec.h" />
|
||||
|
|
|
@ -1876,5 +1876,11 @@
|
|||
<ClInclude Include="Emu\Cell\SPUAnalyser.h">
|
||||
<Filter>Emu\CPU\Cell</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellMusic.h">
|
||||
<Filter>Emu\SysCalls\Modules</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Emu\SysCalls\Modules\cellSysutilAvc2.h">
|
||||
<Filter>Emu\SysCalls\Modules</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
Loading…
Add table
Reference in a new issue