summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
m---------externals/catch0
-rw-r--r--src/common/file_util.cpp2
-rw-r--r--src/common/file_util.h2
-rw-r--r--src/common/string_util.cpp12
-rw-r--r--src/common/string_util.h3
-rw-r--r--src/core/file_sys/content_archive.cpp5
-rw-r--r--src/core/file_sys/content_archive.h7
-rw-r--r--src/core/file_sys/partition_filesystem.cpp29
-rw-r--r--src/core/file_sys/partition_filesystem.h10
-rw-r--r--src/core/file_sys/savedata_factory.cpp2
-rw-r--r--src/core/file_sys/savedata_factory.h2
-rw-r--r--src/core/file_sys/vfs.cpp12
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp4
13 files changed, 38 insertions, 52 deletions
diff --git a/externals/catch b/externals/catch
-Subproject cd76f5730c9a3afa19f3b9c83608d9c7ab325a1
+Subproject d2a130f2433aeaca070e3e4d6298a80049d21cf
diff --git a/src/common/file_util.cpp b/src/common/file_util.cpp
index bf955386c..c882ab39f 100644
--- a/src/common/file_util.cpp
+++ b/src/common/file_util.cpp
@@ -592,7 +592,7 @@ std::string GetBundleDirectory() {
#endif
#ifdef _WIN32
-std::string& GetExeDirectory() {
+const std::string& GetExeDirectory() {
static std::string exe_path;
if (exe_path.empty()) {
wchar_t wchar_exe_path[2048];
diff --git a/src/common/file_util.h b/src/common/file_util.h
index 026c84d94..1f38b1560 100644
--- a/src/common/file_util.h
+++ b/src/common/file_util.h
@@ -133,7 +133,7 @@ std::string GetBundleDirectory();
#endif
#ifdef _WIN32
-std::string& GetExeDirectory();
+const std::string& GetExeDirectory();
std::string AppDataRoamingDirectory();
#endif
diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp
index 0027888c7..f3ad3d68a 100644
--- a/src/common/string_util.cpp
+++ b/src/common/string_util.cpp
@@ -34,18 +34,6 @@ std::string ToUpper(std::string str) {
return str;
}
-// faster than sscanf
-bool AsciiToHex(const char* _szValue, u32& result) {
- char* endptr = nullptr;
- const u32 value = strtoul(_szValue, &endptr, 16);
-
- if (!endptr || *endptr)
- return false;
-
- result = value;
- return true;
-}
-
// For Debugging. Read out an u8 array.
std::string ArrayToString(const u8* data, size_t size, int line_len, bool spaces) {
std::ostringstream oss;
diff --git a/src/common/string_util.h b/src/common/string_util.h
index 1f5a383cb..daa071f83 100644
--- a/src/common/string_util.h
+++ b/src/common/string_util.h
@@ -57,9 +57,6 @@ static bool TryParse(const std::string& str, N* const output) {
return false;
}
-// TODO: kill this
-bool AsciiToHex(const char* _szValue, u32& result);
-
std::string TabsToSpaces(int tab_size, const std::string& in);
void SplitString(const std::string& str, char delim, std::vector<std::string>& output);
diff --git a/src/core/file_sys/content_archive.cpp b/src/core/file_sys/content_archive.cpp
index 6cfef774d..d6b20c047 100644
--- a/src/core/file_sys/content_archive.cpp
+++ b/src/core/file_sys/content_archive.cpp
@@ -2,6 +2,9 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
+#include <algorithm>
+#include <utility>
+
#include "common/logging/log.h"
#include "core/file_sys/content_archive.h"
#include "core/file_sys/vfs_offset.h"
@@ -61,7 +64,7 @@ struct RomFSSuperblock {
};
static_assert(sizeof(RomFSSuperblock) == 0xE8, "RomFSSuperblock has incorrect size.");
-NCA::NCA(VirtualFile file_) : file(file_) {
+NCA::NCA(VirtualFile file_) : file(std::move(file_)) {
if (sizeof(NCAHeader) != file->ReadObject(&header))
LOG_CRITICAL(Loader, "File reader errored out during header read.");
diff --git a/src/core/file_sys/content_archive.h b/src/core/file_sys/content_archive.h
index 129a70b97..0b8b9db61 100644
--- a/src/core/file_sys/content_archive.h
+++ b/src/core/file_sys/content_archive.h
@@ -4,6 +4,11 @@
#pragma once
+#include <array>
+#include <memory>
+#include <string>
+#include <vector>
+
#include "common/common_funcs.h"
#include "common/common_types.h"
#include "common/swap.h"
@@ -48,7 +53,7 @@ struct NCAHeader {
};
static_assert(sizeof(NCAHeader) == 0x400, "NCAHeader has incorrect size.");
-inline bool IsDirectoryExeFS(std::shared_ptr<FileSys::VfsDirectory> pfs) {
+inline bool IsDirectoryExeFS(const std::shared_ptr<VfsDirectory>& pfs) {
// According to switchbrew, an exefs must only contain these two files:
return pfs->GetFile("main") != nullptr && pfs->GetFile("main.npdm") != nullptr;
}
diff --git a/src/core/file_sys/partition_filesystem.cpp b/src/core/file_sys/partition_filesystem.cpp
index 15b1fb946..d4097a510 100644
--- a/src/core/file_sys/partition_filesystem.cpp
+++ b/src/core/file_sys/partition_filesystem.cpp
@@ -11,6 +11,11 @@
namespace FileSys {
+bool PartitionFilesystem::Header::HasValidMagicValue() const {
+ return magic == Common::MakeMagic('H', 'F', 'S', '0') ||
+ magic == Common::MakeMagic('P', 'F', 'S', '0');
+}
+
PartitionFilesystem::PartitionFilesystem(std::shared_ptr<VfsFile> file) {
// At least be as large as the header
if (file->GetSize() < sizeof(Header)) {
@@ -20,19 +25,17 @@ PartitionFilesystem::PartitionFilesystem(std::shared_ptr<VfsFile> file) {
// For cartridges, HFSs can get very large, so we need to calculate the size up to
// the actual content itself instead of just blindly reading in the entire file.
- Header pfs_header;
if (sizeof(Header) != file->ReadObject(&pfs_header)) {
status = Loader::ResultStatus::Error;
return;
}
- if (pfs_header.magic != Common::MakeMagic('H', 'F', 'S', '0') &&
- pfs_header.magic != Common::MakeMagic('P', 'F', 'S', '0')) {
+ if (!pfs_header.HasValidMagicValue()) {
status = Loader::ResultStatus::ErrorInvalidFormat;
return;
}
- bool is_hfs = pfs_header.magic == Common::MakeMagic('H', 'F', 'S', '0');
+ is_hfs = pfs_header.magic == Common::MakeMagic('H', 'F', 'S', '0');
size_t entry_size = is_hfs ? sizeof(HFSEntry) : sizeof(PFSEntry);
size_t metadata_size =
@@ -40,27 +43,13 @@ PartitionFilesystem::PartitionFilesystem(std::shared_ptr<VfsFile> file) {
// Actually read in now...
std::vector<u8> file_data = file->ReadBytes(metadata_size);
+ const size_t total_size = file_data.size();
- if (file_data.size() != metadata_size) {
- status = Loader::ResultStatus::Error;
- return;
- }
-
- size_t total_size = file_data.size();
- if (total_size < sizeof(Header)) {
+ if (total_size != metadata_size) {
status = Loader::ResultStatus::Error;
return;
}
- memcpy(&pfs_header, file_data.data(), sizeof(Header));
- if (pfs_header.magic != Common::MakeMagic('H', 'F', 'S', '0') &&
- pfs_header.magic != Common::MakeMagic('P', 'F', 'S', '0')) {
- status = Loader::ResultStatus::ErrorInvalidFormat;
- return;
- }
-
- is_hfs = pfs_header.magic == Common::MakeMagic('H', 'F', 'S', '0');
-
size_t entries_offset = sizeof(Header);
size_t strtab_offset = entries_offset + (pfs_header.num_entries * entry_size);
content_offset = strtab_offset + pfs_header.strtab_size;
diff --git a/src/core/file_sys/partition_filesystem.h b/src/core/file_sys/partition_filesystem.h
index 9656b40bf..7c7a75816 100644
--- a/src/core/file_sys/partition_filesystem.h
+++ b/src/core/file_sys/partition_filesystem.h
@@ -42,6 +42,8 @@ private:
u32_le num_entries;
u32_le strtab_size;
INSERT_PADDING_BYTES(0x4);
+
+ bool HasValidMagicValue() const;
};
static_assert(sizeof(Header) == 0x10, "PFS/HFS header structure size is wrong");
@@ -73,11 +75,11 @@ private:
#pragma pack(pop)
- Loader::ResultStatus status;
+ Loader::ResultStatus status{};
- Header pfs_header;
- bool is_hfs;
- size_t content_offset;
+ Header pfs_header{};
+ bool is_hfs = false;
+ size_t content_offset = 0;
std::vector<VirtualFile> pfs_files;
std::vector<VirtualDir> pfs_dirs;
diff --git a/src/core/file_sys/savedata_factory.cpp b/src/core/file_sys/savedata_factory.cpp
index 6a53b2b10..dfdca83d6 100644
--- a/src/core/file_sys/savedata_factory.cpp
+++ b/src/core/file_sys/savedata_factory.cpp
@@ -11,7 +11,7 @@
namespace FileSys {
-std::string SaveDataDescriptor::DebugInfo() {
+std::string SaveDataDescriptor::DebugInfo() const {
return fmt::format("[type={:02X}, title_id={:016X}, user_id={:016X}{:016X}, save_id={:016X}]",
static_cast<u8>(type), title_id, user_id[1], user_id[0], save_id);
}
diff --git a/src/core/file_sys/savedata_factory.h b/src/core/file_sys/savedata_factory.h
index 53c69876f..e3a578c0f 100644
--- a/src/core/file_sys/savedata_factory.h
+++ b/src/core/file_sys/savedata_factory.h
@@ -37,7 +37,7 @@ struct SaveDataDescriptor {
u64_le zero_2;
u64_le zero_3;
- std::string DebugInfo();
+ std::string DebugInfo() const;
};
static_assert(sizeof(SaveDataDescriptor) == 0x40, "SaveDataDescriptor has incorrect size.");
diff --git a/src/core/file_sys/vfs.cpp b/src/core/file_sys/vfs.cpp
index f859ef33f..16c8ad90b 100644
--- a/src/core/file_sys/vfs.cpp
+++ b/src/core/file_sys/vfs.cpp
@@ -116,14 +116,14 @@ bool VfsDirectory::IsRoot() const {
size_t VfsDirectory::GetSize() const {
const auto& files = GetFiles();
- const auto file_total =
- std::accumulate(files.begin(), files.end(), 0ull,
- [](const auto& f1, const auto& f2) { return f1 + f2->GetSize(); });
+ const auto sum_sizes = [](const auto& range) {
+ return std::accumulate(range.begin(), range.end(), 0ULL,
+ [](const auto& f1, const auto& f2) { return f1 + f2->GetSize(); });
+ };
+ const auto file_total = sum_sizes(files);
const auto& sub_dir = GetSubdirectories();
- const auto subdir_total =
- std::accumulate(sub_dir.begin(), sub_dir.end(), 0ull,
- [](const auto& f1, const auto& f2) { return f1 + f2->GetSize(); });
+ const auto subdir_total = sum_sizes(sub_dir);
return file_total + subdir_total;
}
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 7e620584f..f75999557 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -795,7 +795,9 @@ void RasterizerOpenGL::SyncClipCoef() {
void RasterizerOpenGL::SyncCullMode() {
const auto& regs = Core::System::GetInstance().GPU().Maxwell3D().regs;
- state.cull.enabled = regs.cull.enabled != 0;
+ // TODO(bunnei): Enable the below once more things work - until then, this may hide regressions
+ // state.cull.enabled = regs.cull.enabled != 0;
+ state.cull.enabled = false;
if (state.cull.enabled) {
state.cull.front_face = MaxwellToGL::FrontFace(regs.cull.front_face);