summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2017-05-21 06:00:18 +0200
committerYuri Kunde Schlesner <yuriks@yuriks.net>2017-05-25 06:05:59 +0200
commit3b1f0fea31d3c56d94f580c1ea3978a5590b5f8a (patch)
treef1fe3acaba7ad0508cc893aebf32f7776ed0ea4a
parentMake BitField and ResultCode constexpr-initializable (diff)
downloadyuzu-3b1f0fea31d3c56d94f580c1ea3978a5590b5f8a.tar
yuzu-3b1f0fea31d3c56d94f580c1ea3978a5590b5f8a.tar.gz
yuzu-3b1f0fea31d3c56d94f580c1ea3978a5590b5f8a.tar.bz2
yuzu-3b1f0fea31d3c56d94f580c1ea3978a5590b5f8a.tar.lz
yuzu-3b1f0fea31d3c56d94f580c1ea3978a5590b5f8a.tar.xz
yuzu-3b1f0fea31d3c56d94f580c1ea3978a5590b5f8a.tar.zst
yuzu-3b1f0fea31d3c56d94f580c1ea3978a5590b5f8a.zip
-rw-r--r--src/core/hle/result.h17
-rw-r--r--src/core/hle/service/cfg/cfg.cpp5
-rw-r--r--src/core/hle/service/ptm/ptm.cpp2
3 files changed, 18 insertions, 6 deletions
diff --git a/src/core/hle/result.h b/src/core/hle/result.h
index db548bd76..c44668732 100644
--- a/src/core/hle/result.h
+++ b/src/core/hle/result.h
@@ -13,9 +13,14 @@
// All the constants in this file come from http://3dbrew.org/wiki/Error_codes
-/// Detailed description of the error. This listing is likely incomplete.
+/**
+ * Detailed description of the error. Code 0 always means success. Codes 1000 and above are
+ * considered "well-known" and have common values between all modules. The meaning of other codes
+ * vary by module.
+ */
enum class ErrorDescription : u32 {
Success = 0,
+
SessionClosedByRemote = 26,
WrongPermission = 46,
OS_InvalidBufferDescriptor = 48,
@@ -45,6 +50,8 @@ enum class ErrorDescription : u32 {
FS_UnsupportedOpenFlags = 760,
FS_IncorrectExeFSReadSize = 761,
FS_UnexpectedFileOrDirectory = 770,
+
+ // Codes 1000 and above are considered "well-known" and have common values between all modules.
InvalidSection = 1000,
TooLarge = 1001,
NotAuthorized = 1002,
@@ -218,7 +225,7 @@ enum class ErrorLevel : u32 {
union ResultCode {
u32 raw;
- BitField<0, 10, ErrorDescription> description;
+ BitField<0, 10, u32> description;
BitField<10, 8, ErrorModule> module;
BitField<21, 6, ErrorSummary> summary;
@@ -230,7 +237,11 @@ union ResultCode {
constexpr explicit ResultCode(u32 raw) : raw(raw) {}
- constexpr ResultCode(ErrorDescription description_, ErrorModule module_, ErrorSummary summary_,
+ constexpr ResultCode(ErrorDescription description, ErrorModule module, ErrorSummary summary,
+ ErrorLevel level)
+ : ResultCode(static_cast<u32>(description), module, summary, level) {}
+
+ constexpr ResultCode(u32 description_, ErrorModule module_, ErrorSummary summary_,
ErrorLevel level_)
: raw(description.FormatValue(description_) | module.FormatValue(module_) |
summary.FormatValue(summary_) | level.FormatValue(level_)) {}
diff --git a/src/core/hle/service/cfg/cfg.cpp b/src/core/hle/service/cfg/cfg.cpp
index 8c8c1ec77..14185ae20 100644
--- a/src/core/hle/service/cfg/cfg.cpp
+++ b/src/core/hle/service/cfg/cfg.cpp
@@ -411,7 +411,8 @@ ResultCode UpdateConfigNANDSavegame() {
ResultCode FormatConfig() {
ResultCode res = DeleteConfigNANDSaveFile();
// The delete command fails if the file doesn't exist, so we have to check that too
- if (!res.IsSuccess() && res.description != ErrorDescription::FS_FileNotFound) {
+ if (!res.IsSuccess() &&
+ res.description != static_cast<u32>(ErrorDescription::FS_FileNotFound)) {
return res;
}
// Delete the old data
@@ -534,7 +535,7 @@ ResultCode LoadConfigNANDSaveFile() {
Service::FS::OpenArchive(Service::FS::ArchiveIdCode::SystemSaveData, archive_path);
// If the archive didn't exist, create the files inside
- if (archive_result.Code().description == ErrorDescription::FS_NotFormatted) {
+ if (archive_result.Code().description == static_cast<u32>(ErrorDescription::FS_NotFormatted)) {
// Format the archive to create the directories
Service::FS::FormatArchive(Service::FS::ArchiveIdCode::SystemSaveData,
FileSys::ArchiveFormatInfo(), archive_path);
diff --git a/src/core/hle/service/ptm/ptm.cpp b/src/core/hle/service/ptm/ptm.cpp
index 319e8c946..b6d6d105a 100644
--- a/src/core/hle/service/ptm/ptm.cpp
+++ b/src/core/hle/service/ptm/ptm.cpp
@@ -134,7 +134,7 @@ void Init() {
auto archive_result =
Service::FS::OpenArchive(Service::FS::ArchiveIdCode::SharedExtSaveData, archive_path);
// If the archive didn't exist, create the files inside
- if (archive_result.Code().description == ErrorDescription::FS_NotFormatted) {
+ if (archive_result.Code().description == static_cast<u32>(ErrorDescription::FS_NotFormatted)) {
// Format the archive to create the directories
Service::FS::FormatArchive(Service::FS::ArchiveIdCode::SharedExtSaveData,
FileSys::ArchiveFormatInfo(), archive_path);