mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	Merge pull request #284 from bunnei/docked-config
Add config for "Docked" mode and various settings cleanup
This commit is contained in:
		
						commit
						a5e9745380
					
				| @ -148,19 +148,15 @@ System::ResultStatus System::Init(EmuWindow* emu_window, u32 system_mode) { | ||||
| 
 | ||||
|     current_process = Kernel::Process::Create("main"); | ||||
| 
 | ||||
|     switch (Settings::values.cpu_core) { | ||||
|     case Settings::CpuCore::Unicorn: | ||||
|         cpu_core = std::make_shared<ARM_Unicorn>(); | ||||
|         break; | ||||
|     case Settings::CpuCore::Dynarmic: | ||||
|     default: | ||||
|     if (Settings::values.use_cpu_jit) { | ||||
| #ifdef ARCHITECTURE_x86_64 | ||||
|         cpu_core = std::make_shared<ARM_Dynarmic>(); | ||||
| #else | ||||
|         cpu_core = std::make_shared<ARM_Unicorn>(); | ||||
|         LOG_WARNING(Core, "CPU JIT requested, but Dynarmic not available"); | ||||
| #endif | ||||
|         break; | ||||
|     } else { | ||||
|         cpu_core = std::make_shared<ARM_Unicorn>(); | ||||
|     } | ||||
| 
 | ||||
|     gpu_core = std::make_unique<Tegra::GPU>(); | ||||
|  | ||||
| @ -12,6 +12,7 @@ | ||||
| #include "core/hle/service/apm/apm.h" | ||||
| #include "core/hle/service/filesystem/filesystem.h" | ||||
| #include "core/hle/service/nvflinger/nvflinger.h" | ||||
| #include "core/settings.h" | ||||
| 
 | ||||
| namespace Service { | ||||
| namespace AM { | ||||
| @ -241,17 +242,20 @@ void ICommonStateGetter::GetCurrentFocusState(Kernel::HLERequestContext& ctx) { | ||||
| } | ||||
| 
 | ||||
| void ICommonStateGetter::GetOperationMode(Kernel::HLERequestContext& ctx) { | ||||
|     const bool use_docked_mode{Settings::values.use_docked_mode}; | ||||
|     IPC::ResponseBuilder rb{ctx, 3}; | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
|     rb.Push(static_cast<u8>(OperationMode::Handheld)); | ||||
|     rb.Push(static_cast<u8>(use_docked_mode ? OperationMode::Docked : OperationMode::Handheld)); | ||||
| 
 | ||||
|     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||
| } | ||||
| 
 | ||||
| void ICommonStateGetter::GetPerformanceMode(Kernel::HLERequestContext& ctx) { | ||||
|     const bool use_docked_mode{Settings::values.use_docked_mode}; | ||||
|     IPC::ResponseBuilder rb{ctx, 3}; | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
|     rb.Push(static_cast<u32>(APM::PerformanceMode::Handheld)); | ||||
|     rb.Push(static_cast<u32>(use_docked_mode ? APM::PerformanceMode::Docked | ||||
|                                              : APM::PerformanceMode::Handheld)); | ||||
| 
 | ||||
|     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||
| } | ||||
|  | ||||
| @ -105,12 +105,10 @@ static const std::array<const char*, NumAnalogs> mapping = {{ | ||||
| }}; | ||||
| } // namespace NativeAnalog
 | ||||
| 
 | ||||
| enum class CpuCore { | ||||
|     Unicorn, | ||||
|     Dynarmic, | ||||
| }; | ||||
| 
 | ||||
| struct Values { | ||||
|     // System
 | ||||
|     bool use_docked_mode; | ||||
| 
 | ||||
|     // Controls
 | ||||
|     std::array<std::string, NativeButton::NumButtons> buttons; | ||||
|     std::array<std::string, NativeAnalog::NumAnalogs> analogs; | ||||
| @ -118,7 +116,7 @@ struct Values { | ||||
|     std::string touch_device; | ||||
| 
 | ||||
|     // Core
 | ||||
|     CpuCore cpu_core; | ||||
|     bool use_cpu_jit; | ||||
| 
 | ||||
|     // Data Storage
 | ||||
|     bool use_virtual_sd; | ||||
|  | ||||
| @ -154,12 +154,13 @@ TelemetrySession::TelemetrySession() { | ||||
| #endif | ||||
| 
 | ||||
|     // Log user configuration information
 | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Core_CpuCore", | ||||
|              static_cast<int>(Settings::values.cpu_core)); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Core_UseCpuJit", Settings::values.use_cpu_jit); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Renderer_ResolutionFactor", | ||||
|              Settings::values.resolution_factor); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Renderer_ToggleFramelimit", | ||||
|              Settings::values.toggle_framelimit); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "System_UseDockedMode", | ||||
|              Settings::values.use_docked_mode); | ||||
| } | ||||
| 
 | ||||
| TelemetrySession::~TelemetrySession() { | ||||
|  | ||||
| @ -77,8 +77,7 @@ void Config::ReadValues() { | ||||
|     qt_config->endGroup(); | ||||
| 
 | ||||
|     qt_config->beginGroup("Core"); | ||||
|     Settings::values.cpu_core = | ||||
|         static_cast<Settings::CpuCore>(qt_config->value("cpu_core", 1).toInt()); | ||||
|     Settings::values.use_cpu_jit = qt_config->value("use_cpu_jit", true).toBool(); | ||||
|     qt_config->endGroup(); | ||||
| 
 | ||||
|     qt_config->beginGroup("Renderer"); | ||||
| @ -94,6 +93,10 @@ void Config::ReadValues() { | ||||
|     Settings::values.use_virtual_sd = qt_config->value("use_virtual_sd", true).toBool(); | ||||
|     qt_config->endGroup(); | ||||
| 
 | ||||
|     qt_config->beginGroup("System"); | ||||
|     Settings::values.use_docked_mode = qt_config->value("use_docked_mode", true).toBool(); | ||||
|     qt_config->endGroup(); | ||||
| 
 | ||||
|     qt_config->beginGroup("Miscellaneous"); | ||||
|     Settings::values.log_filter = qt_config->value("log_filter", "*:Info").toString().toStdString(); | ||||
|     qt_config->endGroup(); | ||||
| @ -171,7 +174,7 @@ void Config::SaveValues() { | ||||
|     qt_config->endGroup(); | ||||
| 
 | ||||
|     qt_config->beginGroup("Core"); | ||||
|     qt_config->setValue("cpu_core", static_cast<int>(Settings::values.cpu_core)); | ||||
|     qt_config->setValue("use_cpu_jit", Settings::values.use_cpu_jit); | ||||
|     qt_config->endGroup(); | ||||
| 
 | ||||
|     qt_config->beginGroup("Renderer"); | ||||
| @ -188,6 +191,10 @@ void Config::SaveValues() { | ||||
|     qt_config->setValue("use_virtual_sd", Settings::values.use_virtual_sd); | ||||
|     qt_config->endGroup(); | ||||
| 
 | ||||
|     qt_config->beginGroup("System"); | ||||
|     qt_config->setValue("use_docked_mode", Settings::values.use_docked_mode); | ||||
|     qt_config->endGroup(); | ||||
| 
 | ||||
|     qt_config->beginGroup("Miscellaneous"); | ||||
|     qt_config->setValue("log_filter", QString::fromStdString(Settings::values.log_filter)); | ||||
|     qt_config->endGroup(); | ||||
|  | ||||
| @ -15,7 +15,8 @@ ConfigureGeneral::ConfigureGeneral(QWidget* parent) | ||||
| 
 | ||||
|     this->setConfiguration(); | ||||
| 
 | ||||
|     ui->cpu_core_combobox->setEnabled(!Core::System::GetInstance().IsPoweredOn()); | ||||
|     ui->use_cpu_jit->setEnabled(!Core::System::GetInstance().IsPoweredOn()); | ||||
|     ui->use_docked_mode->setEnabled(!Core::System::GetInstance().IsPoweredOn()); | ||||
| } | ||||
| 
 | ||||
| ConfigureGeneral::~ConfigureGeneral() {} | ||||
| @ -23,13 +24,14 @@ ConfigureGeneral::~ConfigureGeneral() {} | ||||
| void ConfigureGeneral::setConfiguration() { | ||||
|     ui->toggle_deepscan->setChecked(UISettings::values.gamedir_deepscan); | ||||
|     ui->toggle_check_exit->setChecked(UISettings::values.confirm_before_closing); | ||||
|     ui->cpu_core_combobox->setCurrentIndex(static_cast<int>(Settings::values.cpu_core)); | ||||
|     ui->use_cpu_jit->setChecked(Settings::values.use_cpu_jit); | ||||
|     ui->use_docked_mode->setChecked(Settings::values.use_docked_mode); | ||||
| } | ||||
| 
 | ||||
| void ConfigureGeneral::applyConfiguration() { | ||||
|     UISettings::values.gamedir_deepscan = ui->toggle_deepscan->isChecked(); | ||||
|     UISettings::values.confirm_before_closing = ui->toggle_check_exit->isChecked(); | ||||
|     Settings::values.cpu_core = | ||||
|         static_cast<Settings::CpuCore>(ui->cpu_core_combobox->currentIndex()); | ||||
|     Settings::values.use_cpu_jit = ui->use_cpu_jit->isChecked(); | ||||
|     Settings::values.use_docked_mode = ui->use_docked_mode->isChecked(); | ||||
|     Settings::Apply(); | ||||
| } | ||||
|  | ||||
| @ -13,17 +13,17 @@ | ||||
|   <property name="windowTitle"> | ||||
|    <string>Form</string> | ||||
|   </property> | ||||
|   <layout class="QHBoxLayout" name="horizontalLayout"> | ||||
|   <layout class="QHBoxLayout" name="HorizontalLayout"> | ||||
|    <item> | ||||
|     <layout class="QVBoxLayout" name="verticalLayout"> | ||||
|     <layout class="QVBoxLayout" name="VerticalLayout"> | ||||
|      <item> | ||||
|       <widget class="QGroupBox" name="groupBox"> | ||||
|       <widget class="QGroupBox" name="GeneralGroupBox"> | ||||
|        <property name="title"> | ||||
|         <string>General</string> | ||||
|        </property> | ||||
|        <layout class="QHBoxLayout" name="horizontalLayout_3"> | ||||
|        <layout class="QHBoxLayout" name="GeneralHorizontalLayout"> | ||||
|         <item> | ||||
|          <layout class="QVBoxLayout" name="verticalLayout_2"> | ||||
|          <layout class="QVBoxLayout" name="GeneralVerticalLayout"> | ||||
|           <item> | ||||
|            <widget class="QCheckBox" name="toggle_deepscan"> | ||||
|             <property name="text"> | ||||
| @ -44,25 +44,18 @@ | ||||
|       </widget> | ||||
|      </item> | ||||
|      <item> | ||||
|        <widget class="QGroupBox" name="groupBox_2"> | ||||
|       <widget class="QGroupBox" name="PerformanceGroupBox"> | ||||
|        <property name="title"> | ||||
|            <string>CPU Core</string> | ||||
|         <string>Performance</string> | ||||
|        </property> | ||||
|          <layout class="QHBoxLayout" name="horizontalLayout_7"> | ||||
|        <layout class="QHBoxLayout" name="PerformanceHorizontalLayout"> | ||||
|         <item> | ||||
|              <layout class="QVBoxLayout" name="verticalLayout_5"> | ||||
|                <item> | ||||
|                  <widget class="QComboBox" name="cpu_core_combobox"> | ||||
|          <layout class="QVBoxLayout" name="PerformanceVerticalLayout"> | ||||
|           <item> | ||||
|            <widget class="QCheckBox" name="use_cpu_jit"> | ||||
|             <property name="text"> | ||||
|                     <string>Unicorn</string> | ||||
|              <string>Enable CPU JIT</string> | ||||
|             </property> | ||||
|                   </item> | ||||
|                   <item> | ||||
|                    <property name="text"> | ||||
|                     <string>Dynarmic</string> | ||||
|                    </property> | ||||
|                   </item> | ||||
|            </widget> | ||||
|           </item> | ||||
|          </layout> | ||||
| @ -71,13 +64,33 @@ | ||||
|       </widget> | ||||
|      </item> | ||||
|      <item> | ||||
|       <widget class="QGroupBox" name="groupBox_3"> | ||||
|       <widget class="QGroupBox" name="EmulationGroupBox"> | ||||
|        <property name="title"> | ||||
|         <string>Emulation</string> | ||||
|        </property> | ||||
|         <layout class="QHBoxLayout" name="EmulationHorizontalLayout"> | ||||
|           <item> | ||||
|             <layout class="QVBoxLayout" name="EmulationVerticalLayout"> | ||||
|               <item> | ||||
|                 <widget class="QCheckBox" name="use_docked_mode"> | ||||
|                   <property name="text"> | ||||
|                     <string>Enable docked mode</string> | ||||
|                   </property> | ||||
|                 </widget> | ||||
|               </item> | ||||
|             </layout> | ||||
|           </item> | ||||
|         </layout> | ||||
|       </widget> | ||||
|      </item> | ||||
|      <item> | ||||
|       <widget class="QGroupBox" name="HotKeysGroupBox"> | ||||
|        <property name="title"> | ||||
|         <string>Hotkeys</string> | ||||
|        </property> | ||||
|        <layout class="QHBoxLayout" name="horizontalLayout_4"> | ||||
|        <layout class="QHBoxLayout" name="HotKeysHorizontalLayout"> | ||||
|         <item> | ||||
|          <layout class="QVBoxLayout" name="verticalLayout_4"> | ||||
|          <layout class="QVBoxLayout" name="HotKeysVerticalLayout"> | ||||
|           <item> | ||||
|            <widget class="GHotkeysDialog" name="widget" native="true"/> | ||||
|           </item> | ||||
|  | ||||
| @ -90,8 +90,7 @@ void Config::ReadValues() { | ||||
|         sdl2_config->Get("Controls", "touch_device", "engine:emu_window"); | ||||
| 
 | ||||
|     // Core
 | ||||
|     Settings::values.cpu_core = | ||||
|         static_cast<Settings::CpuCore>(sdl2_config->GetInteger("Core", "cpu_core", 1)); | ||||
|     Settings::values.use_cpu_jit = sdl2_config->GetBoolean("Core", "use_cpu_jit", true); | ||||
| 
 | ||||
|     // Renderer
 | ||||
|     Settings::values.resolution_factor = | ||||
| @ -107,6 +106,9 @@ void Config::ReadValues() { | ||||
|     Settings::values.use_virtual_sd = | ||||
|         sdl2_config->GetBoolean("Data Storage", "use_virtual_sd", true); | ||||
| 
 | ||||
|     // System
 | ||||
|     Settings::values.use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", true); | ||||
| 
 | ||||
|     // Miscellaneous
 | ||||
|     Settings::values.log_filter = sdl2_config->Get("Miscellaneous", "log_filter", "*:Trace"); | ||||
| 
 | ||||
|  | ||||
| @ -76,9 +76,9 @@ motion_device= | ||||
| touch_device= | ||||
| 
 | ||||
| [Core] | ||||
| # Which CPU core to use for CPU emulation | ||||
| # 0: Unicorn (slow), 1 (default): Dynarmic (faster) | ||||
| cpu_core = | ||||
| # Whether to use the Just-In-Time (JIT) compiler for CPU emulation | ||||
| # 0: Interpreter (slow), 1 (default): JIT (fast) | ||||
| use_cpu_jit = | ||||
| 
 | ||||
| [Renderer] | ||||
| # Whether to use software or hardware rendering. | ||||
| @ -154,6 +154,10 @@ output_device = | ||||
| use_virtual_sd = | ||||
| 
 | ||||
| [System] | ||||
| # Whether the system is docked | ||||
| # 1 (default): Yes, 0: No | ||||
| use_docked_mode = | ||||
| 
 | ||||
| # The system region that Citra will use during emulation | ||||
| # -1: Auto-select (default), 0: Japan, 1: USA, 2: Europe, 3: Australia, 4: China, 5: Korea, 6: Taiwan | ||||
| region_value = | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 bunnei
						bunnei