diff --git a/externals/fmt b/externals/fmt index 4b8f8fac9..7512a55aa 160000 --- a/externals/fmt +++ b/externals/fmt @@ -1 +1 @@ -Subproject commit 4b8f8fac96a7819f28f4be523ca10a2d5d8aaaf2 +Subproject commit 7512a55aa3ae309587ca89668ef9ec4074a51a1f diff --git a/externals/lodepng/lodepng b/externals/lodepng/lodepng new file mode 160000 index 000000000..31d9704fd --- /dev/null +++ b/externals/lodepng/lodepng @@ -0,0 +1 @@ +Subproject commit 31d9704fdcca0b68fb9656d4764fa0fb60e460c2 diff --git a/src/citra/config.cpp b/src/citra/config.cpp index 810588299..5b460466e 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -162,6 +162,9 @@ void Config::ReadValues() { Settings::values.custom_bottom_bottom = static_cast(sdl2_config->GetInteger("Layout", "custom_bottom_bottom", 480)); + // Utility + Settings::values.dump_textures = sdl2_config->GetBoolean("Utility", "dump_textures", false); + // Audio Settings::values.enable_dsp_lle = sdl2_config->GetBoolean("Audio", "enable_dsp_lle", false); Settings::values.enable_dsp_lle_multithread = diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index 29c2f723a..4a6194bc4 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -178,6 +178,10 @@ custom_bottom_bottom = # 0 (default): Top Screen is prominent, 1: Bottom Screen is prominent swap_screen = +# Dumps textures as PNG to dump/textures/[Title ID]/. +# 0 (default): Off, 1: On +dump_textures = + [Audio] # Whether or not to enable DSP LLE # 0 (default): No, 1: Yes diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index 96847c0b4..362ac8b19 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -230,6 +230,13 @@ void Config::ReadControlValues() { qt_config->endGroup(); } +void Config::ReadUtilityValues() { + + qt_config->beginGroup("Utility"); + Settings::values.dump_textures = ReadSetting("dump_textures", false).toBool(); + qt_config->endGroup(); +} + void Config::ReadCoreValues() { qt_config->beginGroup(QStringLiteral("Core")); @@ -693,6 +700,14 @@ void Config::SaveControlValues() { qt_config->endGroup(); } +void Config::SaveUtilityValues() { + qt_config->beginGroup("Utility"); + + WriteSetting("dump_textures", Settings::values.dump_textures, false); + + qt_config->endGroup(); +} + void Config::SaveCoreValues() { qt_config->beginGroup(QStringLiteral("Core")); diff --git a/src/citra_qt/configuration/config.h b/src/citra_qt/configuration/config.h index 08df67ead..7d65d41b6 100644 --- a/src/citra_qt/configuration/config.h +++ b/src/citra_qt/configuration/config.h @@ -42,6 +42,7 @@ private: void ReadUIGameListValues(); void ReadUILayoutValues(); void ReadUpdaterValues(); + void ReadUtilityValues(); void ReadWebServiceValues(); void SaveValues(); @@ -62,6 +63,7 @@ private: void SaveUIGameListValues(); void SaveUILayoutValues(); void SaveUpdaterValues(); + void SaveUtilityValues(); void SaveWebServiceValues(); QVariant ReadSetting(const QString& name) const; diff --git a/src/citra_qt/configuration/configure_graphics.cpp b/src/citra_qt/configuration/configure_graphics.cpp index 8edcdb491..f74b9a211 100644 --- a/src/citra_qt/configuration/configure_graphics.cpp +++ b/src/citra_qt/configuration/configure_graphics.cpp @@ -87,6 +87,7 @@ void ConfigureGraphics::ApplyConfiguration() { Settings::values.layout_option = static_cast(ui->layout_combobox->currentIndex()); Settings::values.swap_screen = ui->swap_screen->isChecked(); + Settings::values.dump_textures = ui->toggle_dump_textures->isChecked(); Settings::values.bg_red = static_cast(bg_color.redF()); Settings::values.bg_green = static_cast(bg_color.greenF()); Settings::values.bg_blue = static_cast(bg_color.blueF()); diff --git a/src/citra_qt/configuration/configure_graphics.ui b/src/citra_qt/configuration/configure_graphics.ui index b1e33cb0e..9cac5f185 100644 --- a/src/citra_qt/configuration/configure_graphics.ui +++ b/src/citra_qt/configuration/configure_graphics.ui @@ -328,6 +328,25 @@ + + + + Utility + + + + + + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> + + + Dump Textures (Hardware Renderer only) + + + + + + diff --git a/src/core/settings.cpp b/src/core/settings.cpp index 2e0dccc03..6b28de6fb 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp @@ -87,6 +87,7 @@ void LogSettings() { LogSetting("Stereoscopy_Factor3d", Settings::values.factor_3d); LogSetting("Layout_LayoutOption", static_cast(Settings::values.layout_option)); LogSetting("Layout_SwapScreen", Settings::values.swap_screen); + LogSetting("Utility_DumpTextures", Settings::values.dump_textures); LogSetting("Audio_EnableDspLle", Settings::values.enable_dsp_lle); LogSetting("Audio_EnableDspLleMultithread", Settings::values.enable_dsp_lle_multithread); LogSetting("Audio_OutputEngine", Settings::values.sink_id); diff --git a/src/core/settings.h b/src/core/settings.h index 85fce121c..5bbf98edd 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -170,6 +170,8 @@ struct Values { bool filter_mode; std::string pp_shader_name; + bool dump_textures; + // Audio bool enable_dsp_lle; bool enable_dsp_lle_multithread;