summaryrefslogtreecommitdiffstats
path: root/src/core/file_sys
diff options
context:
space:
mode:
authorZach Hilman <zachhilman@gmail.com>2018-10-29 21:10:16 +0100
committerZach Hilman <zachhilman@gmail.com>2018-10-29 21:10:16 +0100
commit1c0226815d453acfb5e1fd766765b43fd447c15c (patch)
tree1d145a3261bd5976f7d10287009f2ff9a0515b79 /src/core/file_sys
parentsettings: Add setting to control NSO dumping (diff)
downloadyuzu-1c0226815d453acfb5e1fd766765b43fd447c15c.tar
yuzu-1c0226815d453acfb5e1fd766765b43fd447c15c.tar.gz
yuzu-1c0226815d453acfb5e1fd766765b43fd447c15c.tar.bz2
yuzu-1c0226815d453acfb5e1fd766765b43fd447c15c.tar.lz
yuzu-1c0226815d453acfb5e1fd766765b43fd447c15c.tar.xz
yuzu-1c0226815d453acfb5e1fd766765b43fd447c15c.tar.zst
yuzu-1c0226815d453acfb5e1fd766765b43fd447c15c.zip
Diffstat (limited to 'src/core/file_sys')
-rw-r--r--src/core/file_sys/patch_manager.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp
index cb457b987..3a1623ca0 100644
--- a/src/core/file_sys/patch_manager.cpp
+++ b/src/core/file_sys/patch_manager.cpp
@@ -19,6 +19,7 @@
#include "core/file_sys/vfs_vector.h"
#include "core/hle/service/filesystem/filesystem.h"
#include "core/loader/loader.h"
+#include "core/settings.h"
namespace FileSys {
@@ -119,6 +120,18 @@ std::vector<u8> PatchManager::PatchNSO(const std::vector<u8>& nso) const {
const auto build_id_raw = Common::HexArrayToString(header.build_id);
const auto build_id = build_id_raw.substr(0, build_id_raw.find_last_not_of('0') + 1);
+ if (Settings::values.dump_nso) {
+ LOG_INFO(Loader, "Dumping NSO for build_id={}, title_id={:016X}", build_id, title_id);
+ const auto dump_dir = Service::FileSystem::GetModificationDumpRoot(title_id);
+ if (dump_dir != nullptr) {
+ const auto nso_dir = GetOrCreateDirectoryRelative(dump_dir, "/nso");
+ const auto file = nso_dir->CreateFile(fmt::format("{}.nso", build_id));
+
+ file->Resize(nso.size());
+ file->WriteBytes(nso);
+ }
+ }
+
LOG_INFO(Loader, "Patching NSO for build_id={}", build_id);
const auto load_dir = Service::FileSystem::GetModificationLoadRoot(title_id);