From ddcaf4972fc898697c9c045d1560530bd1301509 Mon Sep 17 00:00:00 2001 From: Raul Tambre Date: Tue, 14 Jul 2015 14:45:31 +0300 Subject: [PATCH] Better fix for savedata and cellCamera improvements --- rpcs3/Emu/SysCalls/Modules/cellCamera.cpp | 16 ++++++++++----- rpcs3/Emu/SysCalls/Modules/cellSaveData.cpp | 22 +++++++-------------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp b/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp index 2a62b2a9ea..73b41413ab 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp @@ -121,25 +121,31 @@ s32 cellCameraGetType(s32 dev_num, vm::ptr type) s32 cellCameraIsAvailable(s32 dev_num) { - UNIMPLEMENTED_FUNC(cellCamera); + cellCamera.Todo("cellCameraIsAvailable(dev_num=%d)", dev_num); return CELL_OK; } s32 cellCameraIsAttached(s32 dev_num) { - UNIMPLEMENTED_FUNC(cellCamera); - return CELL_OK; + cellCamera.Warning("cellCameraIsAttached(dev_num=%d)", dev_num); + + if (Ini.Camera.GetValue() == 1) + { + return 1; + } + + return CELL_OK; // CELL_OK means that no camera is attached } s32 cellCameraIsOpen(s32 dev_num) { - UNIMPLEMENTED_FUNC(cellCamera); + cellCamera.Todo("cellCameraIsOpen(dev_num=%d)", dev_num); return CELL_OK; } s32 cellCameraIsStarted(s32 dev_num) { - UNIMPLEMENTED_FUNC(cellCamera); + cellCamera.Todo("cellCameraIsStarted(dev_num=%d)", dev_num); return CELL_OK; } diff --git a/rpcs3/Emu/SysCalls/Modules/cellSaveData.cpp b/rpcs3/Emu/SysCalls/Modules/cellSaveData.cpp index 8b6d66b328..e093675d72 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSaveData.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellSaveData.cpp @@ -351,24 +351,16 @@ never_inline s32 savedata_op( { if (!Emu.GetVFS().ExistsDir(dir_path) && !Emu.GetVFS().CreateDir(dir_path)) { - // Let's ignore this error for now + cellSysutil.Error("savedata_op(): Savedata directory creation failed."); } else { - std::string rSfo_path = "/dev_hdd0/game/" + save_entry.dirName.substr(0, 9) + "/PS3_GAME/PARAM.SFO"; // The real SFO path - if (!Emu.GetVFS().ExistsFile(rSfo_path)) - { - rSfo_path = "/dev_hdd0/game/" + save_entry.dirName.substr(0, 9) + "/PARAM.SFO"; - } - - vfsFile rSfo(rSfo_path); - PSFLoader rPsf(rSfo); - psf.Clear(); - psf.SetInteger("ATTRIBUTE", rPsf.GetInteger("ATTRIBUTE")); - psf.SetString("TITLE", rPsf.GetString("TITLE")); - psf.SetString("SUB_TITLE", rPsf.GetString("SUB_TITLE")); - psf.SetString("DETAIL", rPsf.GetString("DETAIL")); - psf.SetString("SAVEDATA_LIST_PARAM", rPsf.GetString("SAVEDATA_LIST_PARAM")); + // Is loading the PARAM.SFO really necessary? Setting empty stuff seems to fix a couple games. + psf.SetInteger("ATTRIBUTE", 0); + psf.SetString("TITLE", ""); + psf.SetString("SUB_TITLE", ""); + psf.SetString("DETAIL", ""); + psf.SetString("SAVEDATA_LIST_PARAM", ""); } }