Move Has39BitAddressSpace setting in to core settings (#134)

This commit is contained in:
N3xoX1 2026-08-13 15:31:56 +09:30 committed by GitHub
parent f658b51073
commit 4bfd926b64
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 10 additions and 17 deletions

View File

@ -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 },

View File

@ -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";

View File

@ -1,7 +1,7 @@
#include "cpu_settings.h"
#include "cpu_enum_strings.h"
#include <nxemu-cpu/cpu_settings_identifiers.h>
#include <nxemu-loader/loader_settings_identifiers.h>
#include <nxemu-core/settings/identifiers.h>
#include <common/json.h>
#include <common/json_util.h>
#include <cstring>
@ -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<int32_t>(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)

View File

@ -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"};

View File

@ -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

View File

@ -1,5 +1,4 @@
#include "loader_settings.h"
#include "loader_settings_identifiers.h"
#include "system_loader.h"
#include <memory>
#include <stdio.h>
@ -101,10 +100,6 @@ Output: None
*/
void CALL EmulationStopping(bool wait)
{
if (g_settings != nullptr)
{
g_settings->SetBool(NXLoaderSetting::Has39BitAddressSpace, false);
}
}
/*

View File

@ -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,