summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/Makefile5
-rw-r--r--arm9/arm9.lcf50
-rw-r--r--arm9/arm9.lsf534
-rw-r--r--arm9/asm/unk_020910EC.s20
-rw-r--r--arm9/global.inc6
-rw-r--r--arm9/lib/src/custom_allocator.c32
-rw-r--r--arm9/modules/83/asm/module_83.s2
-rw-r--r--arm9/src/FUN_020910A4.c32
-rw-r--r--arm9/src/GFLIB_sysctl.c (renamed from arm9/src/FUN_02000DE4.c)0
9 files changed, 474 insertions, 207 deletions
diff --git a/arm9/Makefile b/arm9/Makefile
index 00773ab1..f1343b76 100644
--- a/arm9/Makefile
+++ b/arm9/Makefile
@@ -61,8 +61,6 @@ S_OBJS = $(S_FILES:%.s=$(BUILD_DIR)/%.o)
O_FILES := $(C_OBJS) $(CXX_OBJS) $(S_OBJS)
# Overlay modules
-# FIXME: lcf doesn't like this
-# BIN_FILES := $(wildcard files/*.__AT_*)
OVERLAYS := \
MODULE_00 \
MODULE_01 \
@@ -247,7 +245,6 @@ ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS))
# TODO: Move out to lib/Makefile
build/lib/src/%.o: MWCCVERSION = 1.2/sp2p3
-build/src/FUN_020910A4.o: MWCCVERSION = 1.2/sp2p3
####################### Everything Else ######################
@@ -301,8 +298,6 @@ baserom.%: ;
$(BIN_FILES): ;
-$(BUILD_DIR)/data/icon.o: graphics/icon.4bpp graphics/icon.gbapal
-
### Debug Print ###
print-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 4bdb86db..f1e7fdd1 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -122,7 +122,7 @@ SECTIONS {
crt0.o (.rodata)
* (.version)
main.o (.text)
- FUN_02000DE4.o (.text)
+ GFLIB_sysctl.o (.text)
unk_020010A8.o (.text)
unk_02001B80.o (.text)
string_util.o (.text)
@@ -429,7 +429,7 @@ SECTIONS {
unk_0208A998.o (.text)
/* Third-party libraries */
unk_0208AC14.o (.text)
- FUN_020910A4.o (.text)
+ custom_allocator.o (.text)
unk_020910EC.o (.text)
unk_020AF030.o (.text)
/* Nitro SDK */
@@ -582,7 +582,7 @@ SECTIONS {
/* ALIGNALL(4); . = ALIGN(32); */
SDK_STATIC_BSS_START = .;
bss.o (.bss)
- FUN_020910A4.o (.bss)
+ custom_allocator.o (.bss)
bss_2.o (.bss)
OS_alloc.o (.bss)
bss_3.o (.bss)
@@ -691,17 +691,10 @@ SECTIONS {
SDK_OVERLAY_MODULE_00_ID = 0;
SDK_OVERLAY.MODULE_00.ID = 0;
SDK_OVERLAY.MODULE_00.START = .;
- module_00_dummy.o (.text)
- module_00_dummy.o (.rodata)
- module_00_dummy.o (.init)
SDK_OVERLAY.MODULE_00.SINIT_START = .;
- module_00_dummy.o (.ctor)
- module_00_dummy.o (.sinit)
WRITEW 0;
SDK_OVERLAY.MODULE_00.SINIT_END = .;
. = ALIGN(32);
- module_00_dummy.o (.sdata)
- module_00_dummy.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_00.END = .;
SDK_OVERLAY.MODULE_00.SIZE = SDK_OVERLAY.MODULE_00.END - SDK_OVERLAY.MODULE_00.START;
@@ -710,8 +703,6 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_00.BSS_START = .;
- module_00_dummy.o (.bss)
- module_00_dummy.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_00.BSS_END = .;
SDK_OVERLAY.MODULE_00.BSS_SIZE = SDK_OVERLAY.MODULE_00.BSS_END - SDK_OVERLAY.MODULE_00.BSS_START;
@@ -755,16 +746,10 @@ SECTIONS {
SDK_OVERLAY_MODULE_02_ID = 2;
SDK_OVERLAY.MODULE_02.ID = 2;
SDK_OVERLAY.MODULE_02.START = .;
- module_02_dummy.o (.text)
- module_02_dummy.o (.rodata)
SDK_OVERLAY.MODULE_02.SINIT_START = .;
- module_02_dummy.o (.ctor)
- module_02_dummy.o (.sinit)
WRITEW 0;
SDK_OVERLAY.MODULE_02.SINIT_END = .;
. = ALIGN(32);
- module_02_dummy.o (.sdata)
- module_02_dummy.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_02.END = .;
SDK_OVERLAY.MODULE_02.SIZE = SDK_OVERLAY.MODULE_02.END - SDK_OVERLAY.MODULE_02.START;
@@ -773,8 +758,6 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_02.BSS_START = .;
- module_02_dummy.o (.bss)
- module_02_dummy.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_02.BSS_END = .;
SDK_OVERLAY.MODULE_02.BSS_SIZE = SDK_OVERLAY.MODULE_02.BSS_END - SDK_OVERLAY.MODULE_02.BSS_START;
@@ -786,17 +769,10 @@ SECTIONS {
SDK_OVERLAY_MODULE_03_ID = 3;
SDK_OVERLAY.MODULE_03.ID = 3;
SDK_OVERLAY.MODULE_03.START = .;
- module_03_dummy.o (.text)
- module_03_dummy.o (.rodata)
- module_03_dummy.o (.init)
SDK_OVERLAY.MODULE_03.SINIT_START = .;
- module_03_dummy.o (.ctor)
- module_03_dummy.o (.sinit)
WRITEW 0;
SDK_OVERLAY.MODULE_03.SINIT_END = .;
. = ALIGN(32);
- module_03_dummy.o (.sdata)
- module_03_dummy.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_03.END = .;
SDK_OVERLAY.MODULE_03.SIZE = SDK_OVERLAY.MODULE_03.END - SDK_OVERLAY.MODULE_03.START;
@@ -805,8 +781,6 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_03.BSS_START = .;
- module_03_dummy.o (.bss)
- module_03_dummy.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_03.BSS_END = .;
SDK_OVERLAY.MODULE_03.BSS_SIZE = SDK_OVERLAY.MODULE_03.BSS_END - SDK_OVERLAY.MODULE_03.BSS_START;
@@ -1021,17 +995,10 @@ SECTIONS {
SDK_OVERLAY_MODULE_10_ID = 10;
SDK_OVERLAY.MODULE_10.ID = 10;
SDK_OVERLAY.MODULE_10.START = .;
- module_10_dummy.o (.text)
- module_10_dummy.o (.rodata)
- module_10_dummy.o (.init)
SDK_OVERLAY.MODULE_10.SINIT_START = .;
- module_10_dummy.o (.ctor)
- module_10_dummy.o (.sinit)
WRITEW 0;
SDK_OVERLAY.MODULE_10.SINIT_END = .;
. = ALIGN(32);
- module_10_dummy.o (.sdata)
- module_10_dummy.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_10.END = .;
SDK_OVERLAY.MODULE_10.SIZE = SDK_OVERLAY.MODULE_10.END - SDK_OVERLAY.MODULE_10.START;
@@ -1041,8 +1008,6 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_10.BSS_START = .;
- module_10_dummy.o (.bss)
- module_10_dummy.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_10.BSS_END = .;
SDK_OVERLAY.MODULE_10.BSS_SIZE = SDK_OVERLAY.MODULE_10.BSS_END - SDK_OVERLAY.MODULE_10.BSS_START;
@@ -3090,17 +3055,10 @@ SECTIONS {
SDK_OVERLAY_MODULE_72_ID = 72;
SDK_OVERLAY.MODULE_72.ID = 72;
SDK_OVERLAY.MODULE_72.START = .;
- module_72_dummy.o (.text)
- module_72_dummy.o (.rodata)
- module_72_dummy.o (.init)
SDK_OVERLAY.MODULE_72.SINIT_START = .;
- module_72_dummy.o (.ctor)
- module_72_dummy.o (.sinit)
WRITEW 0;
SDK_OVERLAY.MODULE_72.SINIT_END = .;
. = ALIGN(32);
- module_72_dummy.o (.sdata)
- module_72_dummy.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_72.END = .;
SDK_OVERLAY.MODULE_72.SIZE = SDK_OVERLAY.MODULE_72.END - SDK_OVERLAY.MODULE_72.START;
@@ -3110,8 +3068,6 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_72.BSS_START = .;
- module_72_dummy.o (.bss)
- module_72_dummy.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_72.BSS_END = .;
SDK_OVERLAY.MODULE_72.BSS_SIZE = SDK_OVERLAY.MODULE_72.BSS_END - SDK_OVERLAY.MODULE_72.BSS_START;
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 49e17956..dfb38bb4 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -3,111 +3,431 @@ Static arm9
{
Address 0x02000000
Object main.o
- Object FUN_02000DF4.o
- Object unk_02000E0C.o
- Object rom2.o
- Object string_util.o
- Object unk_020023C0.o
- Object filesystem.o
- Object unk_02006864.o
- Object script.o
- Object unk_02038C78.o
- Object scrcmd.o
- Object unk_02046030.o
- Object unk_0208AC14.o
- Object FUN_020910A4.o
- Object unk_020910EC.o
- Object unk_020AF030.o
- Object FX_mtx22.o
- Object FX_mtx33.o
- Object FX_mtx43.o
- Object FX_mtx44.o
- Object FX_cp.o
- Object FX_vec.o
- Object FX_atan.o
- Object FX.o
- Object GX.o
- Object GX_state.o
- Object GX_vramcnt.o
- Object GX_bgcnt.o
- Object GX_g2.o
- Object GX_g3b.o
- Object GX_g3imm.o
- Object GX_g3x.o
- Object GX_g3_util.o
- Object GX_load2d.o
- Object GX_load3d.o
- Object GX_g3.o
- Object GX_asm.o
- Object OS_irqHandler.o
- Object OS_irqTable.o
- Object OS_interrupt.o
- Object OS_spinLock.o
- Object OS_printf.o
- Object OS_thread.o
- Object OS_context.o
- Object OS_emulator.o
- Object OS_message.o
- Object OS_mutex.o
- Object OS_cache.o
- Object OS_init.o
- Object OS_arena.o
- Object OS_alloc.o
- Object OS_tcm.o
- Object OS_protectionUnit.o
- Object OS_protectionRegion.o
- Object OS_exception.o
- Object OS_timer.o
- Object OS_tick.o
- Object OS_alarm.o
- Object OS_valarm.o
- Object OS_system.o
- Object OS_reset.o
- Object OS_ownerInfo.o
- Object OS_vramExclusive.o
- Object OS_entropy.o
- Object OS_terminate_proc.o
- Object MI_wram.o
- Object MI_dma.o
- Object MI_dma_hblank.o
- Object MI_dma_gxcommand.o
- Object MI_memory.o
- Object MI_swap.o
- Object MI_uncompress.o
- Object MI_dma_card.o
- Object MI_init.o
- Object SND_interface.o
- Object SND_main.o
- Object SND_command.o
- Object SND_alarm.o
- Object SND_work.o
- Object SND_util.o
- Object SND_bank.o
- Object PXI_init.o
- Object PXI_fifo.o
- Object rom2_2.o
- Object FS_command.o
- Object FS_command_default.o
- Object FS_archive.o
- Object FS_file.o
- Object FS_rom.o
- Object FS_overlay.o
- Object DGT_hash1.o
- Object DGT_hash2.o
- Object DGT_sha1s_arm4cw.o
- Object libcp.o
- Object libspi.o
- Object libpm.o
- Object librtc.o
- Object libcard.o
- Object libwm.o
- Object libctrdg.o
- Object libmath.o
- Object libstd.o
- Object libc.o
- Object rom2_3.o
- Object libmwcc.o
- Object rom2_4.o
+ Object GFLIB_sysctl.o
+ Object unk_020010A8.o
+ Object unk_02001B80.o
+ Object string_util.o
+ Object unk_020023C0.o
+ Object unk_02002C14.o
+ Object unk_02002F08.o
+ Object unk_020030E8.o
+ Object unk_02003B98.o
+ Object unk_020040F4.o
+ Object unk_020051F4.o
+ Object unk_02005CFC.o
+ Object poke_overlay.o
+ Object unk_020061E8.o
+ Object unk_02006234.o
+ Object filesystem.o
+ Object unk_02006864.o
+ Object unk_02006D98.o
+ Object unk_02008AA4.o
+ Object unk_02008DEC.o
+ Object unk_02009EAC.o
+ Object unk_0200A384.o
+ Object unk_0200AA80.o
+ Object unk_0200BA78.o
+ Object unk_0200BB14.o
+ Object unk_0200CA44.o
+ Object unk_0200CABC.o
+ Object unk_0200E1D0.o
+ Object unk_0200E850.o
+ Object unk_0201137C.o
+ Object unk_02011744.o
+ Object unk_02012CC8.o
+ Object unk_02013724.o
+ Object unk_020139D8.o
+ Object unk_02013CD4.o
+ Object unk_020142EC.o
+ Object unk_020144FC.o
+ Object unk_02014590.o
+ Object unk_02014BF4.o
+ Object unk_02015CC0.o
+ Object unk_02015D14.o
+ Object unk_02015E30.o
+ Object unk_02015EA0.o
+ Object unk_020166C8.o
+ Object unk_02016B94.o
+ Object unk_0201B1A8.o
+ Object unk_0201B4E8.o
+ Object unk_0201B6D0.o
+ Object unk_0201B8B8.o
+ Object math_util.o
+ Object unk_0201BCBC.o
+ Object unk_0201C24C.o
+ Object unk_0201C360.o
+ Object unk_0201C620.o
+ Object unk_0201C6B4.o
+ Object unk_0201C7A0.o
+ Object unk_0201CBEC.o
+ Object unk_0201CC08.o
+ Object unk_0201D040.o
+ Object unk_0201E00C.o
+ Object unk_0201E66C.o
+ Object unk_0201E7D8.o
+ Object unk_0201F06C.o
+ Object unk_020208B8.o
+ Object unk_02020AFC.o
+ Object error_handling.o
+ Object unk_02020C44.o
+ Object unk_0202134C.o
+ Object unk_02021590.o
+ Object unk_02021934.o
+ Object unk_02021FF8.o
+ Object unk_02022244.o
+ Object unk_02022294.o
+ Object unk_020222E8.o
+ Object unk_02022318.o
+ Object unk_02022450.o
+ Object unk_02022504.o
+ Object save.o
+ Object unk_0202376C.o
+ Object unk_020238C4.o
+ Object unk_02023AC4.o
+ Object unk_02023C40.o
+ Object unk_02024E64.o
+ Object unk_02024F30.o
+ Object unk_020250A4.o
+ Object unk_02025484.o
+ Object unk_020254B8.o
+ Object unk_02025658.o
+ Object unk_02025954.o
+ Object unk_02026CD0.o
+ Object unk_02027E30.o
+ Object unk_020281E0.o
+ Object unk_020286F8.o
+ Object unk_02028910.o
+ Object unk_02028980.o
+ Object unk_02029A84.o
+ Object unk_02029AE0.o
+ Object unk_02029C58.o
+ Object unk_02029CEC.o
+ Object unk_02029E48.o
+ Object unk_02029EC4.o
+ Object unk_02029FB0.o
+ Object unk_0202A1E0.o
+ Object unk_0202A8F4.o
+ Object unk_0202A924.o
+ Object unk_0202ABBC.o
+ Object unk_0202AC20.o
+ Object unk_0202B034.o
+ Object unk_0202B374.o
+ Object unk_0202B870.o
+ Object unk_0202BE98.o
+ Object unk_0202C0E0.o
+ Object unk_0202C144.o
+ Object unk_0202C198.o
+ Object unk_0202D394.o
+ Object unk_0202D4C4.o
+ Object unk_0202D858.o
+ Object unk_0202D8D0.o
+ Object unk_0202DB14.o
+ Object unk_0202E29C.o
+ Object unk_0202F150.o
+ Object unk_02031480.o
+ Object unk_02031734.o
+ Object unk_020336C0.o
+ Object unk_02033778.o
+ Object unk_020337E8.o
+ Object unk_02033874.o
+ Object unk_02033B68.o
+ Object unk_02033F50.o
+ Object unk_02034188.o
+ Object unk_020343A8.o
+ Object unk_02034710.o
+ Object unk_02034A28.o
+ Object unk_02034D7C.o
+ Object unk_02034E84.o
+ Object unk_02034FE4.o
+ Object unk_02035068.o
+ Object unk_02036FA4.o
+ Object unk_02037024.o
+ Object unk_020372D4.o
+ Object unk_020377B0.o
+ Object unk_020377F0.o
+ Object script.o
+ Object unk_02038C78.o
+ Object scrcmd.o
+ Object scrcmd_2.o
+ Object scrcmd_3.o
+ Object scrcmd_4.o
+ Object scrcmd_5.o
+ Object scrcmd_6.o
+ Object scrcmd_7.o
+ Object scrcmd_8.o
+ Object scrcmd_9.o
+ Object scrcmd_10.o
+ Object scrcmd_11.o
+ Object scrcmd_12.o
+ Object scrcmd_13.o
+ Object scrcmd_14.o
+ Object scrcmd_15.o
+ Object scrcmd_16.o
+ Object scrcmd_17.o
+ Object scrcmd_18.o
+ Object scrcmd_19.o
+ Object scrcmd_20.o
+ Object scrcmd_21.o
+ Object scrcmd_22.o
+ Object scrcmd_23.o
+ Object scrcmd_24.o
+ Object scrcmd_25.o
+ Object unk_02046030.o
+ Object unk_02046294.o
+ Object unk_0204639C.o
+ Object unk_0204653C.o
+ Object unk_02047500.o
+ Object unk_020476CC.o
+ Object unk_02048120.o
+ Object unk_020484A8.o
+ Object unk_02048904.o
+ Object unk_0204A01C.o
+ Object unk_0204A368.o
+ Object unk_0204A498.o
+ Object unk_0204AB0C.o
+ Object unk_0204ADE0.o
+ Object unk_0204AEA8.o
+ Object unk_0204AF24.o
+ Object unk_0204B0A0.o
+ Object unk_0204B34C.o
+ Object unk_0204B9EC.o
+ Object unk_0204BE14.o
+ Object unk_0204C1B4.o
+ Object unk_0204CA80.o
+ Object unk_0204CB20.o
+ Object unk_0204FBA8.o
+ Object unk_02050E48.o
+ Object unk_020520AC.o
+ Object unk_02052EE8.o
+ Object unk_0205363C.o
+ Object unk_02053750.o
+ Object unk_02054590.o
+ Object unk_0205478C.o
+ Object unk_02054C14.o
+ Object unk_02055068.o
+ Object unk_020557F4.o
+ Object unk_02057380.o
+ Object unk_02058EE8.o
+ Object unk_02059F04.o
+ Object unk_0205AD98.o
+ Object unk_0205BEF8.o
+ Object unk_0205C334.o
+ Object unk_0205C598.o
+ Object unk_0205CDB4.o
+ Object unk_0205CE48.o
+ Object unk_0205DD18.o
+ Object unk_0205E4EC.o
+ Object unk_0205EB38.o
+ Object unk_0205EC84.o
+ Object unk_0205F314.o
+ Object unk_0205F7A0.o
+ Object unk_0205FA2C.o
+ Object unk_0206015C.o
+ Object unk_02060344.o
+ Object unk_020603B0.o
+ Object unk_020606B0.o
+ Object unk_020607D4.o
+ Object unk_02060CCC.o
+ Object unk_020625EC.o
+ Object unk_0206367C.o
+ Object unk_02063888.o
+ Object unk_02063948.o
+ Object unk_0206439C.o
+ Object unk_020643C0.o
+ Object unk_020647A4.o
+ Object unk_02064CA8.o
+ Object unk_02064E20.o
+ Object unk_02064E4C.o
+ Object unk_02064E90.o
+ Object unk_020653EC.o
+ Object unk_02066840.o
+ Object unk_02066978.o
+ Object unk_0206AB04.o
+ Object unk_0206ABC4.o
+ Object unk_0206B16C.o
+ Object unk_0206B688.o
+ Object unk_0206B8A4.o
+ Object unk_0206BB28.o
+ Object unk_0206BB5C.o
+ Object unk_0206BF90.o
+ Object unk_0206C700.o
+ Object unk_0206DE24.o
+ Object unk_0206E0F0.o
+ Object unk_0206E2F0.o
+ Object unk_0206E5B4.o
+ Object unk_0206EB80.o
+ Object unk_0206F1F0.o
+ Object unk_0206F3FC.o
+ Object unk_02072548.o
+ Object unk_02073710.o
+ Object unk_02073DA8.o
+ Object unk_0207550C.o
+ Object unk_020772F0.o
+ Object unk_020799E8.o
+ Object unk_02079C70.o
+ Object unk_0207C328.o
+ Object unk_0207D5BC.o
+ Object unk_0207EF6C.o
+ Object unk_0207F95C.o
+ Object unk_0207FC5C.o
+ Object unk_0207FD00.o
+ Object unk_02080C38.o
+ Object unk_020828BC.o
+ Object unk_020834D0.o
+ Object unk_02083B84.o
+ Object unk_02083D48.o
+ Object unk_02084098.o
+ Object unk_020842D0.o
+ Object unk_020842DC.o
+ Object unk_020851B8.o
+ Object unk_02085258.o
+ Object unk_02085338.o
+ Object unk_020854E0.o
+ Object unk_020859C0.o
+ Object unk_02086084.o
+ Object unk_02086414.o
+ Object unk_02086FA8.o
+ Object unk_02087A1C.o
+ Object unk_02087A6C.o
+ Object unk_02087D00.o
+ Object unk_02088320.o
+ Object unk_02088814.o
+ Object unk_02088858.o
+ Object unk_0208890C.o
+ Object unk_0208898C.o
+ Object unk_02088AAC.o
+ Object unk_02088D1C.o
+ Object unk_02088DD8.o
+ Object unk_02088F0C.o
+ Object unk_020893E0.o
+ Object unk_02089498.o
+ Object unk_02089960.o
+ Object unk_02089D90.o
+ Object unk_02089F24.o
+ Object unk_0208A258.o
+ Object unk_0208A300.o
+ Object unk_0208A338.o
+ Object unk_0208A998.o
+ ### Third-party libraries ###
+ Object unk_0208AC14.o
+ Object custom_allocator.o
+ Object unk_020910EC.o
+ Object unk_020AF030.o
+ ### Nitro SDK ###
+ Object FX_mtx22.o
+ Object FX_mtx33.o
+ Object FX_mtx43.o
+ Object FX_mtx44.o
+ Object FX_cp.o
+ Object FX_vec.o
+ Object FX_atan.o
+ Object FX.o
+ Object GX.o
+ Object GX_state.o
+ Object GX_vramcnt.o
+ Object GX_bgcnt.o
+ Object GX_g2.o
+ Object GX_g3b.o
+ Object GX_g3imm.o
+ Object GX_g3x.o
+ Object GX_g3_util.o
+ Object GX_load2d.o
+ Object GX_load3d.o
+ Object GX_g3.o
+ Object GX_asm.o
+ Object OS_irqHandler.o
+ Object OS_irqTable.o
+ Object OS_interrupt.o
+ Object OS_spinLock.o
+ Object OS_printf.o
+ Object OS_thread.o
+ Object OS_context.o
+ Object OS_emulator.o
+ Object OS_message.o
+ Object OS_mutex.o
+ Object OS_cache.o
+ Object OS_init.o
+ Object OS_arena.o
+ Object OS_alloc.o
+ Object OS_tcm.o
+ Object OS_protectionUnit.o
+ Object OS_protectionRegion.o
+ Object OS_exception.o
+ Object OS_timer.o
+ Object OS_tick.o
+ Object OS_alarm.o
+ Object OS_valarm.o
+ Object OS_system.o
+ Object OS_reset.o
+ Object OS_ownerInfo.o
+ Object OS_vramExclusive.o
+ Object OS_entropy.o
+ Object OS_terminate_proc.o
+ Object MI_wram.o
+ Object MI_dma.o
+ Object MI_dma_hblank.o
+ Object MI_dma_gxcommand.o
+ Object MI_memory.o
+ Object MI_swap.o
+ Object MI_uncompress.o
+ Object MI_dma_card.o
+ Object MI_init.o
+ Object SND_interface.o
+ Object SND_main.o
+ Object SND_command.o
+ Object SND_alarm.o
+ Object SND_work.o
+ Object SND_util.o
+ Object SND_bank.o
+ Object PXI_init.o
+ Object PXI_fifo.o
+ Object FS_command.o
+ Object FS_command_default.o
+ Object FS_archive.o
+ Object FS_file.o
+ Object FS_rom.o
+ Object FS_overlay.o
+ Object DGT_hash1.o
+ Object DGT_hash2.o
+ Object DGT_sha1s_arm4cw.o
+ Object CP_context.o
+ Object SPI_tp.o
+ Object SPI_mic.o
+ Object SPI_pm.o
+ Object RTC_external.o
+ Object RTC_internal.o
+ Object RTC_convert.o
+ Object CARD_common.o
+ Object CARD_spi.o
+ Object CARD_backup.o
+ Object CARD_rom.o
+ Object CARD_request.o
+ Object CARD_pullOut.o
+ Object WM_system.o
+ Object WM_sync.o
+ Object WM_standard.o
+ Object WM_mp.o
+ Object WM_dcf.o
+ Object WM_ds.o
+ Object WM_ks.o
+ Object WM_etc.o
+ Object CTRDG.o
+ Object CTRDG_proc.o
+ Object CTRDG_backup.o
+ Object CTRDG_flash_common.o
+ Object CTRDG_flash_AT29LV512.o
+ Object CTRDG_flash_LE39FW512.o
+ Object CTRDG_flash_MX29L010.o
+ Object CTRDG_flash_MX29L512.o
+ Object CTRDG_task.o
+ Object MATH.o
+ Object MATH_dgt.o
+ Object MATH_crc.o
+ Object STD_string.o
+ ### C standard library ###
+ Object libc.o
+ ### MWCC library ###
+ Object libmwcc.o
}
Autoload ITCM
@@ -130,7 +450,6 @@ Autoload EXT
Overlay MODULE_00
{
Address 0x021D74E0
- Object module_00_dummy.o
}
Overlay MODULE_01
{
@@ -140,12 +459,10 @@ Overlay MODULE_01
Overlay MODULE_02
{
Address 0x021D7520
- Object module_02_dummy.o
}
Overlay MODULE_03
{
Address 0x01FF8700
- Object module_03_dummy.o
}
Overlay MODULE_04
{
@@ -181,7 +498,6 @@ Overlay MODULE_09
Overlay MODULE_10
{
Address 0x021D74E0
- Object module_10_dummy.o
}
Overlay MODULE_11
{
diff --git a/arm9/asm/unk_020910EC.s b/arm9/asm/unk_020910EC.s
index 04a34013..e04a7294 100644
--- a/arm9/asm/unk_020910EC.s
+++ b/arm9/asm/unk_020910EC.s
@@ -1836,7 +1836,7 @@ FUN_02092788: ; 0x02092788
ldmeqia sp!, {r4,lr}
bxeq lr
mov r0, r4
- bl FUN_0209105C
+ bl CallCustomDestructor
ldmia sp!, {r4,lr}
bx lr
@@ -1869,7 +1869,7 @@ FUN_020927E4: ; 0x020927E4
ldmeqia sp!, {r4,lr}
bxeq lr
mov r0, r4
- bl FUN_0209105C
+ bl CallCustomDestructor
ldmia sp!, {r4,lr}
bx lr
@@ -1896,7 +1896,7 @@ _02092850: ; 0x02092850
FUN_02092860: ; 0x02092860
stmdb sp!, {r4,lr}
mov r0, #0x50
- bl FUN_020910A4
+ bl CallCustomAllocator
movs r4, r0
moveq r0, #0x0
ldmeqia sp!, {r4,lr}
@@ -4645,7 +4645,7 @@ FUN_02094EBC:
bxne lr
add r0, r4, #0x1
mov r0, r0, lsl #0x2
- bl FUN_020910A4
+ bl CallCustomAllocator
movs r6, r0
moveq r0, #0x0
ldmeqia sp!, {r4-r6,lr}
@@ -4659,7 +4659,7 @@ FUN_02094EBC:
bl MI_CpuCopy8
_02094F20: ; 0x02094F20
ldr r0, [r5, #0x0]
- bl FUN_0209105C
+ bl CallCustomDestructor
_02094F28:
str r6, [r5, #0x0]
str r4, [r5, #0x8]
@@ -4686,7 +4686,7 @@ _02094F4C:
ldmeqia sp!, {r4-r6,lr}
bxeq lr
mov r0, r6
- bl FUN_0209105C
+ bl CallCustomDestructor
ldmia sp!, {r4-r6,lr}
bx lr
@@ -4708,7 +4708,7 @@ _02094F98: ; 0x02094F98
FUN_02094FAC: ; 0x02094FAC
stmdb sp!, {r4,lr}
mov r0, #0x110
- bl FUN_020910A4
+ bl CallCustomAllocator
movs r4, r0
moveq r0, #0x0
ldmeqia sp!, {r4,lr}
@@ -4725,7 +4725,7 @@ FUN_02094FE0: ; 0x02094FE0
stmdb sp!, {lr}
sub sp, sp, #0x4
mov r0, #0x14
- bl FUN_020910A4
+ bl CallCustomAllocator
_02094FF0: ; 0x02094FF0
cmp r0, #0x0
addeq sp, sp, #0x4
@@ -4824,7 +4824,7 @@ FUN_0209510C:
ldr r1, [r4, #0x10]
ands r1, r1, #0x2
bne _02095138
- bl FUN_0209105C
+ bl CallCustomDestructor
_02095138:
ldr r0, [r4, #0x10]
orr r0, r0, #0x8000
@@ -4834,7 +4834,7 @@ _02095138:
ldmeqia sp!, {r4,lr}
bxeq lr
mov r0, r4
- bl FUN_0209105C
+ bl CallCustomDestructor
ldmia sp!, {r4,lr}
bx lr
diff --git a/arm9/global.inc b/arm9/global.inc
index 3185d0e4..cbe300c3 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -4799,8 +4799,8 @@
.extern FUN_0208B4A0
.extern FUN_02090CC8
.extern FUN_02090DB8
-.extern FUN_0209105C
-.extern FUN_020910A4
+.extern CallCustomDestructor
+.extern CallCustomAllocator
.extern FUN_020910EC
.extern FUN_0209521C
.extern FUN_020952AC
@@ -6704,7 +6704,7 @@
.extern ScriptReadHalfword
.extern ScriptReadWord
.extern ScriptReturn
-.extern SetCustomAllocator
+.extern SetCustomAllocatorAndDestructor
.extern SetupBytecodeScript
.extern SetupNativeScript
.extern StopScript
diff --git a/arm9/lib/src/custom_allocator.c b/arm9/lib/src/custom_allocator.c
new file mode 100644
index 00000000..869901ce
--- /dev/null
+++ b/arm9/lib/src/custom_allocator.c
@@ -0,0 +1,32 @@
+#include "global.h"
+
+typedef void * (* AllocFunc)(u32 size);
+typedef void (* FreeFunc)(void * ptr);
+
+static FreeFunc sDestructor;
+static AllocFunc sAllocator;
+
+// Custom allocator
+ARM_FUNC void* CallCustomAllocator(u32 size)
+{
+ if (sAllocator != NULL)
+ return sAllocator(size);
+ else
+ return OS_AllocFromHeap(OS_ARENA_MAIN, -1, size);
+}
+
+// Custom destructor
+ARM_FUNC void CallCustomDestructor(void * ptr)
+{
+ if (sDestructor != NULL)
+ sDestructor(ptr);
+ else
+ OS_FreeToHeap(OS_ARENA_MAIN, -1, ptr);
+}
+
+// Custom alloc/free setter
+ARM_FUNC void SetCustomAllocatorAndDestructor(AllocFunc allocator, FreeFunc destructor)
+{
+ sAllocator = allocator;
+ sDestructor = destructor;
+}
diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s
index 4bd1653b..669b1fa3 100644
--- a/arm9/modules/83/asm/module_83.s
+++ b/arm9/modules/83/asm/module_83.s
@@ -22657,7 +22657,7 @@ _02238652:
bl CTRDG_Enable
ldr r0, _022386C0 ; =MOD83_02238608
ldr r1, _022386C4 ; =FUN_02016A18
- bl SetCustomAllocator
+ bl SetCustomAllocatorAndDestructor
ldr r1, _022386B8 ; =0x000004A8
ldr r3, _022386C8 ; =0x0223A6B4
add r0, r7, #0
diff --git a/arm9/src/FUN_020910A4.c b/arm9/src/FUN_020910A4.c
deleted file mode 100644
index c5b7c916..00000000
--- a/arm9/src/FUN_020910A4.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "global.h"
-
-typedef void * (* AllocFunc)(u32 size);
-typedef void (* FreeFunc)(void * ptr);
-
-static FreeFunc gUnk021C8C74;
-static AllocFunc gUnk021C8C70;
-
-// Custom allocator
-ARM_FUNC void* FUN_020910A4(u32 size)
-{
- if (gUnk021C8C70 != NULL)
- return gUnk021C8C70(size);
- else
- return OS_AllocFromHeap(OS_ARENA_MAIN, -1, size);
-}
-
-// Custom destructor
-ARM_FUNC void FUN_0209105C(void * ptr)
-{
- if (gUnk021C8C74 != NULL)
- gUnk021C8C74(ptr);
- else
- OS_FreeToHeap(OS_ARENA_MAIN, -1, ptr);
-}
-
-// Custom alloc/free setter
-ARM_FUNC void SetCustomAllocator(AllocFunc allocator, FreeFunc destructor)
-{
- gUnk021C8C70 = allocator;
- gUnk021C8C74 = destructor;
-}
diff --git a/arm9/src/FUN_02000DE4.c b/arm9/src/GFLIB_sysctl.c
index 9a7d8566..9a7d8566 100644
--- a/arm9/src/FUN_02000DE4.c
+++ b/arm9/src/GFLIB_sysctl.c