diff --git a/asmjit b/asmjit index d7fc62d9e9..9ead0cfb4c 160000 --- a/asmjit +++ b/asmjit @@ -1 +1 @@ -Subproject commit d7fc62d9e905859579f5965eee6f7f99b65c2246 +Subproject commit 9ead0cfb4cb5eb1bcf8c12b4a1ea115e438c44fa diff --git a/ffmpeg b/ffmpeg index 8bcaa2485c..352fdfbbfa 160000 --- a/ffmpeg +++ b/ffmpeg @@ -1 +1 @@ -Subproject commit 8bcaa2485c2434d7d7a9da17491bafb58de42bb6 +Subproject commit 352fdfbbfa6d7b26142f00b43d7e1802a03c68a8 diff --git a/rpcs3/Emu/CPU/CPUThread.h b/rpcs3/Emu/CPU/CPUThread.h index c9d716d553..0610219e8e 100644 --- a/rpcs3/Emu/CPU/CPUThread.h +++ b/rpcs3/Emu/CPU/CPUThread.h @@ -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 diff --git a/rpcs3/Emu/RSX/GL/GLGSRender.cpp b/rpcs3/Emu/RSX/GL/GLGSRender.cpp index c93782918a..6593244d40 100644 --- a/rpcs3/Emu/RSX/GL/GLGSRender.cpp +++ b/rpcs3/Emu/RSX/GL/GLGSRender.cpp @@ -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); diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index e2d38dc287..3f42777a40 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -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; diff --git a/rpcs3/Emu/RSX/RSXThread.h b/rpcs3/Emu/RSX/RSXThread.h index c928d9c288..f6763e2e80 100644 --- a/rpcs3/Emu/RSX/RSXThread.h +++ b/rpcs3/Emu/RSX/RSXThread.h @@ -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; diff --git a/rpcs3/Emu/SysCalls/ModuleManager.cpp b/rpcs3/Emu/SysCalls/ModuleManager.cpp index 3e894fdd29..99122c1844 100644 --- a/rpcs3/Emu/SysCalls/ModuleManager.cpp +++ b/rpcs3/Emu/SysCalls/ModuleManager.cpp @@ -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 (&(m_mod_init.back())) + 1; m_mod_init.emplace_back(0x0011, cellAudio_init); + cellCamera = static_cast (&(m_mod_init.back())) + 1; + m_mod_init.emplace_back(0x0023, cellCamera_init); cellDmux = static_cast (&(m_mod_init.back())) + 1; m_mod_init.emplace_back(0x0007, cellDmux_init); cellFiber = static_cast (&(m_mod_init.back())) + 1; @@ -248,6 +254,8 @@ void ModuleManager::init() m_mod_init.emplace_back(0x001e, cellL10n_init); cellNetCtl = static_cast (&(m_mod_init.back())) + 1; m_mod_init.emplace_back(0x0014, cellNetCtl_init); + cellOvis = static_cast (&(m_mod_init.back())) + 1; + m_mod_init.emplace_back(0x000b, cellOvis_init); cellPamf = static_cast (&(m_mod_init.back())) + 1; m_mod_init.emplace_back(0x0012, cellPamf_init); cellPngDec = static_cast (&(m_mod_init.back())) + 1; diff --git a/rpcs3/Emu/SysCalls/Modules/cellAdec.cpp b/rpcs3/Emu/SysCalls/Modules/cellAdec.cpp index e6999655cf..11b9158bc6 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellAdec.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellAdec.cpp @@ -609,7 +609,7 @@ int cellAdecQueryAttr(vm::ptr type, vm::ptr 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; } diff --git a/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp b/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp index c2237352bf..1e583d3c9e 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp @@ -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 diff --git a/rpcs3/Emu/SysCalls/Modules/cellCamera.h b/rpcs3/Emu/SysCalls/Modules/cellCamera.h new file mode 100644 index 0000000000..c56aae37fa --- /dev/null +++ b/rpcs3/Emu/SysCalls/Modules/cellCamera.h @@ -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 framerate; + be_t buffer; + be_t bytesize; + be_t width; + be_t height; + be_t dev_num; + be_t guid; + be_t info_ver; + be_t container; + be_t read_mode; + be_t pbuf[2]; +}; + +struct CellCameraReadEx +{ + be_t version; + be_t frame; + be_t bytesread; + //system_time_t timestamp; // TODO: Replace this with something + be_t pbuf; +}; \ No newline at end of file diff --git a/rpcs3/Emu/SysCalls/Modules/cellGem.cpp b/rpcs3/Emu/SysCalls/Modules/cellGem.cpp index 96ebff239e..47c5392d16 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellGem.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellGem.cpp @@ -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 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 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; } diff --git a/rpcs3/Emu/SysCalls/Modules/cellOvis.cpp b/rpcs3/Emu/SysCalls/Modules/cellOvis.cpp index f580c41608..46f6ea8a78 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellOvis.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellOvis.cpp @@ -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 diff --git a/rpcs3/Emu/SysCalls/Modules/cellResc.cpp b/rpcs3/Emu/SysCalls/Modules/cellResc.cpp index 079e9d82c6..735ab38984 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellResc.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellResc.cpp @@ -480,6 +480,7 @@ void SetupRsxRenderingStates(vm::ptr& 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; diff --git a/rpcs3/Emu/SysCalls/Modules/cellSysutil.cpp b/rpcs3/Emu/SysCalls/Modules/cellSysutil.cpp index e2babf4c71..b33f6f2f73 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSysutil.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellSysutil.cpp @@ -750,9 +750,11 @@ int cellHddGameCheck(u32 version, vm::ptr 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 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; } diff --git a/rpcs3/Emu/SysCalls/Modules/cellVdec.cpp b/rpcs3/Emu/SysCalls/Modules/cellVdec.cpp index adcc418cdc..0f7fc6b45c 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellVdec.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellVdec.cpp @@ -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; } diff --git a/rpcs3/Emu/SysCalls/Modules/cellVpost.cpp b/rpcs3/Emu/SysCalls/Modules/cellVpost.cpp index 16ee6c464a..5944b4f055 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellVpost.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellVpost.cpp @@ -21,7 +21,7 @@ int cellVpostQueryAttr(vm::ptr cfgParam, vm::ptrdelay = 0; - attr->memSize = 4 * 1024 * 1024; + attr->memSize = 4 * 1024 * 1024; // 4 MB attr->vpostVerLower = 0x280000; // from dmux attr->vpostVerUpper = 0x260000; diff --git a/rpcs3/Emu/SysCalls/Modules/sceNp.h b/rpcs3/Emu/SysCalls/Modules/sceNp.h index 0ac739cab0..f31bd6d25d 100644 --- a/rpcs3/Emu/SysCalls/Modules/sceNp.h +++ b/rpcs3/Emu/SysCalls/Modules/sceNp.h @@ -1128,7 +1128,7 @@ struct SceNpMatching2InvitationData struct SceNpMatching2SignalingOptParam { u8 type; - //u8 reserved1[1]; + u8 reserved1[1]; be_t 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 containerId; be_t requestCbQueueLen; be_t sessionEventCbQueueLen;; be_t sessionMsgCbQueueLen;; @@ -1796,7 +1796,7 @@ struct SceNpScoreRankData be_t highestRank; be_t scoreValue; be_t hasGameData; - //u8 pad0[4]; + u8 pad0[4]; CellRtcTick recordDate; }; @@ -1804,7 +1804,7 @@ struct SceNpScoreRankData struct SceNpScorePlayerRankData { be_t hasData; - //u8 pad0[4]; + u8 pad0[4]; SceNpScoreRankData rankData; }; @@ -1864,7 +1864,7 @@ struct SceNpScoreClanRankData struct SceNpScoreClanIdRankData { be_t hasData; - //u8 pad0[4]; + u8 pad0[4]; SceNpScoreClanRankData rankData; }; diff --git a/rpcs3/Emu/SysCalls/lv2/lv2Fs.cpp b/rpcs3/Emu/SysCalls/lv2/lv2Fs.cpp index b2d6da9860..9b75ed13a7 100644 --- a/rpcs3/Emu/SysCalls/lv2/lv2Fs.cpp +++ b/rpcs3/Emu/SysCalls/lv2/lv2Fs.cpp @@ -534,7 +534,7 @@ s32 cellFsGetFreeSize(vm::ptr path, vm::ptr> 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 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> 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(buf_addr), size); return CELL_OK; } diff --git a/rpcs3/Emu/SysCalls/lv2/lv2Fs.h b/rpcs3/Emu/SysCalls/lv2/lv2Fs.h index 841a7b994b..c7cf8814fe 100644 --- a/rpcs3/Emu/SysCalls/lv2/lv2Fs.h +++ b/rpcs3/Emu/SysCalls/lv2/lv2Fs.h @@ -70,6 +70,10 @@ enum cellFsStStatus CELL_FS_ST_PROGRESS = 0x0200, }; +enum cellFsErrors +{ + CELL_FS_ERANGE = 34 +}; #pragma pack(push, 4) diff --git a/rpcs3/Gui/ConLogFrame.cpp b/rpcs3/Gui/ConLogFrame.cpp index 0dd80f269e..9e9d0209fc 100644 --- a/rpcs3/Gui/ConLogFrame.cpp +++ b/rpcs3/Gui/ConLogFrame.cpp @@ -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 { diff --git a/rpcs3/Gui/KernelExplorer.cpp b/rpcs3/Gui/KernelExplorer.cpp index 3e51442db1..8db3a4a7b8 100644 --- a/rpcs3/Gui/KernelExplorer.cpp +++ b/rpcs3/Gui/KernelExplorer.cpp @@ -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); } diff --git a/rpcs3/Gui/MainFrame.cpp b/rpcs3/Gui/MainFrame.cpp index d53c4aec7d..fc47323a4f 100644 --- a/rpcs3/Gui/MainFrame.cpp +++ b/rpcs3/Gui/MainFrame.cpp @@ -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()); diff --git a/rpcs3/Ini.h b/rpcs3/Ini.h index efb7813cde..a7be1a2a5d 100644 --- a/rpcs3/Ini.h +++ b/rpcs3/Ini.h @@ -114,6 +114,9 @@ public: IniEntry AudioDumpToFile; IniEntry AudioConvertToU16; + // Camera + IniEntry CameraType; + // Input/Output IniEntry PadHandlerMode; IniEntry 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(); diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index 493972abc2..bc3b302f56 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -364,6 +364,7 @@ + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index 4b1f50caa3..8ab503da45 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -131,9 +131,15 @@ Emu\SysCalls\Modules + + Emu\SysCalls\Modules + Emu\SysCalls\Modules + + Emu\SysCalls\Modules + Emu\SysCalls\Modules @@ -152,12 +158,24 @@ Emu\SysCalls\Modules + + Emu\SysCalls\Modules + Emu\SysCalls\Modules + + Emu\SysCalls\Modules + Emu\SysCalls\Modules + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + Emu\SysCalls\Modules @@ -173,12 +191,21 @@ Emu\SysCalls\Modules + + Emu\SysCalls\Modules + Emu\SysCalls\Modules + + Emu\SysCalls\Modules + Emu\SysCalls\Modules + + Emu\SysCalls\Modules + Emu\SysCalls\Modules @@ -365,9 +392,6 @@ Emu\SysCalls\currently_unused - - Emu\SysCalls\currently_unused - Emu\SysCalls\currently_unused @@ -401,9 +425,6 @@ Emu\SysCalls\currently_unused - - Emu\SysCalls\currently_unused - Emu\SysCalls\currently_unused @@ -422,9 +443,6 @@ Emu\SysCalls\currently_unused - - Emu\Cell\currently_unused - Emu\SysCalls\currently_unused @@ -584,15 +602,6 @@ Utilities - - Emu\SysCalls\Modules - - - Emu\SysCalls\Modules - - - Emu\SysCalls\Modules - Utilities @@ -611,18 +620,6 @@ Emu\Memory - - Emu\SysCalls\Modules - - - Emu\SysCalls\Modules - - - Emu\SysCalls\Modules - - - Emu\SysCalls\Modules - @@ -676,12 +673,27 @@ Emu\SysCalls\Modules + + Emu\SysCalls\Modules + Emu\SysCalls\Modules + + Emu\SysCalls\Modules + Emu\SysCalls\Modules + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + Emu\SysCalls\Modules @@ -691,27 +703,54 @@ Emu\SysCalls\Modules + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + Emu\SysCalls\Modules + + Emu\SysCalls\Modules + Emu\SysCalls\Modules Emu\SysCalls\Modules - - Emu\SysCalls\Modules - Emu\SysCalls\Modules Emu\SysCalls\Modules + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + Emu\SysCalls\Modules + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + + + Emu\SysCalls\Modules + Emu\SysCalls\Modules @@ -745,6 +784,9 @@ Emu\SysCalls\Modules + + Emu\SysCalls\Modules + Emu\SysCalls\Modules @@ -1048,24 +1090,9 @@ Utilities - - Emu\SysCalls\Modules - - - Emu\SysCalls\Modules - - - Emu\SysCalls\Modules - Emu\SysCalls - - Emu\SysCalls\Modules - - - Emu\SysCalls\Modules - Emu\RSX\Null @@ -1126,15 +1153,9 @@ Utilities - - Emu\SysCalls\Modules - Emu - - Emu\SysCalls\Modules - Utilities @@ -1147,15 +1168,6 @@ Emu\Io\Null - - Emu\SysCalls\Modules - - - Emu\SysCalls\Modules - - - Emu\SysCalls\Modules - Utilities @@ -1192,18 +1204,6 @@ Emu\Memory - - Emu\SysCalls\Modules - - - Emu\SysCalls\Modules - - - Emu\SysCalls\Modules - - - Emu\SysCalls\Modules - Header Files diff --git a/rpcs3/rpcs3.cpp b/rpcs3/rpcs3.cpp index 09da440a9c..dc40edfd17 100644 --- a/rpcs3/rpcs3.cpp +++ b/rpcs3/rpcs3.cpp @@ -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();