diff options
author | archshift <admin@archshift.com> | 2014-11-23 09:22:46 +0100 |
---|---|---|
committer | archshift <admin@archshift.com> | 2014-11-25 00:51:48 +0100 |
commit | 43a682a10615597befa8584767a8af0b6614c82e (patch) | |
tree | 1989320a278d577882c3b3fd649591115dc3714f /src/core/hle/service/service.h | |
parent | Merge pull request #147 from yuriks/error-codes (diff) | |
download | yuzu-43a682a10615597befa8584767a8af0b6614c82e.tar yuzu-43a682a10615597befa8584767a8af0b6614c82e.tar.gz yuzu-43a682a10615597befa8584767a8af0b6614c82e.tar.bz2 yuzu-43a682a10615597befa8584767a8af0b6614c82e.tar.lz yuzu-43a682a10615597befa8584767a8af0b6614c82e.tar.xz yuzu-43a682a10615597befa8584767a8af0b6614c82e.tar.zst yuzu-43a682a10615597befa8584767a8af0b6614c82e.zip |
Diffstat (limited to 'src/core/hle/service/service.h')
-rw-r--r-- | src/core/hle/service/service.h | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/core/hle/service/service.h b/src/core/hle/service/service.h index 20e7fb4d3..3a7d6c469 100644 --- a/src/core/hle/service/service.h +++ b/src/core/hle/service/service.h @@ -10,6 +10,7 @@ #include <string> #include "common/common.h" +#include "common/string_util.h" #include "core/mem_map.h" #include "core/hle/kernel/kernel.h" @@ -79,21 +80,20 @@ public: u32* cmd_buff = GetCommandBuffer(); auto itr = m_functions.find(cmd_buff[0]); - if (itr == m_functions.end()) { - ERROR_LOG(OSHLE, "unknown/unimplemented function: port=%s, command=0x%08X", - GetPortName().c_str(), cmd_buff[0]); + if (itr == m_functions.end() || itr->second.func == nullptr) { + // Number of params == bits 0-5 + bits 6-11 + int num_params = (cmd_buff[0] & 0x3F) + ((cmd_buff[0] >> 6) & 0x3F); - // TODO(bunnei): Hack - ignore error - u32* cmd_buff = Service::GetCommandBuffer(); - cmd_buff[1] = 0; - return MakeResult<bool>(false); - } - if (itr->second.func == nullptr) { - ERROR_LOG(OSHLE, "unimplemented function: port=%s, name=%s", - GetPortName().c_str(), itr->second.name.c_str()); + std::string error = "unknown/unimplemented function '%s': port=%s"; + for (int i = 1; i <= num_params; ++i) { + error += Common::StringFromFormat(", cmd_buff[%i]=%u", i, cmd_buff[i]); + } + + std::string name = (itr == m_functions.end()) ? Common::StringFromFormat("0x%08X", cmd_buff[0]) : itr->second.name; + + ERROR_LOG(OSHLE, error.c_str(), name.c_str(), GetPortName().c_str()); // TODO(bunnei): Hack - ignore error - u32* cmd_buff = Service::GetCommandBuffer(); cmd_buff[1] = 0; return MakeResult<bool>(false); } |