Auto-detect original shared_font.bin memory base

This allows a file dumped from either an o3DS or a n3DS (and potentially
even an original unrebased file) to be used.
This commit is contained in:
Yuri Kunde Schlesner
2016-08-27 01:04:26 -07:00
parent b879d8c31b
commit 1f7ec4be9b
3 changed files with 68 additions and 30 deletions

View File

@ -81,13 +81,8 @@ void GetSharedFont(Service::Interface* self) {
// The shared font has to be relocated to the new address before being passed to the application.
VAddr target_address = Memory::PhysicalToVirtualAddress(shared_font_mem->linear_heap_phys_address);
// The shared font dumped by 3dsutils (https://github.com/citra-emu/3dsutils) uses this address as base,
// so we relocate it from there to our real address.
// TODO(Subv): This address is wrong if the shared font is dumped from a n3DS,
// we need a way to automatically calculate the original address of the font from the file.
static const VAddr SHARED_FONT_VADDR = 0x18000000;
if (!shared_font_relocated) {
BCFNT::RelocateSharedFont(shared_font_mem, SHARED_FONT_VADDR, target_address);
BCFNT::RelocateSharedFont(shared_font_mem, target_address);
shared_font_relocated = true;
}
cmd_buff[0] = IPC::MakeHeader(0x44, 2, 2);