Port UMA part 5.3 (NCE EXT)

This commit is contained in:
CamilleLaVey 2026-10-01 16:52:15 -04:00
parent 73cac64037
commit e11ea7f008
8 changed files with 27 additions and 0 deletions

View file

@ -147,6 +147,10 @@ ProgramAddressSpaceType ProgramMetadata::GetAddressSpaceType() const {
return npdm_header.address_space_type;
}
void ProgramMetadata::SetAddressSpaceType(ProgramAddressSpaceType address_space) {
npdm_header.address_space_type.Assign(address_space);
}
u8 ProgramMetadata::GetMainThreadPriority() const {
return npdm_header.main_thread_priority;
}

View file

@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@ -73,6 +76,7 @@ public:
bool Is64BitProgram() const;
ProgramAddressSpaceType GetAddressSpaceType() const;
void SetAddressSpaceType(ProgramAddressSpaceType address_space);
u8 GetMainThreadPriority() const;
u8 GetMainThreadCore() const;
u32 GetMainThreadStackSize() const;

View file

@ -182,6 +182,12 @@ AppLoader_DeconstructedRomDirectory::LoadResult AppLoader_DeconstructedRomDirect
}
metadata.Print();
if (Settings::values.relocate_36bit_address_space.GetValue() &&
Settings::values.cpu_backend.GetValue() == Settings::CpuBackend::Nce &&
metadata.GetAddressSpaceType() == FileSys::ProgramAddressSpaceType::Is36Bit) {
metadata.SetAddressSpaceType(FileSys::ProgramAddressSpaceType::Is39Bit);
}
// Enable NCE only for applications with 39-bit address space.
const bool is_39bit =
metadata.GetAddressSpaceType() == FileSys::ProgramAddressSpaceType::Is39Bit;