summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/file_sys/patch_manager.cpp9
-rw-r--r--src/core/settings.h1
-rw-r--r--src/yuzu/configuration/config.cpp2
-rw-r--r--src/yuzu/configuration/configure_debug.cpp2
-rw-r--r--src/yuzu/configuration/configure_debug.ui10
-rw-r--r--src/yuzu_cmd/config.cpp1
-rw-r--r--src/yuzu_cmd/default_ini.h2
7 files changed, 27 insertions, 0 deletions
diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp
index 8d062eb3e..f56b1c773 100644
--- a/src/core/file_sys/patch_manager.cpp
+++ b/src/core/file_sys/patch_manager.cpp
@@ -57,6 +57,15 @@ VirtualDir PatchManager::PatchExeFS(VirtualDir exefs) const {
57 if (exefs == nullptr) 57 if (exefs == nullptr)
58 return exefs; 58 return exefs;
59 59
60 if (Settings::values.dump_exefs) {
61 LOG_INFO(Loader, "Dumping ExeFS for title_id={:016X}", title_id);
62 const auto dump_dir = Service::FileSystem::GetModificationDumpRoot(title_id);
63 if (dump_dir != nullptr) {
64 const auto exefs_dir = GetOrCreateDirectoryRelative(dump_dir, "/exefs");
65 VfsRawCopyD(exefs, exefs_dir);
66 }
67 }
68
60 const auto installed = Service::FileSystem::GetUnionContents(); 69 const auto installed = Service::FileSystem::GetUnionContents();
61 70
62 // Game Updates 71 // Game Updates
diff --git a/src/core/settings.h b/src/core/settings.h
index e424479f2..9767bc162 100644
--- a/src/core/settings.h
+++ b/src/core/settings.h
@@ -159,6 +159,7 @@ struct Values {
159 bool use_gdbstub; 159 bool use_gdbstub;
160 u16 gdbstub_port; 160 u16 gdbstub_port;
161 std::string program_args; 161 std::string program_args;
162 bool dump_exefs;
162 bool dump_nso; 163 bool dump_nso;
163 164
164 // WebService 165 // WebService
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp
index be69fb831..e750cbe7d 100644
--- a/src/yuzu/configuration/config.cpp
+++ b/src/yuzu/configuration/config.cpp
@@ -153,6 +153,7 @@ void Config::ReadValues() {
153 Settings::values.use_gdbstub = qt_config->value("use_gdbstub", false).toBool(); 153 Settings::values.use_gdbstub = qt_config->value("use_gdbstub", false).toBool();
154 Settings::values.gdbstub_port = qt_config->value("gdbstub_port", 24689).toInt(); 154 Settings::values.gdbstub_port = qt_config->value("gdbstub_port", 24689).toInt();
155 Settings::values.program_args = qt_config->value("program_args", "").toString().toStdString(); 155 Settings::values.program_args = qt_config->value("program_args", "").toString().toStdString();
156 Settings::values.dump_exefs = qt_config->value("dump_exefs", false).toBool();
156 Settings::values.dump_nso = qt_config->value("dump_nso", false).toBool(); 157 Settings::values.dump_nso = qt_config->value("dump_nso", false).toBool();
157 qt_config->endGroup(); 158 qt_config->endGroup();
158 159
@@ -297,6 +298,7 @@ void Config::SaveValues() {
297 qt_config->setValue("use_gdbstub", Settings::values.use_gdbstub); 298 qt_config->setValue("use_gdbstub", Settings::values.use_gdbstub);
298 qt_config->setValue("gdbstub_port", Settings::values.gdbstub_port); 299 qt_config->setValue("gdbstub_port", Settings::values.gdbstub_port);
299 qt_config->setValue("program_args", QString::fromStdString(Settings::values.program_args)); 300 qt_config->setValue("program_args", QString::fromStdString(Settings::values.program_args));
301 qt_config->setValue("dump_exefs", Settings::values.dump_exefs);
300 qt_config->setValue("dump_nso", Settings::values.dump_nso); 302 qt_config->setValue("dump_nso", Settings::values.dump_nso);
301 qt_config->endGroup(); 303 qt_config->endGroup();
302 304
diff --git a/src/yuzu/configuration/configure_debug.cpp b/src/yuzu/configuration/configure_debug.cpp
index fd5876b41..aa7de7b54 100644
--- a/src/yuzu/configuration/configure_debug.cpp
+++ b/src/yuzu/configuration/configure_debug.cpp
@@ -34,6 +34,7 @@ void ConfigureDebug::setConfiguration() {
34 ui->toggle_console->setChecked(UISettings::values.show_console); 34 ui->toggle_console->setChecked(UISettings::values.show_console);
35 ui->log_filter_edit->setText(QString::fromStdString(Settings::values.log_filter)); 35 ui->log_filter_edit->setText(QString::fromStdString(Settings::values.log_filter));
36 ui->homebrew_args_edit->setText(QString::fromStdString(Settings::values.program_args)); 36 ui->homebrew_args_edit->setText(QString::fromStdString(Settings::values.program_args));
37 ui->dump_exefs->setChecked(Settings::values.dump_exefs);
37 ui->dump_decompressed_nso->setChecked(Settings::values.dump_nso); 38 ui->dump_decompressed_nso->setChecked(Settings::values.dump_nso);
38} 39}
39 40
@@ -43,6 +44,7 @@ void ConfigureDebug::applyConfiguration() {
43 UISettings::values.show_console = ui->toggle_console->isChecked(); 44 UISettings::values.show_console = ui->toggle_console->isChecked();
44 Settings::values.log_filter = ui->log_filter_edit->text().toStdString(); 45 Settings::values.log_filter = ui->log_filter_edit->text().toStdString();
45 Settings::values.program_args = ui->homebrew_args_edit->text().toStdString(); 46 Settings::values.program_args = ui->homebrew_args_edit->text().toStdString();
47 Settings::values.dump_exefs = ui->dump_exefs->isChecked();
46 Settings::values.dump_nso = ui->dump_decompressed_nso->isChecked(); 48 Settings::values.dump_nso = ui->dump_decompressed_nso->isChecked();
47 Debugger::ToggleConsole(); 49 Debugger::ToggleConsole();
48 Log::Filter filter; 50 Log::Filter filter;
diff --git a/src/yuzu/configuration/configure_debug.ui b/src/yuzu/configuration/configure_debug.ui
index 9c5b702f8..f51f8702b 100644
--- a/src/yuzu/configuration/configure_debug.ui
+++ b/src/yuzu/configuration/configure_debug.ui
@@ -145,6 +145,16 @@
145 </property> 145 </property>
146 </widget> 146 </widget>
147 </item> 147 </item>
148 <item>
149 <widget class="QCheckBox" name="dump_exefs">
150 <property name="whatsThis">
151 <string>When checked, any game that yuzu loads will have its ExeFS dumped</string>
152 </property>
153 <property name="text">
154 <string>Dump ExeFS</string>
155 </property>
156 </widget>
157 </item>
148 </layout> 158 </layout>
149 </widget> 159 </widget>
150 </item> 160 </item>
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp
index 9cc409fd5..b443bfba7 100644
--- a/src/yuzu_cmd/config.cpp
+++ b/src/yuzu_cmd/config.cpp
@@ -148,6 +148,7 @@ void Config::ReadValues() {
148 Settings::values.gdbstub_port = 148 Settings::values.gdbstub_port =
149 static_cast<u16>(sdl2_config->GetInteger("Debugging", "gdbstub_port", 24689)); 149 static_cast<u16>(sdl2_config->GetInteger("Debugging", "gdbstub_port", 24689));
150 Settings::values.program_args = sdl2_config->Get("Debugging", "program_args", ""); 150 Settings::values.program_args = sdl2_config->Get("Debugging", "program_args", "");
151 Settings::values.dump_exefs = sdl2_config->GetBoolean("Debugging", "dump_exefs", false);
151 Settings::values.dump_nso = sdl2_config->GetBoolean("Debugging", "dump_nso", false); 152 Settings::values.dump_nso = sdl2_config->GetBoolean("Debugging", "dump_nso", false);
152 153
153 // Web Service 154 // Web Service
diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h
index ecf625e7b..d73669f36 100644
--- a/src/yuzu_cmd/default_ini.h
+++ b/src/yuzu_cmd/default_ini.h
@@ -206,6 +206,8 @@ log_filter = *:Trace
206# Port for listening to GDB connections. 206# Port for listening to GDB connections.
207use_gdbstub=false 207use_gdbstub=false
208gdbstub_port=24689 208gdbstub_port=24689
209# Determines whether or not yuzu will dump the ExeFS of all games it attempts to load while loading them
210dump_exefs=false
209# Determines whether or not yuzu will dump all NSOs it attempts to load while loading them 211# Determines whether or not yuzu will dump all NSOs it attempts to load while loading them
210dump_nso=false 212dump_nso=false
211 213