@ -19,6 +19,7 @@
# include "core/file_sys/vfs_vector.h"
# include "core/file_sys/vfs_vector.h"
# include "core/hle/service/filesystem/filesystem.h"
# include "core/hle/service/filesystem/filesystem.h"
# include "core/loader/loader.h"
# include "core/loader/loader.h"
# include "core/settings.h"
namespace FileSys {
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_raw = Common : : HexArrayToString ( header . build_id ) ;
const auto build_id = build_id_raw . substr ( 0 , build_id_raw . find_last_not_of ( ' 0 ' ) + 1 ) ;
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 ) ;
LOG_INFO ( Loader , " Patching NSO for build_id={} " , build_id ) ;
const auto load_dir = Service : : FileSystem : : GetModificationLoadRoot ( title_id ) ;
const auto load_dir = Service : : FileSystem : : GetModificationLoadRoot ( title_id ) ;