From 8204deaae6fad61c01714b6d558addb2bf60ca87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandro=20S=C3=A1nchez=20Bach?= Date: Tue, 4 Mar 2014 15:40:15 +0100 Subject: [PATCH] Minor changes * Fixed some forgotten `!` in cellFsGetFreeSize. * Fixed VSUM2SWS opcode. * Added cellNetCtl to the project. * Implemented cellNetCtlGetState. --- rpcs3/Crypto/unself.cpp | 2 +- rpcs3/Emu/Cell/PPUInterpreter.h | 4 ++-- rpcs3/Emu/SysCalls/Modules/cellNetCtl.cpp | 18 ++++++++++++++++-- rpcs3/Emu/SysCalls/lv2/SC_FileSystem.cpp | 2 +- rpcs3/rpcs3.vcxproj | 1 + rpcs3/rpcs3.vcxproj.filters | 3 +++ 6 files changed, 24 insertions(+), 6 deletions(-) diff --git a/rpcs3/Crypto/unself.cpp b/rpcs3/Crypto/unself.cpp index 8a98c4a87f..df298b434c 100644 --- a/rpcs3/Crypto/unself.cpp +++ b/rpcs3/Crypto/unself.cpp @@ -525,7 +525,7 @@ bool SELFDecrypter::GetKeyFromRap(u8 *content_id, u8 *npdrm_key) return false; } - ConLog.Write("Loading RAP file %s", ci_str.wc_str() + wchar_t(".rap")); + ConLog.Write("Loading RAP file %s", ci_str.wc_str() + wchar_t(".rap")); rap_file.Read(rap_key, 0x10); rap_file.Close(); diff --git a/rpcs3/Emu/Cell/PPUInterpreter.h b/rpcs3/Emu/Cell/PPUInterpreter.h index 8f2e11ba1d..3413e2f3f0 100644 --- a/rpcs3/Emu/Cell/PPUInterpreter.h +++ b/rpcs3/Emu/Cell/PPUInterpreter.h @@ -1889,8 +1889,6 @@ private: } void VSUM2SWS(u32 vd, u32 va, u32 vb) { - CPU.VPR[vd].Clear(); - for (uint n = 0; n < 2; n++) { s64 sum = (s64)CPU.VPR[va]._s32[n*2] + CPU.VPR[va]._s32[n*2 + 1] + CPU.VPR[vb]._s32[n*2]; @@ -1908,6 +1906,8 @@ private: else CPU.VPR[vd]._s32[n*2] = (s32)sum; } + CPU.VPR[vd]._s32[1] = 0; + CPU.VPR[vd]._s32[3] = 0; } void VSUM4SBS(u32 vd, u32 va, u32 vb) { diff --git a/rpcs3/Emu/SysCalls/Modules/cellNetCtl.cpp b/rpcs3/Emu/SysCalls/Modules/cellNetCtl.cpp index 9dc8a2364b..6c4dfa6e4c 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellNetCtl.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellNetCtl.cpp @@ -45,6 +45,15 @@ enum CELL_NET_CTL_ERROR_DHCP_LEASE_TIME = 0x80130504, }; +// Network connection states +enum +{ + CELL_NET_CTL_STATE_Disconnected = 0, + CELL_NET_CTL_STATE_Connecting = 1, + CELL_NET_CTL_STATE_IPObtaining = 2, + CELL_NET_CTL_STATE_IPObtained = 3, +}; + int cellNetCtlInit() { UNIMPLEMENTED_FUNC(cellNetCtl); @@ -57,9 +66,14 @@ int cellNetCtlTerm() return CELL_OK; } -int cellNetCtlGetState() +int cellNetCtlGetState(mem32_t state) { - UNIMPLEMENTED_FUNC(cellNetCtl); + cellNetCtl.Log("cellNetCtlGetState(state_addr=0x%x)", state.GetAddr()); + + if (!state.IsGood()) + return CELL_NET_CTL_ERROR_INVALID_ADDR; + + state = CELL_NET_CTL_STATE_Disconnected; // TODO: Allow other states return CELL_OK; } diff --git a/rpcs3/Emu/SysCalls/lv2/SC_FileSystem.cpp b/rpcs3/Emu/SysCalls/lv2/SC_FileSystem.cpp index 0c51ef825d..80b425bf02 100644 --- a/rpcs3/Emu/SysCalls/lv2/SC_FileSystem.cpp +++ b/rpcs3/Emu/SysCalls/lv2/SC_FileSystem.cpp @@ -472,7 +472,7 @@ int cellFsGetFreeSize(u32 path_addr, mem32_t block_size, mem64_t block_count) sys_fs.Warning("cellFsGetFreeSize(path=\"%s\", block_size_addr=0x%x, block_count_addr=0x%x)", ps3_path.wx_str(), block_size.GetAddr(), block_count.GetAddr()); - if (Memory.IsGoodAddr(path_addr) || !block_size.IsGood() || !block_count.IsGood()) + if (!Memory.IsGoodAddr(path_addr) || !block_size.IsGood() || !block_count.IsGood()) return CELL_EFAULT; if (ps3_path.empty()) diff --git a/rpcs3/rpcs3.vcxproj b/rpcs3/rpcs3.vcxproj index 9e53606cac..4c7a3726a3 100644 --- a/rpcs3/rpcs3.vcxproj +++ b/rpcs3/rpcs3.vcxproj @@ -291,6 +291,7 @@ + diff --git a/rpcs3/rpcs3.vcxproj.filters b/rpcs3/rpcs3.vcxproj.filters index 28561ebfcf..b5f5f44515 100644 --- a/rpcs3/rpcs3.vcxproj.filters +++ b/rpcs3/rpcs3.vcxproj.filters @@ -436,6 +436,9 @@ Crypto + + Emu\SysCalls\Modules +