HddGameCheck fix and Music/Avc2 improvements

This commit is contained in:
Raul Tambre 2015-09-10 16:09:31 +03:00
parent cbe83ad8dd
commit f9731de777
9 changed files with 482 additions and 25 deletions

View File

@ -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 ?

View File

@ -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()

View 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];
};

View File

@ -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()

View 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;
};

View File

@ -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");

View File

@ -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" />

View File

@ -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>