diff --git a/asm/include/main.inc b/asm/include/main.inc index 28481a5c..9ace1882 100644 --- a/asm/include/main.inc +++ b/asm/include/main.inc @@ -1111,3 +1111,4 @@ .extern data_027e0d28 .extern data_027e0d18 .extern func_ov16_0211ffdc +.extern gHeap diff --git a/asm/main.s b/asm/main.s index d4599e95..ce720fde 100644 --- a/asm/main.s +++ b/asm/main.s @@ -19951,7 +19951,7 @@ _0200e57c: pop {r3, pc} .align 2, 0 thumb_func_end func_0200e52c -_0200e580: .word 0x0219b1c0 +_0200e580: .word gHeap _0200e584: .word data_0205acdc _0200e588: .word 0x023e0000 _0200e58c: .word 0x01ffffa0 @@ -63993,7 +63993,7 @@ _0202f738: .word data_020577dc _0202f73c: .word data_020577ec _0202f740: .word data_020577f0 _0202f744: .word data_027e02a0 -_0202f748: .word 0x0219b1c0 +_0202f748: .word gHeap _0202f74c: .word func_01ff8000 _0202f750: .word data_020577f8 diff --git a/tools/lcf.py b/tools/lcf.py index b2ec479b..538c8085 100644 --- a/tools/lcf.py +++ b/tools/lcf.py @@ -264,10 +264,15 @@ with open(f'{BUILD}arm9_linker_script.lcf', 'w') as file: file.write(f'AFTER({str(ov.after)})') file.write(f' > overlays/{ov.name}.bin\n') + file.write('\n') + file.write(' HEAP : ORIGIN = AFTER(ARM9,') + file.write(','.join(map(str, OVERLAYS))) + file.write(')\n') file.write('}\n') file.write('\n') file.write('SECTIONS {\n') file.write(' .arm9 : {\n') + file.write(' gHeap = ADDR(HEAP);\n') file.write(' . = ALIGN(32);\n') for obj in ARM9_OBJECTS: file.write(f' {name(obj)}.o(.text)\n') for obj in ARM9_OBJECTS: file.write(f' {name(obj)}.o(.init)\n') @@ -373,6 +378,10 @@ with open(f'{BUILD}arm9_linker_script.lcf', 'w') as file: file.write('WRITEW 0; ') # compression flags, overlay is compressed later file.write('\n') file.write(' } > OV_TABLE\n') + file.write('\n') + file.write(' .heap : {\n') + file.write(' gHeap = .;\n') + file.write(' } > HEAP\n') file.write('}\n') with open(f'{BUILD}arm9_objects.txt', 'w') as file: