This commit is contained in:
Nekotekina 2014-09-12 01:16:57 +04:00
commit 85f2009175
26 changed files with 464 additions and 183 deletions

2
asmjit

@ -1 +1 @@
Subproject commit d7fc62d9e905859579f5965eee6f7f99b65c2246
Subproject commit 9ead0cfb4cb5eb1bcf8c12b4a1ea115e438c44fa

2
ffmpeg

@ -1 +1 @@
Subproject commit 8bcaa2485c2434d7d7a9da17491bafb58de42bb6
Subproject commit 352fdfbbfa6d7b26142f00b43d7e1802a03c68a8

View File

@ -93,6 +93,22 @@ public:
return "Unknown";
}
std::string ThreadStatusToString()
{
switch (ThreadStatus())
{
case CPUThread_Ready: return "Ready";
case CPUThread_Running: return "Running";
case CPUThread_Paused: return "Paused";
case CPUThread_Stopped: return "Stopped";
case CPUThread_Sleeping: return "Sleeping";
case CPUThread_Break: return "Break";
case CPUThread_Step: return "Step";
default: return "Unknown status";
}
}
std::string GetTypeString() const { return CPUThreadTypeToString(m_type); }
virtual std::string GetThreadName() const

View File

@ -1804,6 +1804,12 @@ void GLGSRender::ExecCMD()
}
}
if (m_set_two_side_light_enable)
{
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
checkForGlError("glLightModeli");
}
if(m_set_shade_mode)
{
glShadeModel(m_shade_mode);

View File

@ -1122,6 +1122,12 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, const u32 args_addr, const
}
break;
case NV4097_SET_TWO_SIDE_LIGHT_EN:
{
m_set_two_side_light_enable = ARGS(0) ? true : false;
}
break;
case NV4097_SET_STENCIL_MASK:
{
m_set_stencil_mask = true;

View File

@ -288,6 +288,7 @@ public:
bool m_set_stencil_zpass;
u32 m_stencil_zpass;
bool m_set_two_sided_stencil_test_enable;
bool m_set_two_side_light_enable;
bool m_set_back_stencil_mask;
u32 m_back_stencil_mask;
bool m_set_back_stencil_func;
@ -465,6 +466,7 @@ protected:
m_set_point_sprite_control = false;
m_set_specular = false;
m_set_two_sided_stencil_test_enable = false;
m_set_two_side_light_enable = false;
m_set_surface_clip_horizontal = false;
m_set_surface_clip_vertical = false;
m_set_poly_offset_fill = false;
@ -554,6 +556,7 @@ protected:
m_set_blend_color = false;
m_set_stencil_test = false;
m_set_two_sided_stencil_test_enable = false;
m_set_two_side_light_enable = false;
m_set_stencil_mask = false;
m_set_stencil_func = false;
m_set_stencil_func_ref = false;

View File

@ -7,6 +7,8 @@ extern void cellAtrac_init();
extern Module *cellAtrac;
extern void cellAudio_init();
extern Module *cellAudio;
extern void cellCamera_init();
extern Module *cellCamera;
extern void cellDmux_init();
extern Module *cellDmux;
extern void cellFiber_init();
@ -35,6 +37,8 @@ extern void cellL10n_init();
extern Module *cellL10n;
extern void cellNetCtl_init();
extern Module *cellNetCtl;
extern void cellOvis_init();
extern Module *cellOvis;
extern void cellPamf_init();
extern Module *cellPamf;
extern void cellPngDec_init();
@ -226,6 +230,8 @@ void ModuleManager::init()
m_mod_init.emplace_back(0x0013, cellAtrac_init);
cellAudio = static_cast <Module*>(&(m_mod_init.back())) + 1;
m_mod_init.emplace_back(0x0011, cellAudio_init);
cellCamera = static_cast <Module*>(&(m_mod_init.back())) + 1;
m_mod_init.emplace_back(0x0023, cellCamera_init);
cellDmux = static_cast <Module*>(&(m_mod_init.back())) + 1;
m_mod_init.emplace_back(0x0007, cellDmux_init);
cellFiber = static_cast <Module*>(&(m_mod_init.back())) + 1;
@ -248,6 +254,8 @@ void ModuleManager::init()
m_mod_init.emplace_back(0x001e, cellL10n_init);
cellNetCtl = static_cast <Module*>(&(m_mod_init.back())) + 1;
m_mod_init.emplace_back(0x0014, cellNetCtl_init);
cellOvis = static_cast <Module*>(&(m_mod_init.back())) + 1;
m_mod_init.emplace_back(0x000b, cellOvis_init);
cellPamf = static_cast <Module*>(&(m_mod_init.back())) + 1;
m_mod_init.emplace_back(0x0012, cellPamf_init);
cellPngDec = static_cast <Module*>(&(m_mod_init.back())) + 1;

View File

@ -609,7 +609,7 @@ int cellAdecQueryAttr(vm::ptr<CellAdecType> type, vm::ptr<CellAdecAttr> attr)
// TODO: check values
attr->adecVerLower = 0x280000; // from dmux
attr->adecVerUpper = 0x260000;
attr->workMemSize = 4 * 1024 * 1024;
attr->workMemSize = 4 * 1024 * 1024; // 4 MB
return CELL_OK;
}

View File

@ -1,30 +1,37 @@
#include "stdafx.h"
#if 0
#include "Ini.h"
#include "Emu/Memory/Memory.h"
#include "Emu/SysCalls/Modules.h"
#include "cellCamera.h"
void cellCamera_init();
Module cellCamera(0x0023, cellCamera_init);
//Module cellCamera(0x0023, cellCamera_init);
Module *cellCamera = nullptr;
// Error Codes
enum
struct cellCameraInternal
{
CELL_CAMERA_ERROR_ALREADY_INIT = 0x80140801,
CELL_CAMERA_ERROR_NOT_INIT = 0x80140803,
CELL_CAMERA_ERROR_PARAM = 0x80140804,
CELL_CAMERA_ERROR_ALREADY_OPEN = 0x80140805,
CELL_CAMERA_ERROR_NOT_OPEN = 0x80140806,
CELL_CAMERA_ERROR_DEVICE_NOT_FOUND = 0x80140807,
CELL_CAMERA_ERROR_DEVICE_DEACTIVATED = 0x80140808,
CELL_CAMERA_ERROR_NOT_STARTED = 0x80140809,
CELL_CAMERA_ERROR_FORMAT_UNKNOWN = 0x8014080a,
CELL_CAMERA_ERROR_RESOLUTION_UNKNOWN = 0x8014080b,
CELL_CAMERA_ERROR_BAD_FRAMERATE = 0x8014080c,
CELL_CAMERA_ERROR_TIMEOUT = 0x8014080d,
CELL_CAMERA_ERROR_FATAL = 0x8014080f,
bool m_bInitialized;
cellCameraInternal()
: m_bInitialized(false)
{
}
};
cellCameraInternal cellCameraInstance;
int cellCameraInit()
{
UNIMPLEMENTED_FUNC(cellCamera);
cellCamera->Warning("cellCameraInit()");
if (cellCameraInstance.m_bInitialized)
return CELL_CAMERA_ERROR_ALREADY_INIT;
// TODO: Check if camera is connected, if not return CELL_CAMERA_ERROR_DEVICE_NOT_FOUND
cellCameraInstance.m_bInitialized = true;
return CELL_OK;
}
@ -58,9 +65,19 @@ int cellCameraGetDeviceGUID()
return CELL_OK;
}
int cellCameraGetType()
int cellCameraGetType(s32 dev_num, CellCameraType type)
{
UNIMPLEMENTED_FUNC(cellCamera);
cellCamera->Warning("cellCameraGetType(dev_num=%d, type_addr=0x%x)", dev_num, type);
if (Ini.CameraType.GetValue() == 1)
type = CELL_CAMERA_EYETOY;
else if (Ini.CameraType.GetValue() == 2)
type = CELL_CAMERA_EYETOY2;
else if (Ini.CameraType.GetValue() == 3)
type == CELL_CAMERA_USBVIDEOCLASS;
else
type = CELL_CAMERA_TYPE_UNKNOWN;
return CELL_OK;
}
@ -204,39 +221,38 @@ int cellCameraRemoveNotifyEventQueue2()
void cellCamera_init()
{
cellCamera.AddFunc(0xbf47c5dd, cellCameraInit);
cellCamera.AddFunc(0x5ad46570, cellCameraEnd);
cellCamera.AddFunc(0x85e1b8da, cellCameraOpen);
cellCamera.AddFunc(0x5d25f866, cellCameraOpenEx);
cellCamera.AddFunc(0x379c5dd6, cellCameraClose);
cellCamera->AddFunc(0xbf47c5dd, cellCameraInit);
cellCamera->AddFunc(0x5ad46570, cellCameraEnd);
cellCamera->AddFunc(0x85e1b8da, cellCameraOpen);
cellCamera->AddFunc(0x5d25f866, cellCameraOpenEx);
cellCamera->AddFunc(0x379c5dd6, cellCameraClose);
cellCamera.AddFunc(0x602e2052, cellCameraGetDeviceGUID);
cellCamera.AddFunc(0x58bc5870, cellCameraGetType);
cellCamera.AddFunc(0x8ca53dde, cellCameraIsAvailable);
cellCamera.AddFunc(0x7e063bbc, cellCameraIsAttached);
cellCamera.AddFunc(0xfa160f24, cellCameraIsOpen);
cellCamera.AddFunc(0x5eebf24e, cellCameraIsStarted);
cellCamera.AddFunc(0x532b8aaa, cellCameraGetAttribute);
cellCamera.AddFunc(0x8cd56eee, cellCameraSetAttribute);
cellCamera.AddFunc(0x7dac520c, cellCameraGetBufferSize);
cellCamera.AddFunc(0x10697d7f, cellCameraGetBufferInfo);
cellCamera.AddFunc(0x0e63c444, cellCameraGetBufferInfoEx);
cellCamera->AddFunc(0x602e2052, cellCameraGetDeviceGUID);
cellCamera->AddFunc(0x58bc5870, cellCameraGetType);
cellCamera->AddFunc(0x8ca53dde, cellCameraIsAvailable);
cellCamera->AddFunc(0x7e063bbc, cellCameraIsAttached);
cellCamera->AddFunc(0xfa160f24, cellCameraIsOpen);
cellCamera->AddFunc(0x5eebf24e, cellCameraIsStarted);
cellCamera->AddFunc(0x532b8aaa, cellCameraGetAttribute);
cellCamera->AddFunc(0x8cd56eee, cellCameraSetAttribute);
cellCamera->AddFunc(0x7dac520c, cellCameraGetBufferSize);
cellCamera->AddFunc(0x10697d7f, cellCameraGetBufferInfo);
cellCamera->AddFunc(0x0e63c444, cellCameraGetBufferInfoEx);
cellCamera.AddFunc(0x61dfbe83, cellCameraPrepExtensionUnit);
cellCamera.AddFunc(0xeb6f95fb, cellCameraCtrlExtensionUnit);
cellCamera.AddFunc(0xb602e328, cellCameraGetExtensionUnit);
cellCamera.AddFunc(0x2dea3e9b, cellCameraSetExtensionUnit);
cellCamera->AddFunc(0x61dfbe83, cellCameraPrepExtensionUnit);
cellCamera->AddFunc(0xeb6f95fb, cellCameraCtrlExtensionUnit);
cellCamera->AddFunc(0xb602e328, cellCameraGetExtensionUnit);
cellCamera->AddFunc(0x2dea3e9b, cellCameraSetExtensionUnit);
cellCamera.AddFunc(0x81f83db9, cellCameraReset);
cellCamera.AddFunc(0x456dc4aa, cellCameraStart);
cellCamera.AddFunc(0x3845d39b, cellCameraRead);
cellCamera.AddFunc(0x21fc151f, cellCameraReadEx);
cellCamera.AddFunc(0xe28b206b, cellCameraReadComplete);
cellCamera.AddFunc(0x02f5ced0, cellCameraStop);
cellCamera->AddFunc(0x81f83db9, cellCameraReset);
cellCamera->AddFunc(0x456dc4aa, cellCameraStart);
cellCamera->AddFunc(0x3845d39b, cellCameraRead);
cellCamera->AddFunc(0x21fc151f, cellCameraReadEx);
cellCamera->AddFunc(0xe28b206b, cellCameraReadComplete);
cellCamera->AddFunc(0x02f5ced0, cellCameraStop);
cellCamera.AddFunc(0xb0647e5a, cellCameraSetNotifyEventQueue);
cellCamera.AddFunc(0x9b98d258, cellCameraRemoveNotifyEventQueue);
cellCamera.AddFunc(0xa7fd2f5b, cellCameraSetNotifyEventQueue2);
cellCamera.AddFunc(0x44673f07, cellCameraRemoveNotifyEventQueue2);
cellCamera->AddFunc(0xb0647e5a, cellCameraSetNotifyEventQueue);
cellCamera->AddFunc(0x9b98d258, cellCameraRemoveNotifyEventQueue);
cellCamera->AddFunc(0xa7fd2f5b, cellCameraSetNotifyEventQueue2);
cellCamera->AddFunc(0x44673f07, cellCameraRemoveNotifyEventQueue2);
}
#endif

View File

@ -0,0 +1,78 @@
#pragma once
// Error Codes
enum
{
CELL_CAMERA_ERROR_ALREADY_INIT = 0x80140801,
CELL_CAMERA_ERROR_NOT_INIT = 0x80140803,
CELL_CAMERA_ERROR_PARAM = 0x80140804,
CELL_CAMERA_ERROR_ALREADY_OPEN = 0x80140805,
CELL_CAMERA_ERROR_NOT_OPEN = 0x80140806,
CELL_CAMERA_ERROR_DEVICE_NOT_FOUND = 0x80140807,
CELL_CAMERA_ERROR_DEVICE_DEACTIVATED = 0x80140808,
CELL_CAMERA_ERROR_NOT_STARTED = 0x80140809,
CELL_CAMERA_ERROR_FORMAT_UNKNOWN = 0x8014080a,
CELL_CAMERA_ERROR_RESOLUTION_UNKNOWN = 0x8014080b,
CELL_CAMERA_ERROR_BAD_FRAMERATE = 0x8014080c,
CELL_CAMERA_ERROR_TIMEOUT = 0x8014080d,
CELL_CAMERA_ERROR_FATAL = 0x8014080f,
};
// Camera types
enum CellCameraType
{
CELL_CAMERA_TYPE_UNKNOWN,
CELL_CAMERA_EYETOY,
CELL_CAMERA_EYETOY2,
CELL_CAMERA_USBVIDEOCLASS,
};
// Image format
enum CellCameraFormat
{
CELL_CAMERA_FORMAT_UNKNOWN,
CELL_CAMERA_JPG,
CELL_CAMERA_RAW8,
CELL_CAMERA_YUV422,
CELL_CAMERA_RAW10,
CELL_CAMERA_RGBA,
CELL_CAMERA_YUV420,
CELL_CAMERA_V_Y1_U_Y0,
CELL_CAMERA_Y0_U_Y1_V = CELL_CAMERA_YUV422,
};
// Image resolutiom
enum CellCameraResolution
{
CELL_CAMERA_RESOLUTION_UNKNOWN,
CELL_CAMERA_VGA,
CELL_CAMERA_QVGA,
CELL_CAMERA_WGA,
CELL_CAMERA_SPECIFIED_WIDTH_HEIGHT,
};
struct CellCameraInfoEx
{
CellCameraFormat format;
CellCameraResolution resolution;
be_t<s32> framerate;
be_t<u32> buffer;
be_t<s32> bytesize;
be_t<s32> width;
be_t<s32> height;
be_t<s32> dev_num;
be_t<s32> guid;
be_t<s32> info_ver;
be_t<u32> container;
be_t<s32> read_mode;
be_t<u32> pbuf[2];
};
struct CellCameraReadEx
{
be_t<s32> version;
be_t<u32> frame;
be_t<u32> bytesread;
//system_time_t timestamp; // TODO: Replace this with something
be_t<u32> pbuf;
};

View File

@ -1,4 +1,5 @@
#include "stdafx.h"
#include "Emu/Memory/Memory.h"
#include "Emu/SysCalls/Modules.h"
#include "cellGem.h"
@ -7,6 +8,18 @@ void cellGem_init();
//Module cellGem(0x005a, cellGem_init);
Module *cellGem = nullptr;
struct cellGemInternal
{
bool m_bInitialized;
cellGemInternal()
: m_bInitialized(false)
{
}
};
cellGemInternal cellGemInstance;
int cellGemCalibrate()
{
UNIMPLEMENTED_FUNC(cellGem);
@ -117,8 +130,7 @@ s32 cellGemGetMemorySize(be_t<s32> max_connect)
if (max_connect > CELL_GEM_MAX_NUM)
return CELL_GEM_ERROR_INVALID_PARAMETER;
// Return in kilobytes, megabytes or something else? (currently kilobytes)
return max_connect * 4000;
return 1024 * 1024 * max_connect; // 1 MB * max_connect
}
int cellGemGetRGB()
@ -157,9 +169,15 @@ int cellGemHSVtoRGB()
return CELL_OK;
}
int cellGemInit()
int cellGemInit(vm::ptr<CellGemAttribute> attribute)
{
UNIMPLEMENTED_FUNC(cellGem);
cellGem->Warning("cellGemInit(attribute_addr=0x%x)", attribute.addr());
if (cellGemInstance.m_bInitialized)
return CELL_GEM_ERROR_ALREADY_INITIALIZED;
cellGemInstance.m_bInitialized = true;
return CELL_OK;
}

View File

@ -1,8 +1,9 @@
#include "stdafx.h"
#if 0
#include "Emu/SysCalls/Modules.h"
void cellOvis_init();
Module cellOvis(0x000b, cellOvis_init);
//Module cellOvis(0x000b, cellOvis_init);
Module *cellOvis = nullptr;
// Return Codes
enum
@ -38,9 +39,8 @@ int cellOvisInvalidateOverlappedSegments()
void cellOvis_init()
{
cellOvis.AddFunc(0x82f294b2, cellOvisGetOverlayTableSize);
cellOvis.AddFunc(0xa876c911, cellOvisInitializeOverlayTable);
cellOvis.AddFunc(0xce6cb776, cellOvisFixSpuSegments);
cellOvis.AddFunc(0x629ba0c0, cellOvisInvalidateOverlappedSegments);
cellOvis->AddFunc(0x82f294b2, cellOvisGetOverlayTableSize);
cellOvis->AddFunc(0xa876c911, cellOvisInitializeOverlayTable);
cellOvis->AddFunc(0xce6cb776, cellOvisFixSpuSegments);
cellOvis->AddFunc(0x629ba0c0, cellOvisInvalidateOverlappedSegments);
}
#endif

View File

@ -480,6 +480,7 @@ void SetupRsxRenderingStates(vm::ptr<CellGcmContextData>& cntxt)
r.m_set_poly_offset_fill = false;
r.m_set_stencil_test = false;
r.m_set_two_sided_stencil_test_enable = false;
r.m_set_two_side_light_enable = false;
r.m_set_point_sprite_control = false;
r.m_set_dither = true;
r.m_set_shade_mode = true; r.m_shade_mode = CELL_GCM_SMOOTH;

View File

@ -750,9 +750,11 @@ int cellHddGameCheck(u32 version, vm::ptr<const char> dirName, u32 errDialog, vm
// TODO ?
funcStat(result, get, set);
if (result->result != CELL_HDDGAME_CBRESULT_OK &&
result->result != CELL_HDDGAME_CBRESULT_OK_CANCEL)
if (result->result.ToLE() != CELL_HDDGAME_CBRESULT_OK &&
result->result.ToLE() != CELL_HDDGAME_CBRESULT_OK_CANCEL) {
return CELL_HDDGAME_ERROR_CBRESULT;
}
// TODO ?
@ -832,7 +834,7 @@ int cellWebBrowserEstimate2(const vm::ptr<const CellWebBrowserConfig2> config, v
// TODO: When cellWebBrowser stuff is implemented, change this to some real
// needed memory buffer size.
*memSize = 1024 * 1024 * 1; // 1 MB
*memSize = 1 * 1024 * 1024; // 1 MB
return CELL_OK;
}

View File

@ -174,7 +174,7 @@ u32 vdecQueryAttr(CellVdecCodecType type, u32 profile, u32 spec_addr /* may be 0
// TODO: check values
attr->decoderVerLower = 0x280000; // from dmux
attr->decoderVerUpper = 0x260000;
attr->memSize = 4 * 1024 * 1024;
attr->memSize = 4 * 1024 * 1024; // 4 MB
attr->cmdDepth = 16;
return CELL_OK;
}

View File

@ -21,7 +21,7 @@ int cellVpostQueryAttr(vm::ptr<const CellVpostCfgParam> cfgParam, vm::ptr<CellVp
// TODO: check cfgParam and output values
attr->delay = 0;
attr->memSize = 4 * 1024 * 1024;
attr->memSize = 4 * 1024 * 1024; // 4 MB
attr->vpostVerLower = 0x280000; // from dmux
attr->vpostVerUpper = 0x260000;

View File

@ -1128,7 +1128,7 @@ struct SceNpMatching2InvitationData
struct SceNpMatching2SignalingOptParam
{
u8 type;
//u8 reserved1[1];
u8 reserved1[1];
be_t<u16> hubMemberId;
//u8 reserved2[4];
};
@ -1741,7 +1741,7 @@ struct SceNpMatching2SignalingOptParamUpdateInfo
// Matching2 utility intilization parameters
struct SceNpMatching2UtilityInitParam
{
//sys_memory_container_t containerId; //TODO: Uncomment this once sys_memory_container_t is implemented
be_t<u32> containerId;
be_t<u32> requestCbQueueLen;
be_t<u32> sessionEventCbQueueLen;;
be_t<u32> sessionMsgCbQueueLen;;
@ -1796,7 +1796,7 @@ struct SceNpScoreRankData
be_t<u32> highestRank;
be_t<s64> scoreValue;
be_t<s32> hasGameData;
//u8 pad0[4];
u8 pad0[4];
CellRtcTick recordDate;
};
@ -1804,7 +1804,7 @@ struct SceNpScoreRankData
struct SceNpScorePlayerRankData
{
be_t<s32> hasData;
//u8 pad0[4];
u8 pad0[4];
SceNpScoreRankData rankData;
};
@ -1864,7 +1864,7 @@ struct SceNpScoreClanRankData
struct SceNpScoreClanIdRankData
{
be_t<s32> hasData;
//u8 pad0[4];
u8 pad0[4];
SceNpScoreClanRankData rankData;
};

View File

@ -534,7 +534,7 @@ s32 cellFsGetFreeSize(vm::ptr<const char> path, vm::ptr<be_t<u32>> block_size, v
// TODO: Get real values. Currently, it always returns 40 GB of free space divided in 4 KB blocks
*block_size = 4096; // ?
*block_count = 10485760; // ?
*block_count = 10 * 1024 * 1024; // ?
return CELL_OK;
}
@ -589,9 +589,13 @@ s32 cellFsStReadInit(u32 fd, vm::ptr<CellFsRingBuffer> ringbuf)
fs_config.m_ring_buffer = *ringbuf;
if(ringbuf->ringbuf_size < 0x40000000) // If the size is less than 1MB
// If the size is less than 1MB
if(ringbuf->ringbuf_size < 0x40000000) {
fs_config.m_alloc_mem_size = (((u32)ringbuf->ringbuf_size + 64 * 1024 - 1) / (64 * 1024)) * (64 * 1024);
fs_config.m_alloc_mem_size = (((u32)ringbuf->ringbuf_size + 1024 * 1024 - 1) / (1024 * 1024)) * (1024 * 1024);
}
else {
fs_config.m_alloc_mem_size = (((u32)ringbuf->ringbuf_size + 1024 * 1024 - 1) / (1024 * 1024)) * (1024 * 1024);
}
// alloc memory
fs_config.m_buffer = (u32)Memory.Alloc(fs_config.m_alloc_mem_size, 1024);
@ -692,15 +696,20 @@ s32 cellFsStReadStop(u32 fd)
s32 cellFsStRead(u32 fd, u32 buf_addr, u64 size, vm::ptr<be_t<u64>> rsize)
{
sys_fs->Todo("cellFsStRead(fd=%d, buf_addr=0x%x, size=0x%llx, rsize_addr = 0x%x)", fd, buf_addr, size, rsize.addr());
sys_fs->Warning("cellFsStRead(fd=%d, buf_addr=0x%x, size=0x%llx, rsize_addr=0x%x)", fd, buf_addr, size, rsize.addr());
LV2_LOCK(0);
vfsStream* file;
if(!sys_fs->CheckId(fd, file)) return CELL_ESRCH;
// TODO: use ringbuffer (fs_config)
fs_config.m_regid += size;
*rsize = fs_config.m_regid;
if (file->Eof())
return CELL_FS_ERANGE;
*rsize = file->Read(vm::get_ptr<void>(buf_addr), size);
return CELL_OK;
}

View File

@ -70,6 +70,10 @@ enum cellFsStStatus
CELL_FS_ST_PROGRESS = 0x0200,
};
enum cellFsErrors
{
CELL_FS_ERANGE = 34
};
#pragma pack(push, 4)

View File

@ -11,10 +11,10 @@
wxDEFINE_EVENT(EVT_LOG_COMMAND, wxCommandEvent);
//amount of memory in bytes used to buffer log messages for the gui
const int BUFFER_MAX_SIZE = 1024 * 1024;
const int BUFFER_MAX_SIZE = 1048576; // 1MB
//amount of characters in the TextCtrl text-buffer for the emulation log
const int GUI_BUFFER_MAX_SIZE = 1024 * 1024;
const int GUI_BUFFER_MAX_SIZE = 1048576; // 1MB
enum
{

View File

@ -5,6 +5,8 @@
#include "Emu/IdManager.h"
#include "KernelExplorer.h"
#include "Emu/CPU/CPUThreadManager.h"
#include "Emu/CPU/CPUThread.h"
KernelExplorer::KernelExplorer(wxWindow* parent)
: wxFrame(parent, wxID_ANY, "Kernel Explorer", wxDefaultPosition, wxSize(700, 450))
@ -46,17 +48,17 @@ void KernelExplorer::Update()
m_tree->DeleteAllItems();
const auto& root = m_tree->AddRoot("Process, ID = 0x00000001, Total Memory Usage = 0x???????? (???.? MB)");
// TODO: PPU Threads
// TODO: SPU/RawSPU Threads
// TODO: FileSystem
// Semaphores
count = Emu.GetIdManager().GetTypeCount(TYPE_SEMAPHORE);
if (count) {
if (count)
{
sprintf(name, "Semaphores (%d)", count);
const auto& node = m_tree->AppendItem(root, name);
const auto& objects = Emu.GetIdManager().GetTypeIDs(TYPE_SEMAPHORE);
for (const auto& id : objects) {
for (const auto& id : objects)
{
sprintf(name, "Semaphore: ID = 0x%08x", id);
m_tree->AppendItem(node, name);
}
@ -64,11 +66,13 @@ void KernelExplorer::Update()
// Mutexes
count = Emu.GetIdManager().GetTypeCount(TYPE_MUTEX);
if (count) {
if (count)
{
sprintf(name, "Mutexes (%d)", count);
const auto& node = m_tree->AppendItem(root, name);
const auto& objects = Emu.GetIdManager().GetTypeIDs(TYPE_MUTEX);
for (const auto& id : objects) {
for (const auto& id : objects)
{
sprintf(name, "Mutex: ID = 0x%08x", id);
m_tree->AppendItem(node, name);
}
@ -76,11 +80,13 @@ void KernelExplorer::Update()
// Light Weight Mutexes
count = Emu.GetIdManager().GetTypeCount(TYPE_LWMUTEX);
if (count) {
if (count)
{
sprintf(name, "Light Weight Mutexes (%d)", count);
const auto& node = m_tree->AppendItem(root, name);
const auto& objects = Emu.GetIdManager().GetTypeIDs(TYPE_LWMUTEX);
for (const auto& id : objects) {
for (const auto& id : objects)
{
sprintf(name, "LW Mutex: ID = 0x%08x", id);
m_tree->AppendItem(node, name);
}
@ -88,11 +94,13 @@ void KernelExplorer::Update()
// Condition Variables
count = Emu.GetIdManager().GetTypeCount(TYPE_COND);
if (count) {
if (count)
{
sprintf(name, "Condition Variables (%d)", count);
const auto& node = m_tree->AppendItem(root, name);
const auto& objects = Emu.GetIdManager().GetTypeIDs(TYPE_COND);
for (const auto& id : objects) {
for (const auto& id : objects)
{
sprintf(name, "Condition Variable: ID = 0x%08x", id);
m_tree->AppendItem(node, name);
}
@ -100,11 +108,13 @@ void KernelExplorer::Update()
// Light Weight Condition Variables
count = Emu.GetIdManager().GetTypeCount(TYPE_LWCOND);
if (count) {
if (count)
{
sprintf(name, "Light Weight Condition Variables (%d)", count);
const auto& node = m_tree->AppendItem(root, name);
const auto& objects = Emu.GetIdManager().GetTypeIDs(TYPE_LWCOND);
for (const auto& id : objects) {
for (const auto& id : objects)
{
sprintf(name, "LW Condition Variable: ID = 0x%08x", id);
m_tree->AppendItem(node, name);
}
@ -112,11 +122,13 @@ void KernelExplorer::Update()
// Event Queues
count = Emu.GetIdManager().GetTypeCount(TYPE_EVENT_QUEUE);
if (count) {
if (count)
{
sprintf(name, "Event Queues (%d)", count);
const auto& node = m_tree->AppendItem(root, name);
const auto& objects = Emu.GetIdManager().GetTypeIDs(TYPE_EVENT_QUEUE);
for (const auto& id : objects) {
for (const auto& id : objects)
{
sprintf(name, "Event Queue: ID = 0x%08x", id);
m_tree->AppendItem(node, name);
}
@ -124,13 +136,15 @@ void KernelExplorer::Update()
// Modules
count = Emu.GetIdManager().GetTypeCount(TYPE_PRX);
if (count) {
if (count)
{
sprintf(name, "Modules (%d)", count);
const auto& node = m_tree->AppendItem(root, name);
const auto& objects = Emu.GetIdManager().GetTypeIDs(TYPE_PRX);
sprintf(name, "Segment List (%d)", 2 * objects.size()); // TODO: Assuming 2 segments per PRX file is not good
m_tree->AppendItem(node, name);
for (const auto& id : objects) {
for (const auto& id : objects)
{
sprintf(name, "PRX: ID = 0x%08x", id);
m_tree->AppendItem(node, name);
}
@ -138,27 +152,98 @@ void KernelExplorer::Update()
// Memory Containers
count = Emu.GetIdManager().GetTypeCount(TYPE_MEM);
if (count) {
if (count)
{
sprintf(name, "Memory Containers (%d)", count);
const auto& node = m_tree->AppendItem(root, name);
const auto& objects = Emu.GetIdManager().GetTypeIDs(TYPE_MEM);
for (const auto& id : objects) {
for (const auto& id : objects)
{
sprintf(name, "Memory Container: ID = 0x%08x", id);
m_tree->AppendItem(node, name);
}
}
// Event Flags
count = Emu.GetIdManager().GetTypeCount(TYPE_EVENT_FLAG);
if (count) {
if (count)
{
sprintf(name, "Event Flags (%d)", count);
const auto& node = m_tree->AppendItem(root, name);
const auto& objects = Emu.GetIdManager().GetTypeIDs(TYPE_EVENT_FLAG);
for (const auto& id : objects) {
for (const auto& id : objects)
{
sprintf(name, "Event Flag: ID = 0x%08x", id);
m_tree->AppendItem(node, name);
}
}
// PPU / SPU / RawSPU threads
{
// TODO: add mutexes owners
const auto& objects = Emu.GetCPU().GetThreads();
u32 ppu_threads_count = 0;
u32 spu_threads_count = 0;
u32 raw_spu_threads_count = 0;
for (const auto& thread : objects)
{
if (thread->GetType() == CPU_THREAD_PPU)
ppu_threads_count++;
if (thread->GetType() == CPU_THREAD_SPU)
spu_threads_count++;
if (thread->GetType() == CPU_THREAD_RAW_SPU)
raw_spu_threads_count++;
}
if (ppu_threads_count)
{
sprintf(name, "PPU Threads (%d)", ppu_threads_count);
const auto& node = m_tree->AppendItem(root, name);
for (const auto& thread : objects)
{
if (thread->GetType() == CPU_THREAD_PPU)
{
sprintf(name, "Thread: ID = 0x%08x ''%s'', - %s", thread->GetId(), thread->GetName().c_str(), thread->ThreadStatusToString().c_str());
m_tree->AppendItem(node, name);
}
}
}
if (spu_threads_count)
{
sprintf(name, "SPU Threads (%d)", spu_threads_count);
const auto& node = m_tree->AppendItem(root, name);
for (const auto& thread : objects)
{
if (thread->GetType() == CPU_THREAD_SPU)
{
sprintf(name, "Thread: ID = 0x%08x ''%s'', - %s", thread->GetId(), thread->GetName().c_str(), thread->ThreadStatusToString().c_str());
m_tree->AppendItem(node, name);
}
}
}
if (raw_spu_threads_count)
{
sprintf(name, "RawSPU Threads (%d)", raw_spu_threads_count);
const auto& node = m_tree->AppendItem(root, name);
for (const auto& thread : objects)
{
if (thread->GetType() == CPU_THREAD_RAW_SPU)
{
sprintf(name, "Thread: ID = 0x%08x ''%s'', - %s", thread->GetId(), thread->GetName().c_str(), thread->ThreadStatusToString().c_str());
m_tree->AppendItem(node, name);
}
}
}
}
m_tree->Expand(root);
}

View File

@ -332,8 +332,8 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
}
wxDialog diag(this, wxID_ANY, "Settings", wxDefaultPosition);
static const u32 width = 425;
static const u32 height = 400;
static const u32 width = 385;
// Settings panels
wxNotebook* nb_config = new wxNotebook(&diag, wxID_ANY, wxPoint(6,6), wxSize(width, height));
@ -341,12 +341,14 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
wxPanel* p_cpu = new wxPanel(nb_config, wxID_ANY);
wxPanel* p_graphics = new wxPanel(nb_config, wxID_ANY);
wxPanel* p_audio = new wxPanel(nb_config, wxID_ANY);
wxPanel* p_camera = new wxPanel(nb_config, wxID_ANY);
wxPanel* p_io = new wxPanel(nb_config, wxID_ANY);
wxPanel* p_hle = new wxPanel(nb_config, wxID_ANY);
nb_config->AddPage(p_cpu, wxT("Core"));
nb_config->AddPage(p_graphics, wxT("Graphics"));
nb_config->AddPage(p_audio, wxT("Audio"));
nb_config->AddPage(p_camera, wxT("Camera"));
nb_config->AddPage(p_io, wxT("Input / Output"));
nb_config->AddPage(p_hle, wxT("HLE / Misc."));
nb_config->AddPage(p_system, wxT("System"));
@ -355,6 +357,7 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
wxBoxSizer* s_subpanel_cpu = new wxBoxSizer(wxVERTICAL);
wxBoxSizer* s_subpanel_graphics = new wxBoxSizer(wxVERTICAL);
wxBoxSizer* s_subpanel_audio = new wxBoxSizer(wxVERTICAL);
wxBoxSizer* s_subpanel_camera = new wxBoxSizer(wxVERTICAL);
wxBoxSizer* s_subpanel_io = new wxBoxSizer(wxVERTICAL);
wxBoxSizer* s_subpanel_hle = new wxBoxSizer(wxVERTICAL);
@ -375,6 +378,9 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
// Audio
wxStaticBoxSizer* s_round_audio_out = new wxStaticBoxSizer(wxVERTICAL, p_audio, _("Audio Out"));
// Camera
wxStaticBoxSizer* s_round_camera_type = new wxStaticBoxSizer(wxVERTICAL, p_camera, _("Camera type"));
// HLE / Misc.
wxStaticBoxSizer* s_round_hle_log_lvl = new wxStaticBoxSizer(wxVERTICAL, p_hle, _("Log Level"));
@ -390,6 +396,7 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
wxComboBox* cbox_keyboard_handler = new wxComboBox(p_io, wxID_ANY);
wxComboBox* cbox_mouse_handler = new wxComboBox(p_io, wxID_ANY);
wxComboBox* cbox_audio_out = new wxComboBox(p_audio, wxID_ANY);
wxComboBox* cbox_camera_type = new wxComboBox(p_camera, wxID_ANY);
wxComboBox* cbox_hle_loglvl = new wxComboBox(p_hle, wxID_ANY);
wxComboBox* cbox_sys_lang = new wxComboBox(p_system, wxID_ANY);
@ -445,6 +452,11 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
cbox_audio_out->Append("Null");
cbox_audio_out->Append("OpenAL");
cbox_camera_type->Append("Unknown");
cbox_camera_type->Append("EyeToy");
cbox_camera_type->Append("PlayStation Eye");
cbox_camera_type->Append("USB Video Class 1.1");
cbox_hle_loglvl->Append("All");
cbox_hle_loglvl->Append("Success");
cbox_hle_loglvl->Append("Warnings");
@ -496,6 +508,7 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
cbox_keyboard_handler->SetSelection(Ini.KeyboardHandlerMode.GetValue());
cbox_mouse_handler ->SetSelection(Ini.MouseHandlerMode.GetValue());
cbox_audio_out ->SetSelection(Ini.AudioOutMode.GetValue());
cbox_camera_type ->SetSelection(Ini.CameraType.GetValue());
cbox_hle_loglvl ->SetSelection(Ini.HLELogLvl.GetValue());
cbox_sys_lang ->SetSelection(Ini.SysLanguage.GetValue());
@ -518,6 +531,8 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
s_round_audio_out->Add(cbox_audio_out, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_camera_type->Add(cbox_camera_type, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_hle_log_lvl->Add(cbox_hle_loglvl, wxSizerFlags().Border(wxALL, 5).Expand());
s_round_sys_lang->Add(cbox_sys_lang, wxSizerFlags().Border(wxALL, 5).Expand());
@ -545,6 +560,9 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
s_subpanel_audio->Add(chbox_audio_dump, wxSizerFlags().Border(wxALL, 5).Expand());
s_subpanel_audio->Add(chbox_audio_conv, wxSizerFlags().Border(wxALL, 5).Expand());
// Camera
s_subpanel_camera->Add(s_round_camera_type, wxSizerFlags().Border(wxALL, 5).Expand());
// HLE / Misc.
s_subpanel_hle->Add(s_round_hle_log_lvl, wxSizerFlags().Border(wxALL, 5).Expand());
s_subpanel_hle->Add(chbox_hle_logging, wxSizerFlags().Border(wxALL, 5).Expand());
@ -570,6 +588,7 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
diag.SetSizerAndFit(s_subpanel_graphics, false);
diag.SetSizerAndFit(s_subpanel_io, false);
diag.SetSizerAndFit(s_subpanel_audio, false);
diag.SetSizerAndFit(s_subpanel_camera, false);
diag.SetSizerAndFit(s_subpanel_hle, false);
diag.SetSizerAndFit(s_subpanel_system, false);
diag.SetSizerAndFit(s_b_panel, false);
@ -593,6 +612,7 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
Ini.AudioOutMode.SetValue(cbox_audio_out->GetSelection());
Ini.AudioDumpToFile.SetValue(chbox_audio_dump->GetValue());
Ini.AudioConvertToU16.SetValue(chbox_audio_conv->GetValue());
Ini.CameraType.SetValue(cbox_camera_type->GetSelection());
Ini.HLELogging.SetValue(chbox_hle_logging->GetValue());
Ini.HLEHookStFunc.SetValue(chbox_hle_hook_stfunc->GetValue());
Ini.HLESaveTTY.SetValue(chbox_hle_savetty->GetValue());

View File

@ -114,6 +114,9 @@ public:
IniEntry<bool> AudioDumpToFile;
IniEntry<bool> AudioConvertToU16;
// Camera
IniEntry<u8> CameraType;
// Input/Output
IniEntry<u8> PadHandlerMode;
IniEntry<u8> KeyboardHandlerMode;
@ -183,6 +186,9 @@ public:
AudioDumpToFile.Init("Audio_AudioDumpToFile", path);
AudioConvertToU16.Init("Audio_AudioConvertToU16", path);
// Camera
CameraType.Init("Camera_Type", path);
// Input/Output
PadHandlerMode.Init("IO_PadHandlerMode", path);
KeyboardHandlerMode.Init("IO_KeyboardHandlerMode", path);
@ -248,6 +254,9 @@ public:
AudioDumpToFile.Load(false);
AudioConvertToU16.Load(false);
// Camera
CameraType.Load(2);
// Input/Ouput
PadHandlerMode.Load(1);
KeyboardHandlerMode.Load(0);
@ -314,6 +323,9 @@ public:
AudioDumpToFile.Save();
AudioConvertToU16.Save();
// Camera
CameraType.Save();
// Input/Output
PadHandlerMode.Save();
KeyboardHandlerMode.Save();

View File

@ -364,6 +364,7 @@
<ClInclude Include="Emu\SysCalls\Modules.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellAdec.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellAtrac.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellCamera.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellDmux.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellFiber.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellFont.h" />

View File

@ -131,9 +131,15 @@
<ClCompile Include="Emu\SysCalls\Modules\cellAudio.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellCamera.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellDmux.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellFiber.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellFont.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
@ -152,12 +158,24 @@
<ClCompile Include="Emu\SysCalls\Modules\cellJpgDec.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellKb.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellL10n.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellMouse.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellNetCtl.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellOvis.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellPad.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellPamf.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
@ -173,12 +191,21 @@
<ClCompile Include="Emu\SysCalls\Modules\cellRtc.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellSaveData.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellSpurs.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellSpursJq.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellSync.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellSync2.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellSysmodule.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
@ -365,9 +392,6 @@
<ClCompile Include="Emu\SysCalls\Modules\cellBgdl.cpp">
<Filter>Emu\SysCalls\currently_unused</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellCamera.cpp">
<Filter>Emu\SysCalls\currently_unused</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellCelp8Enc.cpp">
<Filter>Emu\SysCalls\currently_unused</Filter>
</ClCompile>
@ -401,9 +425,6 @@
<ClCompile Include="Emu\SysCalls\Modules\cellMusicExport.cpp">
<Filter>Emu\SysCalls\currently_unused</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellOvis.cpp">
<Filter>Emu\SysCalls\currently_unused</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellPhotoDecode.cpp">
<Filter>Emu\SysCalls\currently_unused</Filter>
</ClCompile>
@ -422,9 +443,6 @@
<ClCompile Include="Emu\SysCalls\Modules\cellRudp.cpp">
<Filter>Emu\SysCalls\currently_unused</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellSail.cpp">
<Filter>Emu\Cell\currently_unused</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellSailRec.cpp">
<Filter>Emu\SysCalls\currently_unused</Filter>
</ClCompile>
@ -584,15 +602,6 @@
<ClCompile Include="Ini.cpp">
<Filter>Utilities</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellSync2.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellSpursJq.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellFiber.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="..\Utilities\rFile.cpp">
<Filter>Utilities</Filter>
</ClCompile>
@ -611,18 +620,6 @@
<ClCompile Include="Emu\Memory\vm.cpp">
<Filter>Emu\Memory</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellMouse.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellKb.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellPad.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
<ClCompile Include="Emu\SysCalls\Modules\cellSaveData.cpp">
<Filter>Emu\SysCalls\Modules</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Crypto\aes.h">
@ -676,12 +673,27 @@
<ClInclude Include="Emu\SysCalls\Modules\cellAtrac.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellCamera.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellDmux.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellFiber.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellFont.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellFontFT.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellGame.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellGcmSys.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellGem.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
@ -691,27 +703,54 @@
<ClInclude Include="Emu\SysCalls\Modules\cellJpgDec.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellKb.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellL10n.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellMouse.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellMsgDialog.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellNetCtl.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellPad.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellPamf.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellPngDec.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellSail.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellResc.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellRtc.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellSail.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellSaveData.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellSpurs.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellSpursJq.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellSync.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellSync2.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellSysutil.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
@ -745,6 +784,9 @@
<ClInclude Include="Emu\SysCalls\Modules\sceNpTus.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\sysPrxForUser.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\sys_net.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
@ -1048,24 +1090,9 @@
<ClInclude Include="..\Utilities\Log.h">
<Filter>Utilities</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellGame.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellMsgDialog.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellSync.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\LogBase.h">
<Filter>Emu\SysCalls</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellGcmSys.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\sysPrxForUser.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\Null\NullGSRender.h">
<Filter>Emu\RSX\Null</Filter>
</ClInclude>
@ -1126,15 +1153,9 @@
<ClInclude Include="..\Utilities\AutoPause.h">
<Filter>Utilities</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellL10n.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\IdManager.h">
<Filter>Emu</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellFontFT.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Ini.h">
<Filter>Utilities</Filter>
</ClInclude>
@ -1147,15 +1168,6 @@
<ClInclude Include="Emu\Io\Null\NullMouseHandler.h">
<Filter>Emu\Io\Null</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellSync2.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellSpursJq.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellFiber.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="..\Utilities\MTRingbuffer.h">
<Filter>Utilities</Filter>
</ClInclude>
@ -1192,18 +1204,6 @@
<ClInclude Include="Emu\Memory\vm_var.h">
<Filter>Emu\Memory</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellPad.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellKb.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellMouse.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellSaveData.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="restore_new.h">
<Filter>Header Files</Filter>
</ClInclude>

View File

@ -152,11 +152,7 @@ void Rpcs3App::OnArguments()
// rpcs3-*.exe Initializes RPCS3
// rpcs3-*.exe [(S)ELF] Initializes RPCS3, then loads and runs the specified (S)ELF file.
if (Rpcs3App::argc > 1)
{
// Force this value to be true
Ini.HLEExitOnStop.SetValue(true);
if (Rpcs3App::argc > 1) {
Emu.SetPath(fmt::ToUTF8(argv[1]));
Emu.Load();
Emu.Run();