From 4bfd926b64fdbdb45b2c3dbdcd2463ae3d91b1a6 Mon Sep 17 00:00:00 2001 From: N3xoX1 <36610570+N3xoX1@users.noreply.github.com> Date: Thu, 13 Aug 2026 15:31:56 +0930 Subject: [PATCH] Move Has39BitAddressSpace setting in to core settings (#134) --- src/nxemu-core/settings/core_settings.cpp | 1 + src/nxemu-core/settings/identifiers.h | 1 + src/nxemu-cpu/cpu_settings.cpp | 12 +++++------- .../core/loader/deconstructed_rom_directory.cpp | 3 --- src/nxemu-loader/loader_settings_identifiers.h | 1 - src/nxemu-loader/nxemu-loader.cpp | 5 ----- src/nxemu-os/os_manager.cpp | 4 +++- 7 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/nxemu-core/settings/core_settings.cpp b/src/nxemu-core/settings/core_settings.cpp index 424a92f7..3b7c5b52 100644 --- a/src/nxemu-core/settings/core_settings.cpp +++ b/src/nxemu-core/settings/core_settings.cpp @@ -74,6 +74,7 @@ namespace { NXCoreSetting::LogFilter, "", "LogFilter", &coreSettings.LogFilter, "*:Info" }, { NXCoreSetting::EmulationRunning, false }, { NXCoreSetting::EmulationState, (int)EmulationState::Stopped }, + { NXCoreSetting::Has39BitAddressSpace, false }, { NXCoreSetting::DisplayedFrames, false }, { NXCoreSetting::ShuttingDown, false}, { NXCoreSetting::DiskCacheLoadStage, -1 }, diff --git a/src/nxemu-core/settings/identifiers.h b/src/nxemu-core/settings/identifiers.h index c14f2f59..d23d720d 100644 --- a/src/nxemu-core/settings/identifiers.h +++ b/src/nxemu-core/settings/identifiers.h @@ -28,6 +28,7 @@ constexpr const char * ShowLogConsole = "nxcore:ShowLogConsole"; constexpr const char * LogFilter = "nxcore:LogFilter"; constexpr const char * EmulationRunning = "nxcore:EmulationRunning"; constexpr const char * EmulationState = "nxcore:EmulationState"; +constexpr const char * Has39BitAddressSpace = "nxcore:Has39BitAddressSpace"; constexpr const char * DisplayedFrames = "nxcore:DisplayedFrames"; constexpr const char * ShuttingDown = "nxcore:ShuttingDown"; constexpr const char * DiskCacheLoadStage = "nxcore:DiskCacheLoadStage"; diff --git a/src/nxemu-cpu/cpu_settings.cpp b/src/nxemu-cpu/cpu_settings.cpp index d00f7238..1c420b03 100644 --- a/src/nxemu-cpu/cpu_settings.cpp +++ b/src/nxemu-cpu/cpu_settings.cpp @@ -1,7 +1,7 @@ #include "cpu_settings.h" #include "cpu_enum_strings.h" #include -#include +#include #include #include #include @@ -119,7 +119,7 @@ bool IsFastmemEnabled() void UpdateNceEnabled() { - const bool has_39bit = g_settings->GetBool(NXLoaderSetting::Has39BitAddressSpace); + const bool has_39bit = g_settings->GetBool(NXCoreSetting::Has39BitAddressSpace); const bool is_nce = g_settings->GetInt(NXCpuSetting::CpuBackend) == static_cast(CpuBackend::Nce); if (is_nce && !IsFastmemEnabled()) { @@ -137,7 +137,7 @@ bool AffectsNceEnabled(const char * setting) return strcmp(setting, NXCpuSetting::CpuBackend) == 0 || strcmp(setting, NXCpuSetting::CpuDebugMode) == 0 || strcmp(setting, NXCpuSetting::CpuoptFastmem) == 0 || - strcmp(setting, NXLoaderSetting::Has39BitAddressSpace) == 0; + strcmp(setting, NXCoreSetting::Has39BitAddressSpace) == 0; } void CpuSettingChanged(const char * setting, void * /*userData*/) @@ -259,9 +259,7 @@ void SetupCpuSetting(void) g_settings->RegisterCallback(cpuSetting.identifier, CpuSettingChanged, nullptr); } - g_settings->SetDefaultBool(NXLoaderSetting::Has39BitAddressSpace, false); - g_settings->SetBool(NXLoaderSetting::Has39BitAddressSpace, false); - g_settings->RegisterCallback(NXLoaderSetting::Has39BitAddressSpace, NceInputChanged, nullptr); + g_settings->RegisterCallback(NXCoreSetting::Has39BitAddressSpace, NceInputChanged, nullptr); g_settings->SetDefaultBool(NXCpuSetting::NceEnabled, false); UpdateNceEnabled(); @@ -273,7 +271,7 @@ void CleanupCpuSetting(void) { g_settings->UnregisterCallback(cpuSetting.identifier, CpuSettingChanged, nullptr); } - g_settings->UnregisterCallback(NXLoaderSetting::Has39BitAddressSpace, NceInputChanged, nullptr); + g_settings->UnregisterCallback(NXCoreSetting::Has39BitAddressSpace, NceInputChanged, nullptr); } void SaveCpuSettings(void) diff --git a/src/nxemu-loader/core/loader/deconstructed_rom_directory.cpp b/src/nxemu-loader/core/loader/deconstructed_rom_directory.cpp index aeb08389..df5b36f4 100644 --- a/src/nxemu-loader/core/loader/deconstructed_rom_directory.cpp +++ b/src/nxemu-loader/core/loader/deconstructed_rom_directory.cpp @@ -8,7 +8,6 @@ #include "core/file_sys/patch_manager.h" #include "core/file_sys/romfs_factory.h" #include "core/loader/nso.h" -#include "loader_settings_identifiers.h" #include "system_loader.h" #include "yuzu_common/interface_pointer.h" #include "yuzu_common/interface_pointer_def.h" @@ -154,9 +153,7 @@ AppLoader_DeconstructedRomDirectory::LoadResult AppLoader_DeconstructedRomDirect } metadata.Print(); - const bool is_39bit = metadata.GetAddressSpaceType() == ProgramAddressSpaceType::Is39Bit; const bool is_application = metadata.GetPoolPartition() == PoolPartition::Application; - g_settings->SetBool(NXLoaderSetting::Has39BitAddressSpace, is_39bit); IPatchCollectionPtr patch_ctx(systemModules.Cpu().CreatePatchCollection(is_application)); const std::array static_modules = {"rtld", "main", "subsdk0", "subsdk1", "subsdk2", "subsdk3", "subsdk4", "subsdk5", "subsdk6", "subsdk7", "subsdk8", "subsdk9", "sdk"}; diff --git a/src/nxemu-loader/loader_settings_identifiers.h b/src/nxemu-loader/loader_settings_identifiers.h index 0e86fe09..9c720f07 100644 --- a/src/nxemu-loader/loader_settings_identifiers.h +++ b/src/nxemu-loader/loader_settings_identifiers.h @@ -5,6 +5,5 @@ namespace NXLoaderSetting constexpr const char * CheckForUpdatedFirmware = "nxloader:CheckForUpdatedFirmware"; constexpr const char * FirmwareInstallCurrent = "nxloader:FirmwareInstallCurrent"; constexpr const char * FirmwareInstallTotal = "nxloader:FirmwareInstallTotal"; -constexpr const char * Has39BitAddressSpace = "nxloader:Has39BitAddressSpace"; constexpr const char * AddOnDirectories = "nxloader:AddOnDirectories"; } // namespace NXLoaderSetting diff --git a/src/nxemu-loader/nxemu-loader.cpp b/src/nxemu-loader/nxemu-loader.cpp index 026724f8..67b3f018 100644 --- a/src/nxemu-loader/nxemu-loader.cpp +++ b/src/nxemu-loader/nxemu-loader.cpp @@ -1,5 +1,4 @@ #include "loader_settings.h" -#include "loader_settings_identifiers.h" #include "system_loader.h" #include #include @@ -101,10 +100,6 @@ Output: None */ void CALL EmulationStopping(bool wait) { - if (g_settings != nullptr) - { - g_settings->SetBool(NXLoaderSetting::Has39BitAddressSpace, false); - } } /* diff --git a/src/nxemu-os/os_manager.cpp b/src/nxemu-os/os_manager.cpp index 2a3eed1e..98aa6b9c 100644 --- a/src/nxemu-os/os_manager.cpp +++ b/src/nxemu-os/os_manager.cpp @@ -157,6 +157,7 @@ void OSManager::EmulationStarting() void OSManager::EmulationStopping(bool wait) { g_settings->SetBool(NXOsSetting::UseSpeedLimit, true); + g_settings->SetBool(NXCoreSetting::Has39BitAddressSpace, false); if (m_emuThread) { @@ -218,12 +219,13 @@ bool OSManager::CreateApplicationProcess(uint64_t codeSize, const IProgramMetada Kernel::KProcess::Register(kernel, m_applicationProcess); kernel.AppendNewProcess(m_applicationProcess); kernel.MakeApplicationProcess(m_applicationProcess); + g_settings->SetBool(NXCoreSetting::Has39BitAddressSpace, metaData.GetAddressSpaceType() == ProgramAddressSpaceType::Is39Bit); if (m_applicationProcess->LoadFromMetadata(metaData, codeSize, 0, is_hbl).IsError()) { return false; } - + auto params = Service::AM::FrontendAppletParameters{ .applet_id = Service::AM::AppletId::Application, .applet_type = Service::AM::AppletType::Application,