From e523c76cc8652dca4862bed2209cbf56ffbc06c2 Mon Sep 17 00:00:00 2001 From: TheKoopaKingdom Date: Wed, 8 Mar 2017 16:23:28 -0500 Subject: Fixed encrypted ROM error messages. --- src/core/loader/loader.h | 8 +++++--- src/core/loader/ncch.cpp | 15 +++++++++++---- src/core/loader/ncch.h | 5 +++-- 3 files changed, 19 insertions(+), 9 deletions(-) (limited to 'src/core/loader') diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h index 1d80766ae..21f73503e 100644 --- a/src/core/loader/loader.h +++ b/src/core/loader/loader.h @@ -100,11 +100,13 @@ public: * Loads the system mode that this application needs. * This function defaults to 2 (96MB allocated to the application) if it can't read the * information. - * @returns Optional with the kernel system mode + * @param boost::optional Reference to Boost optional to store system mode. + * @ return Result of operation. */ - virtual boost::optional LoadKernelSystemMode() { + virtual ResultStatus LoadKernelSystemMode(boost::optional& system_mode) { // 96MB allocated to the application. - return 2; + system_mode = 2; + return ResultStatus::Success; } /** diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index beeb13ffa..1a20762e4 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp @@ -121,12 +121,19 @@ FileType AppLoader_NCCH::IdentifyType(FileUtil::IOFile& file) { return FileType::Error; } -boost::optional AppLoader_NCCH::LoadKernelSystemMode() { +ResultStatus AppLoader_NCCH::LoadKernelSystemMode(boost::optional& system_mode) { if (!is_loaded) { - if (LoadExeFS() != ResultStatus::Success) - return boost::none; + ResultStatus res = LoadExeFS(); + if (res != ResultStatus::Success) { + // Set the system mode as invalid. + system_mode = boost::none; + // Return the error code. + return res; + } } - return exheader_header.arm11_system_local_caps.system_mode.Value(); + // Set the system mode as the one from the exheader. + system_mode = exheader_header.arm11_system_local_caps.system_mode.Value(); + return ResultStatus::Success; } ResultStatus AppLoader_NCCH::LoadExec() { diff --git a/src/core/loader/ncch.h b/src/core/loader/ncch.h index 4ef95b5c6..269fe4f49 100644 --- a/src/core/loader/ncch.h +++ b/src/core/loader/ncch.h @@ -179,9 +179,10 @@ public: /** * Loads the Exheader and returns the system mode for this application. - * @return Optional with the kernel system mode + * @param boost::optional Reference to Boost optional to store system mode. + * @return Result of operation. */ - boost::optional LoadKernelSystemMode() override; + ResultStatus LoadKernelSystemMode(boost::optional& system_mode) override; ResultStatus ReadCode(std::vector& buffer) override; -- cgit v1.2.3 From 37bec598ea28662462dcaab65d5abd6db8372dbc Mon Sep 17 00:00:00 2001 From: TheKoopaKingdom Date: Wed, 8 Mar 2017 20:21:31 -0500 Subject: Made some changes from review comments: - Made LoadKernelSystemMode return a pair consisting of a system mode and a result code (Could use review). - Deleted ErrorOpenGL error code in favor of just having ErrorVideoCore. - Made dialog messages more clear. - Compared archive ID in fs_user.cpp to ArchiveIdCode::NCCH as opposed to hex magic. - Cleaned up some other stuff. --- src/core/loader/loader.h | 11 ++++++----- src/core/loader/ncch.cpp | 11 ++++------- src/core/loader/ncch.h | 5 ++--- 3 files changed, 12 insertions(+), 15 deletions(-) (limited to 'src/core/loader') diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h index 21f73503e..0a2d4a10e 100644 --- a/src/core/loader/loader.h +++ b/src/core/loader/loader.h @@ -8,8 +8,11 @@ #include #include #include +#include #include + #include + #include "common/common_types.h" #include "common/file_util.h" @@ -100,13 +103,11 @@ public: * Loads the system mode that this application needs. * This function defaults to 2 (96MB allocated to the application) if it can't read the * information. - * @param boost::optional Reference to Boost optional to store system mode. - * @ return Result of operation. + * @return A pair with the system mode (If found) and the result. */ - virtual ResultStatus LoadKernelSystemMode(boost::optional& system_mode) { + virtual std::pair, ResultStatus> LoadKernelSystemMode() { // 96MB allocated to the application. - system_mode = 2; - return ResultStatus::Success; + return std::make_pair(2, ResultStatus::Success); } /** diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index 1a20762e4..ffc019560 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp @@ -121,19 +121,16 @@ FileType AppLoader_NCCH::IdentifyType(FileUtil::IOFile& file) { return FileType::Error; } -ResultStatus AppLoader_NCCH::LoadKernelSystemMode(boost::optional& system_mode) { +std::pair, ResultStatus> AppLoader_NCCH::LoadKernelSystemMode() { if (!is_loaded) { ResultStatus res = LoadExeFS(); if (res != ResultStatus::Success) { - // Set the system mode as invalid. - system_mode = boost::none; - // Return the error code. - return res; + return std::make_pair(boost::none, res); } } // Set the system mode as the one from the exheader. - system_mode = exheader_header.arm11_system_local_caps.system_mode.Value(); - return ResultStatus::Success; + return std::make_pair(exheader_header.arm11_system_local_caps.system_mode.Value(), + ResultStatus::Success); } ResultStatus AppLoader_NCCH::LoadExec() { diff --git a/src/core/loader/ncch.h b/src/core/loader/ncch.h index 269fe4f49..712d496a4 100644 --- a/src/core/loader/ncch.h +++ b/src/core/loader/ncch.h @@ -179,10 +179,9 @@ public: /** * Loads the Exheader and returns the system mode for this application. - * @param boost::optional Reference to Boost optional to store system mode. - * @return Result of operation. + * @return A pair with the system mode (If found) and the result. */ - ResultStatus LoadKernelSystemMode(boost::optional& system_mode) override; + std::pair, ResultStatus> LoadKernelSystemMode() override; ResultStatus ReadCode(std::vector& buffer) override; -- cgit v1.2.3 From a8aef599e02e336f9ecb8d5cfc50aa856ea0a1c7 Mon Sep 17 00:00:00 2001 From: TheKoopaKingdom Date: Thu, 13 Apr 2017 01:18:54 -0400 Subject: Created a whitelist of system archives to prevent false positives creating dialogs. --- src/core/loader/loader.h | 4 +--- src/core/loader/ncch.h | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) (limited to 'src/core/loader') diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h index 0a2d4a10e..adb3ffdcf 100644 --- a/src/core/loader/loader.h +++ b/src/core/loader/loader.h @@ -10,9 +10,7 @@ #include #include #include - #include - #include "common/common_types.h" #include "common/file_util.h" @@ -103,7 +101,7 @@ public: * Loads the system mode that this application needs. * This function defaults to 2 (96MB allocated to the application) if it can't read the * information. - * @return A pair with the system mode (If found) and the result. + * @returns a pair of Optional with the kernel system mode and ResultStatus. */ virtual std::pair, ResultStatus> LoadKernelSystemMode() { // 96MB allocated to the application. diff --git a/src/core/loader/ncch.h b/src/core/loader/ncch.h index 712d496a4..507da7550 100644 --- a/src/core/loader/ncch.h +++ b/src/core/loader/ncch.h @@ -179,7 +179,7 @@ public: /** * Loads the Exheader and returns the system mode for this application. - * @return A pair with the system mode (If found) and the result. + * @returns a pair of Optional with the kernel system mode and ResultStatus */ std::pair, ResultStatus> LoadKernelSystemMode() override; -- cgit v1.2.3 From f008b22e3b2baa7720ea65c320fe49929a53bad7 Mon Sep 17 00:00:00 2001 From: TheKoopaKingdom Date: Fri, 2 Jun 2017 17:03:38 -0400 Subject: Addressed Bunnei's review comments, and made some other tweaks: - Deleted GetStatus() because it wasn't used anywhere outside of Core::System. - Fixed design flaw where the message bar status could be set despite the game being stopped. --- src/core/loader/loader.h | 2 +- src/core/loader/ncch.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/core/loader') diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h index adb3ffdcf..48bbf687d 100644 --- a/src/core/loader/loader.h +++ b/src/core/loader/loader.h @@ -101,7 +101,7 @@ public: * Loads the system mode that this application needs. * This function defaults to 2 (96MB allocated to the application) if it can't read the * information. - * @returns a pair of Optional with the kernel system mode and ResultStatus. + * @returns A pair with the optional system mode, and and the status. */ virtual std::pair, ResultStatus> LoadKernelSystemMode() { // 96MB allocated to the application. diff --git a/src/core/loader/ncch.h b/src/core/loader/ncch.h index 507da7550..0ebd47fd5 100644 --- a/src/core/loader/ncch.h +++ b/src/core/loader/ncch.h @@ -179,7 +179,7 @@ public: /** * Loads the Exheader and returns the system mode for this application. - * @returns a pair of Optional with the kernel system mode and ResultStatus + * @returns A pair with the optional system mode, and and the status. */ std::pair, ResultStatus> LoadKernelSystemMode() override; -- cgit v1.2.3