Add a mechanism to provide original section indices for jump table regeneration

This commit is contained in:
Mr-Wiseguy 2025-02-11 22:30:04 -05:00
parent 198de1b5cf
commit b3abbff5b4
2 changed files with 10 additions and 1 deletions

View file

@ -1563,8 +1563,14 @@ void N64Recomp::LiveGenerator::emit_switch(const Context& recompiler_context, co
// Get the relocated address of the jump table.
uint32_t section_offset = jtbl.vram - jtbl_section.ram_addr;
// Get the section index to use for relocation at runtime.
uint16_t reloc_section_index = jtbl.section_index;
if (!inputs.original_section_indices.empty()) {
reloc_section_index = inputs.original_section_indices[reloc_section_index];
}
// Populate the necessary fields of the dummy context and load the relocated address into temp2.
dummy_context.reloc_section_index = jtbl.section_index;
dummy_context.reloc_section_index = reloc_section_index;
dummy_context.reloc_target_section_offset = section_offset;
load_relocated_address(dummy_context, Registers::arithmetic_temp2);