diff options
-rw-r--r-- | arm9/Makefile | 5 | ||||
-rw-r--r-- | arm9/arm9.lcf | 50 | ||||
-rw-r--r-- | arm9/arm9.lsf | 534 | ||||
-rw-r--r-- | arm9/asm/unk_020910EC.s | 20 | ||||
-rw-r--r-- | arm9/global.inc | 6 | ||||
-rw-r--r-- | arm9/lib/src/custom_allocator.c | 32 | ||||
-rw-r--r-- | arm9/modules/83/asm/module_83.s | 2 | ||||
-rw-r--r-- | arm9/src/FUN_020910A4.c | 32 | ||||
-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 |