diff options
Diffstat (limited to 'arm9')
-rw-r--r-- | arm9/arm9.lsf | 1 | ||||
-rw-r--r-- | arm9/asm/unk_0200E1D0_s.s (renamed from arm9/asm/unk_0200E1D0.s) | 126 | ||||
-rw-r--r-- | arm9/lib/NitroSDK/include/PXI_fifo.h | 23 | ||||
-rw-r--r-- | arm9/lib/NitroSDK/include/SND_bank.h | 79 | ||||
-rw-r--r-- | arm9/lib/NitroSDK/include/SND_command.h | 50 | ||||
-rw-r--r-- | arm9/lib/NitroSDK/include/SND_main.h | 14 | ||||
-rw-r--r-- | arm9/lib/NitroSDK/include/SND_work.h | 45 | ||||
-rw-r--r-- | arm9/lib/libnns/src/NNS_FND_allocator.c | 10 | ||||
-rw-r--r-- | arm9/lib/libnns/src/NNS_FND_expheap.c | 26 | ||||
-rw-r--r-- | arm9/lib/libnns/src/NNS_FND_heapcommon.c | 10 | ||||
-rw-r--r-- | arm9/lib/libnns/src/NNS_FND_list.c | 16 | ||||
-rw-r--r-- | arm9/modules/59/asm/mod59_021D74E0_asm.s | 86 | ||||
-rw-r--r-- | arm9/modules/59/include/mod59_021D74E0.h | 37 | ||||
-rw-r--r-- | arm9/modules/59/src/mod59_021D74E0_src.c | 79 | ||||
-rw-r--r-- | arm9/src/unk_0200E1D0.c | 16 |
15 files changed, 184 insertions, 434 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 78e3e725..002ad8c9 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -32,6 +32,7 @@ Static arm9 Object unk_0200BB14.o Object unk_0200CA44.o Object render_window.o + Object unk_0200E1D0_s.o Object unk_0200E1D0.o Object unk_0200E850.o Object unk_0201137C.o diff --git a/arm9/asm/unk_0200E1D0.s b/arm9/asm/unk_0200E1D0_s.s index b93e5e74..a84df611 100644 --- a/arm9/asm/unk_0200E1D0.s +++ b/arm9/asm/unk_0200E1D0_s.s @@ -1,6 +1,8 @@ .include "asm/macros.inc" .include "global.inc" + .public UNK_021C46B4 + .section .rodata .global UNK_020ECEF4 @@ -48,40 +50,6 @@ UNK_020ECEF4: ; 0x020ECEF4 .word FUN_0200F040 .word FUN_0200F07C - .section .bss - - .global UNK_021C46B4 -UNK_021C46B4: ; 0x021C46B4 - .space 0x4 - - .global UNK_021C46B8 -UNK_021C46B8: ; 0x021C46B8 - .space 0x4 - - .global UNK_021C46BC -UNK_021C46BC: ; 0x021C46BC - .space 0xc - - .global UNK_021C46C8 -UNK_021C46C8: ; 0x021C46C8 - .space 0x30 - - .global UNK_021C46F8 -UNK_021C46F8: ; 0x021C46F8 - .space 0x30 - - .global UNK_021C4728 -UNK_021C4728: ; 0x021C4728 - .space 0x18 - - .global UNK_021C4740 -UNK_021C4740: ; 0x021C4740 - .space 0xb4 - - .global UNK_021C47F4 -UNK_021C47F4: ; 0x021C47F4 - .space 0x14 - .text thumb_func_start FUN_0200E1D0 @@ -102,7 +70,7 @@ _0200E1E6: bne _0200E1F0 bl GF_AssertFail _0200E1F0: - ldr r0, _0200E2AC ; =UNK_021C47F4 + ldr r0, _0200E2AC ; =UNK_021C46B4 + 0x140 ldrh r0, [r0, #0xc] cmp r0, #0x0 beq _0200E1FC @@ -113,7 +81,7 @@ _0200E1FC: ldr r1, _0200E2B0 ; =UNK_021C46B4 add r0, r5, #0x0 bl FUN_0200E558 - ldr r0, _0200E2B4 ; =UNK_021C4728 + ldr r0, _0200E2B4 ; =UNK_021C46B4 + 0x74 bl FUN_0200E5F4 ldr r0, _0200E2B0 ; =UNK_021C46B4 add r1, r6, #0x0 @@ -123,16 +91,16 @@ _0200E1FC: str r0, [sp, #0x0] str r0, [sp, #0x4] str r0, [sp, #0x8] - ldr r0, _0200E2B8 ; =UNK_021C4740 + ldr r0, _0200E2B8 ; =UNK_021C46B4 + 0x8C ldr r2, [sp, #0x30] str r0, [sp, #0xc] - ldr r0, _0200E2B4 ; =UNK_021C4728 + ldr r0, _0200E2B4 ; =UNK_021C46B4 + 0x74 ldr r3, [sp, #0x34] str r0, [sp, #0x10] ldr r0, [sp, #0x38] add r1, r4, #0x0 str r0, [sp, #0x14] - ldr r0, _0200E2BC ; =UNK_021C46C8 + ldr r0, _0200E2BC ; =UNK_021C46B4 + 0x14 str r5, [sp, #0x18] bl FUN_0200E5C8 mov r0, #0x0 @@ -140,26 +108,26 @@ _0200E1FC: str r0, [sp, #0x4] mov r0, #0x1 str r0, [sp, #0x8] - ldr r0, _0200E2B8 ; =UNK_021C4740 + ldr r0, _0200E2B8 ; =UNK_021C46B4 + 0x8C ldr r2, [sp, #0x30] str r0, [sp, #0xc] - ldr r0, _0200E2B4 ; =UNK_021C4728 + ldr r0, _0200E2B4 ; =UNK_021C46B4 + 0x74 ldr r3, [sp, #0x34] str r0, [sp, #0x10] ldr r0, [sp, #0x38] add r1, r7, #0x0 str r0, [sp, #0x14] - ldr r0, _0200E2C0 ; =UNK_021C46F8 + ldr r0, _0200E2C0 ; =UNK_021C46B4 + 0x44 str r5, [sp, #0x18] bl FUN_0200E5C8 - ldr r0, _0200E2AC ; =UNK_021C47F4 + ldr r0, _0200E2AC ; =UNK_021C46B4 + 0x140 mov r1, #0x1 strh r1, [r0, #0xc] - ldr r0, _0200E2C4 ; =UNK_021C46B8 - ldr r1, _0200E2BC ; =UNK_021C46C8 + ldr r0, _0200E2C4 ; =UNK_021C46B4 + 0x4 + ldr r1, _0200E2BC ; =UNK_021C46B4 + 0x14 bl FUN_0200E528 - ldr r0, _0200E2C8 ; =UNK_021C46BC - ldr r1, _0200E2C0 ; =UNK_021C46F8 + ldr r0, _0200E2C8 ; =UNK_021C46B4 + 0x8 + ldr r1, _0200E2C0 ; =UNK_021C46B4 + 0x44 bl FUN_0200E528 ldr r0, _0200E2CC ; =UNK_021C46B4 ldr r0, [r0, #0xc] @@ -188,14 +156,14 @@ _0200E2A6: add sp, #0x1c pop {r4-r7, pc} nop -_0200E2AC: .word UNK_021C47F4 +_0200E2AC: .word UNK_021C46B4 + 0x140 _0200E2B0: .word UNK_021C46B4 -_0200E2B4: .word UNK_021C4728 -_0200E2B8: .word UNK_021C4740 -_0200E2BC: .word UNK_021C46C8 -_0200E2C0: .word UNK_021C46F8 -_0200E2C4: .word UNK_021C46B8 -_0200E2C8: .word UNK_021C46BC +_0200E2B4: .word UNK_021C46B4 + 0x74 +_0200E2B8: .word UNK_021C46B4 + 0x8C +_0200E2BC: .word UNK_021C46B4 + 0x14 +_0200E2C0: .word UNK_021C46B4 + 0x44 +_0200E2C4: .word UNK_021C46B4 + 0x4 +_0200E2C8: .word UNK_021C46B4 + 0x8 _0200E2CC: .word UNK_021C46B4 _0200E2D0: .word 0x0000014E _0200E2D4: .word 0x0000014F @@ -203,7 +171,7 @@ _0200E2D4: .word 0x0000014F thumb_func_start FUN_0200E2D8 FUN_0200E2D8: ; 0x0200E2D8 push {r4, lr} - ldr r0, _0200E300 ; =UNK_021C47F4 + ldr r0, _0200E300 ; =UNK_021C46B4 + 0x140 ldr r4, _0200E304 ; =UNK_021C46B4 ldrh r0, [r0, #0xc] cmp r0, #0x0 @@ -221,12 +189,12 @@ FUN_0200E2D8: ; 0x0200E2D8 _0200E2FC: pop {r4, pc} nop -_0200E300: .word UNK_021C47F4 +_0200E300: .word UNK_021C46B4 + 0x140 _0200E304: .word UNK_021C46B4 thumb_func_start FUN_0200E308 FUN_0200E308: ; 0x0200E308 - ldr r0, _0200E318 ; =UNK_021C47F4 + ldr r0, _0200E318 ; =UNK_021C46B4 + 0x140 ldrh r0, [r0, #0xc] cmp r0, #0x0 bne _0200E314 @@ -236,15 +204,15 @@ _0200E314: mov r0, #0x0 bx lr .balign 4 -_0200E318: .word UNK_021C47F4 +_0200E318: .word UNK_021C46B4 + 0x140 thumb_func_start FUN_0200E31C FUN_0200E31C: ; 0x0200E31C push {r3, lr} - ldr r0, _0200E368 ; =UNK_021C4728 + ldr r0, _0200E368 ; =UNK_021C46B4 + 0x74 mov r1, #0x0 bl FUN_0200E6A0 - ldr r0, _0200E368 ; =UNK_021C4728 + ldr r0, _0200E368 ; =UNK_021C46B4 + 0x74 mov r1, #0x1 bl FUN_0200E6A0 ldr r0, _0200E36C ; =UNK_021C46B4 @@ -261,13 +229,13 @@ _0200E33A: mov r1, #0x2 str r1, [r0, #0x50] _0200E346: - ldr r0, _0200E370 ; =UNK_021C46B8 - ldr r1, _0200E374 ; =UNK_021C46C8 + ldr r0, _0200E370 ; =UNK_021C46B4 + 0x4 + ldr r1, _0200E374 ; =UNK_021C46B4 + 0x14 bl FUN_0200E528 - ldr r0, _0200E378 ; =UNK_021C46BC - ldr r1, _0200E37C ; =UNK_021C46F8 + ldr r0, _0200E378 ; =UNK_021C46B4 + 0x8 + ldr r1, _0200E37C ; =UNK_021C46B4 + 0x44 bl FUN_0200E528 - ldr r0, _0200E380 ; =UNK_021C47F4 + ldr r0, _0200E380 ; =UNK_021C46B4 + 0x140 mov r1, #0x0 strh r1, [r0, #0xc] strb r1, [r0, #0xe] @@ -276,13 +244,13 @@ _0200E346: bl FUN_0200E808 pop {r3, pc} .balign 4 -_0200E368: .word UNK_021C4728 +_0200E368: .word UNK_021C46B4 + 0x74 _0200E36C: .word UNK_021C46B4 -_0200E370: .word UNK_021C46B8 -_0200E374: .word UNK_021C46C8 -_0200E378: .word UNK_021C46BC -_0200E37C: .word UNK_021C46F8 -_0200E380: .word UNK_021C47F4 +_0200E370: .word UNK_021C46B4 + 0x4 +_0200E374: .word UNK_021C46B4 + 0x14 +_0200E378: .word UNK_021C46B4 + 0x8 +_0200E37C: .word UNK_021C46B4 + 0x44 +_0200E380: .word UNK_021C46B4 + 0x140 _0200E384: .word UNK_021C46B4 thumb_func_start FUN_0200E388 @@ -336,12 +304,12 @@ _0200E3D2: mov r2, #0x2 bl GXS_LoadBGPltt _0200E3DA: - ldr r0, _0200E41C ; =UNK_021C4740 + ldr r0, _0200E41C ; =UNK_021C46B4 + 0x8C mov r1, #0x1 add r2, r4, #0x0 bl FUN_02011634 mov r2, #0x0 - ldr r0, _0200E41C ; =UNK_021C4740 + ldr r0, _0200E41C ; =UNK_021C46B4 + 0x8C mov r1, #0x3f add r3, r2, #0x0 str r4, [sp, #0x0] @@ -349,12 +317,12 @@ _0200E3DA: mov r1, #0x0 str r1, [sp, #0x0] str r1, [sp, #0x4] - ldr r0, _0200E41C ; =UNK_021C4740 + ldr r0, _0200E41C ; =UNK_021C46B4 + 0x8C add r2, r1, #0x0 add r3, r1, #0x0 str r4, [sp, #0x8] bl FUN_02011698 - ldr r0, _0200E41C ; =UNK_021C4740 + ldr r0, _0200E41C ; =UNK_021C46B4 + 0x8C mov r1, #0x20 mov r2, #0x0 add r3, r4, #0x0 @@ -365,7 +333,7 @@ _0200E3DA: add sp, #0x10 bx r3 nop -_0200E41C: .word UNK_021C4740 +_0200E41C: .word UNK_021C46B4 + 0x8C thumb_func_start FUN_0200E420 FUN_0200E420: ; 0x0200E420 @@ -421,7 +389,7 @@ FUN_0200E460: ; 0x0200E460 ldr r0, [r4, #0x3c] cmp r0, #0x0 bne _0200E490 - ldr r0, _0200E4B4 ; =UNK_021C47F4 + ldr r0, _0200E4B4 ; =UNK_021C46B4 + 0x140 mov r1, #0x0 strb r1, [r0, #0xe] _0200E490: @@ -434,7 +402,7 @@ _0200E490: ldr r0, [r4, #0x3c] cmp r0, #0x0 bne _0200E4AA - ldr r0, _0200E4B4 ; =UNK_021C47F4 + ldr r0, _0200E4B4 ; =UNK_021C46B4 + 0x140 mov r1, #0x0 strb r1, [r0, #0xf] _0200E4AA: @@ -442,7 +410,7 @@ _0200E4AA: bl FUN_0200E808 pop {r4, pc} nop -_0200E4B4: .word UNK_021C47F4 +_0200E4B4: .word UNK_021C46B4 + 0x140 thumb_func_start FUN_0200E4B8 FUN_0200E4B8: ; 0x0200E4B8 diff --git a/arm9/lib/NitroSDK/include/PXI_fifo.h b/arm9/lib/NitroSDK/include/PXI_fifo.h index b1ca33f3..815da961 100644 --- a/arm9/lib/NitroSDK/include/PXI_fifo.h +++ b/arm9/lib/NitroSDK/include/PXI_fifo.h @@ -4,29 +4,6 @@ #include "nitro/PXI_fifo_shared.h" #include "nitro/types.h" -typedef enum -{ - PXI_FIFO_SUCCESS = 0, - PXI_FIFO_FAIL_SEND_ERR = -1, - PXI_FIFO_FAIL_SEND_FULL = -2, - PXI_FIFO_FAIL_RECV_ERR = -3, - PXI_FIFO_FAIL_RECV_EMPTY = -4, - PXI_FIFO_NO_CALLBACK_ENTRY = -5 -} PXIFifoStatus; - -typedef void (*PXIFifoCallback) (PXIFifoTag tag, u32 data, BOOL err); - -typedef union -{ - struct - { - u32 tag:5; - u32 err:1; - u32 data:26; - } e; - u32 raw; -} PXIFifoMessage; - void PXI_InitFifo(void); void PXI_SetFifoRecvCallback(s32 fifotag, PXIFifoCallback callback); BOOL PXI_IsCallbackReady(s32 fifotag, PXIProc proc); diff --git a/arm9/lib/NitroSDK/include/SND_bank.h b/arm9/lib/NitroSDK/include/SND_bank.h index b9000d57..58fd8307 100644 --- a/arm9/lib/NitroSDK/include/SND_bank.h +++ b/arm9/lib/NitroSDK/include/SND_bank.h @@ -4,84 +4,7 @@ #include "global.h" #include "SND_main.h" - -#define SND_INST_ILLEGAL 0 -#define SND_INST_PCM 1 -#define SND_INST_PSG 2 -#define SND_INST_NOISE 3 -#define SND_INST_DIRECTPCM 4 -#define SND_INST_DUMMY 5 -#define SND_INST_DRUM_TABLE 16 -#define SND_INST_KEY_SPLIT 17 - -#define SND_BANK_MAX_WAVEARC 4 -#define SND_INST_MAX_KEYSPLIT 8 - -#define SND_INST_OFFSET_TYPE(off) ((u8)off) -#define SND_INST_OFFSET_NORMAL(bank, off) ((struct SNDInstParam *)((u8 *)bank + (u32)(off >> 8))) -#define SND_INST_OFFSET_DRUMS(bank, off) ((struct SNDDrumSet *)((u8 *)bank + (u32)(off >> 8))) -#define SND_INST_OFFSET_KEYSPL(bank, off) ((struct SNDKeySplit *)((u8 *)bank + (u32)(off >> 8))) - -struct SNDWaveArc; - -struct SNDWaveArcLink { - struct SNDWaveArc *waveArc; // 0x0 - struct SNDWaveArcLink *waveArcLLnext; // 0x4 -}; // size = 0x8 - -struct SNDBankData { - struct SNDBinaryFileHeader fileHeader; // 0x00 - struct SNDBinaryBlockHeader blockHeader; // 0x10 - struct SNDWaveArcLink waveArcLinks[SND_BANK_MAX_WAVEARC]; // 0x18 - u32 instCount; // 0x38 - u32 instOffsets[]; // 0x3C -}; // size = 0x40 - -struct SNDWaveArc { - struct SNDBinaryFileHeader fileHeader; // 0x00 - struct SNDBinaryBlockHeader blockHeader; // 0x10 - struct SNDWaveArcLink *waveArcLLHead; // 0x18 - u8 unk_1C[28]; // 0x1C - u32 waveCount; // 0x38 - u32 waveOffsets[]; // 0x3C -}; // size = 0x3C - -struct SNDInstParam { - u16 wave[2]; // 0x0 - u8 rootKey; // 0x4 - u8 envAttack; // 0x5 - u8 envDecay; // 0x6 - u8 envSustain; // 0x7 - u8 envRelease; // 0x8 - u8 pan; // 0x9 -}; // size = 0xA - -struct SNDInstData { - u8 type; // 0x0 - u8 unk_1; // 0x1 - struct SNDInstParam param; // 0x2 -}; // size = 0xC - -struct SNDKeySplit { - u8 key[SND_INST_MAX_KEYSPLIT]; // 0x0 - struct SNDInstData instruments[]; // 0x8 -}; // size = 0x8 - -struct SNDDrumSet { - u8 minKey; - u8 maxKey; - struct SNDInstData instruments[]; -}; // size = 0x2 - -struct SNDInstPos { - u32 program; // 0x0 - u32 index; // 0x4 -}; // size = 0x8 - -struct SNDWaveData { - struct SNDWaveParam param; // 0x0 - u8 sampleData[]; // 0xC -}; // size = 0xC +#include "nitro/SND_bank_shared.h" void SND_AssignWaveArc(struct SNDBankData *bankData, s32 index, struct SNDWaveArc *waveArc); void SND_DestroyBank(struct SNDBankData *bankData); diff --git a/arm9/lib/NitroSDK/include/SND_command.h b/arm9/lib/NitroSDK/include/SND_command.h index ff392833..4d44c583 100644 --- a/arm9/lib/NitroSDK/include/SND_command.h +++ b/arm9/lib/NitroSDK/include/SND_command.h @@ -1,55 +1,9 @@ #ifndef GUARD_SND_COMMAND_H #define GUARD_SND_COMMAND_H -#include "global.h" +#include "nitro/SND_command_shared.h" -#define SND_CMD_COUNT 256 -#define SND_CMD_ARG_MAX 4 - -#define SND_CMD_FLAG_NOBLOCK 0x0 -#define SND_CMD_FLAG_BLOCK 0x1 -#define SND_CMD_FLAG_IMMEDIATE 0x2 - -#define SND_CMD_START_SEQ 0x00 -#define SND_CMD_STOP_SEQ 0x01 -#define SND_CMD_PREPARE_SEQ 0x02 -#define SND_CMD_START_PREPARED_SEQ 0x03 -#define SND_CMD_PAUSE_SEQ 0x04 -#define SND_CMD_SKIP_SEQ 0x05 -#define SND_CMD_PLAYER_PARAM 0x06 -#define SND_CMD_TRACK_PARAM 0x07 -#define SND_CMD_MUTE_TRACK 0x08 -#define SND_CMD_ALLOCATABLE_CHANNEL 0x09 -#define SND_CMD_PLAYER_LOCAL_VAR 0x0A -#define SND_CMD_PLAYER_GLOBAL_VAR 0x0B -#define SND_CMD_START_TIMER 0x0C -#define SND_CMD_STOP_TIMER 0x0D -#define SND_CMD_SETUP_CHANNEL_PCM 0x0E -#define SND_CMD_SETUP_CHANNEL_PSG 0x0F -#define SND_CMD_SETUP_CHANNEL_NOISE 0x10 -#define SND_CMD_SETUP_CAPTURE 0x11 -#define SND_CMD_SETUP_ALARM 0x12 -#define SND_CMD_CHANNEL_TIMER 0x13 -#define SND_CMD_CHANNEL_VOLUME 0x14 -#define SND_CMD_CHANNEL_PAN 0x15 -#define SND_CMD_SURROUND_DECAY 0x16 -#define SND_CMD_MASTER_VOLUME 0x17 -#define SND_CMD_MASTER_PAN 0x18 -#define SND_CMD_OUTPUT_SELECTOR 0x19 -#define SND_CMD_LOCK_CHANNEL 0x1A -#define SND_CMD_UNLOCK_CHANNEL 0x1B -#define SND_CMD_STOP_UNLOCKED_CHANNEL 0x1C -#define SND_CMD_SET_SHARED_WORK 0x1D -#define SND_CMD_INVALIDATE_SEQ 0x1E -#define SND_CMD_INVALIDATE_BANK 0x1F -#define SND_CMD_INVALIDATE_WAVE 0x20 -#define SND_CMD_READ_DRIVER_INFO 0x21 - -struct SNDCommand { - struct SNDCommand *llNext; // 0x0 - s32 id; // 0x4 - u32 arg[SND_CMD_ARG_MAX]; // 0x8 -}; // size = 0x18 +#include "nitro/types.h" void SND_CommandInit(void); const struct SNDCommand *SND_RecvCommandReply(u32 flags); diff --git a/arm9/lib/NitroSDK/include/SND_main.h b/arm9/lib/NitroSDK/include/SND_main.h index 8fa9364e..aa476bae 100644 --- a/arm9/lib/NitroSDK/include/SND_main.h +++ b/arm9/lib/NitroSDK/include/SND_main.h @@ -9,18 +9,4 @@ void SNDi_UnlockMutex(void); void SNDi_LockMutex(void); void SND_Init(void); -struct SNDBinaryFileHeader { - s8 signature[4]; // 0x0 - u16 byteOrder; // 0x4 - u16 version; // 0x6 - u32 fileSize; // 0x8 - u16 headerSize; // 0xC - u16 dataBlocks; // 0xE -}; // size = 0x10 - -typedef struct SNDBinaryBlockHeader { - u32 type; // 0x0 - u32 size; // 0x4 -} SNDBinaryBlockHeader; // size = 0x8 - #endif // GUARD_SND_MAIN_H diff --git a/arm9/lib/NitroSDK/include/SND_work.h b/arm9/lib/NitroSDK/include/SND_work.h index a8a3d62b..f3ed08c8 100644 --- a/arm9/lib/NitroSDK/include/SND_work.h +++ b/arm9/lib/NitroSDK/include/SND_work.h @@ -6,51 +6,6 @@ #include "SND_main.h" #include "nitro/SND_work_shared.h" -struct SNDDriverInfo { - struct SNDWork work; // 0x0000 - u32 channelControls[SND_CHANNEL_COUNT]; // 0x1180 - struct SNDWork *workPtr; // 0x11C0 - u32 lockedChannels; // 0x11C4 - u8 unk_XXX[24]; // 0x11C8 -}; // size = 0x11E0 - -struct SNDChannelInfo { - struct { - BOOL active : 1; - BOOL locked: 1; - } flags; // 0x0 - u16 volume; // 0x4 - u8 pan; // 0x6 - u8 unk_7; // 0x7 - s32 envStatus; // 0x8 -}; // size = 0xC - -struct SNDPlayerInfo { - struct { - BOOL active : 1; - BOOL paused : 1; - } flags; // 0x0 - u16 trackBitMask; // 0x4 - u16 tempo; // 0x6 - u8 volume; // 0x8 - u8 unk_9[3]; // 0x9 -}; // size = 0xC - -struct SNDTrackInfo { - u16 program; // 0x0 - u8 volume; // 0x2 - u8 expression; // 0x3 - - s8 pitchBend; // 0x4 - u8 bendRange; // 0x5 - u8 pan; // 0x6 - s8 transpose; // 0x7 - - u8 unk_8; // 0x8 - u8 chnCount; // 0x9 - u8 channel[SND_CHANNEL_COUNT]; // 0xA -}; // size = 0x1A - u32 SND_GetPlayerStatus(void); u16 SND_GetChannelStatus(void); //u16 SND_GetCaptureStatus(void); diff --git a/arm9/lib/libnns/src/NNS_FND_allocator.c b/arm9/lib/libnns/src/NNS_FND_allocator.c index 31d0eb70..c459c3d0 100644 --- a/arm9/lib/libnns/src/NNS_FND_allocator.c +++ b/arm9/lib/libnns/src/NNS_FND_allocator.c @@ -2,27 +2,27 @@ #include "NNS_FND_allocator.h"
#include "NNS_FND_expheap.h"
-void *AllocatorAllocForExpHeap(NNSFndAllocator * pAllocator, u32 size)
+ARM_FUNC void *AllocatorAllocForExpHeap(NNSFndAllocator * pAllocator, u32 size)
{
return NNS_FndAllocFromExpHeapEx(pAllocator->pHeap, size, pAllocator->heapParam1);
}
-void AllocatorFreeForExpHeap(NNSFndAllocator * pAllocator, void *memBlock)
+ARM_FUNC void AllocatorFreeForExpHeap(NNSFndAllocator * pAllocator, void *memBlock)
{
NNS_FndFreeToExpHeap(pAllocator->pHeap, memBlock);
}
-void *NNS_FndAllocFromAllocator(NNSFndAllocator * pAllocator, u32 size)
+ARM_FUNC void *NNS_FndAllocFromAllocator(NNSFndAllocator * pAllocator, u32 size)
{
return pAllocator->pFunc->pfAlloc(pAllocator, size);
}
-void NNS_FndFreeToAllocator(NNSFndAllocator * pAllocator, void *memBlock)
+ARM_FUNC void NNS_FndFreeToAllocator(NNSFndAllocator * pAllocator, void *memBlock)
{
pAllocator->pFunc->pfFree(pAllocator, memBlock);
}
-void NNS_FndInitAllocatorForExpHeap(NNSFndAllocator * pAllocator, NNSFndHeapHandle pHeap, int alignment)
+ARM_FUNC void NNS_FndInitAllocatorForExpHeap(NNSFndAllocator * pAllocator, NNSFndHeapHandle pHeap, int alignment)
{
static const NNSFndAllocatorFunc pFunc = {AllocatorAllocForExpHeap, AllocatorFreeForExpHeap};
pAllocator->pFunc = &pFunc;
diff --git a/arm9/lib/libnns/src/NNS_FND_expheap.c b/arm9/lib/libnns/src/NNS_FND_expheap.c index 15657c43..62a4deb4 100644 --- a/arm9/lib/libnns/src/NNS_FND_expheap.c +++ b/arm9/lib/libnns/src/NNS_FND_expheap.c @@ -66,13 +66,13 @@ static inline NNSiFndHeapHead* GetHeapHeadPtrFromExpHeapHead(NNSiFndExpHeapHead* return SubU32ToPtr(pEHHead, sizeof(NNSiFndHeapHead));
}
-void GetRegionOfMBlock(NNSiMemRegion* region, NNSiFndExpHeapMBlockHead* block)
+ARM_FUNC void GetRegionOfMBlock(NNSiMemRegion* region, NNSiFndExpHeapMBlockHead* block)
{
region->start = SubU32ToPtr(block, GetAlignmentForMBlock(block));
region->end = GetMBlockEndAddr(block);
}
-NNSiFndExpHeapMBlockHead* RemoveMBlock(NNSiFndExpMBlockList* list, NNSiFndExpHeapMBlockHead* block)
+ARM_FUNC NNSiFndExpHeapMBlockHead* RemoveMBlock(NNSiFndExpMBlockList* list, NNSiFndExpHeapMBlockHead* block)
{
NNSiFndExpHeapMBlockHead* const prev = block->pMBHeadPrev;
NNSiFndExpHeapMBlockHead* const next = block->pMBHeadNext;
@@ -98,7 +98,7 @@ NNSiFndExpHeapMBlockHead* RemoveMBlock(NNSiFndExpMBlockList* list, NNSiFndExpHea return prev;
}
-NNSiFndExpHeapMBlockHead* InsertMBlock(NNSiFndExpMBlockList* list, NNSiFndExpHeapMBlockHead* target, NNSiFndExpHeapMBlockHead* prev)
+ARM_FUNC NNSiFndExpHeapMBlockHead* InsertMBlock(NNSiFndExpMBlockList* list, NNSiFndExpHeapMBlockHead* target, NNSiFndExpHeapMBlockHead* prev)
{
NNSiFndExpHeapMBlockHead* next;
target->pMBHeadPrev = prev;
@@ -125,7 +125,7 @@ NNSiFndExpHeapMBlockHead* InsertMBlock(NNSiFndExpMBlockList* list, NNSiFndExpHea return target;
}
-NNSiFndExpHeapMBlockHead* InitMBlock(const NNSiMemRegion* pRegion, u16 signature)
+ARM_FUNC NNSiFndExpHeapMBlockHead* InitMBlock(const NNSiMemRegion* pRegion, u16 signature)
{
NNSiFndExpHeapMBlockHead* block = pRegion->start;
block->signature = signature;
@@ -141,7 +141,7 @@ static inline NNSiFndExpHeapMBlockHead* InitFreeMBlock(const NNSiMemRegion* regi return InitMBlock(region, 0x4652);
}
-NNSiFndHeapHead* InitExpHeap(void* startAddress, void* endAddress, u16 optFlag)
+ARM_FUNC NNSiFndHeapHead* InitExpHeap(void* startAddress, void* endAddress, u16 optFlag)
{
NNSiFndHeapHead* pHeapHd = (NNSiFndHeapHead*)startAddress;
NNSiFndExpHeapHead* pExpHeapHd = GetExpHeapHeadPtrFromHeapHead(pHeapHd);
@@ -170,7 +170,7 @@ static inline void AppendMBlock(NNSiFndExpMBlockList* list, NNSiFndExpHeapMBlock (void) InsertMBlock(list, block, list->tail);
}
-void* AllocUsedBlockFromFreeBlock(NNSiFndExpHeapHead* pEHHead, NNSiFndExpHeapMBlockHead* pMBHeadFree, void* mblock, u32 size, u16 direction)
+ARM_FUNC void* AllocUsedBlockFromFreeBlock(NNSiFndExpHeapHead* pEHHead, NNSiFndExpHeapMBlockHead* pMBHeadFree, void* mblock, u32 size, u16 direction)
{
NNSiMemRegion freeRgnT;
NNSiMemRegion freeRgnB;
@@ -218,7 +218,7 @@ void* AllocUsedBlockFromFreeBlock(NNSiFndExpHeapHead* pEHHead, NNSiFndExpHeapMBl return mblock;
}
-void* AllocFromHead(NNSiFndHeapHead* pHeapHd, u32 size, int alignment)
+ARM_FUNC void* AllocFromHead(NNSiFndHeapHead* pHeapHd, u32 size, int alignment)
{
NNSiFndExpHeapHead* pExpHeapHd = GetExpHeapHeadPtrFromHeapHead(pHeapHd);
const BOOL bAllocFirst = GetAllocMode(pExpHeapHd) == 0;
@@ -248,7 +248,7 @@ void* AllocFromHead(NNSiFndHeapHead* pHeapHd, u32 size, int alignment) return AllocUsedBlockFromFreeBlock(pExpHeapHd, pMBlkHdFound, foundMBlock, size, 0);
}
-void* AllocFromTail(NNSiFndHeapHead* pHeapHd, u32 size, int alignment)
+ARM_FUNC void* AllocFromTail(NNSiFndHeapHead* pHeapHd, u32 size, int alignment)
{
NNSiFndExpHeapHead* pExpHeapHd = GetExpHeapHeadPtrFromHeapHead(pHeapHd);
const BOOL bAllocFirst = GetAllocMode(pExpHeapHd) == 0;
@@ -278,7 +278,7 @@ void* AllocFromTail(NNSiFndHeapHead* pHeapHd, u32 size, int alignment) return AllocUsedBlockFromFreeBlock(pExpHeapHd, pMBlkHdFound, foundMBlock, size, 1);
}
-BOOL RecycleRegion(NNSiFndExpHeapHead* pEHHead, const NNSiMemRegion* pRegion)
+ARM_FUNC BOOL RecycleRegion(NNSiFndExpHeapHead* pEHHead, const NNSiMemRegion* pRegion)
{
NNSiFndExpHeapMBlockHead* pBlkPtrFree = NULL;
NNSiMemRegion freeRgn = *pRegion;
@@ -308,7 +308,7 @@ BOOL RecycleRegion(NNSiFndExpHeapHead* pEHHead, const NNSiMemRegion* pRegion) return TRUE;
}
-NNSFndHeapHandle NNS_FndCreateExpHeapEx(void *startAddress, u32 size, u16 optFlag)
+ARM_FUNC NNSFndHeapHandle NNS_FndCreateExpHeapEx(void *startAddress, u32 size, u16 optFlag)
{
void* endAddress = NNSi_FndRoundDownPtr(AddU32ToPtr(startAddress, size), 4);
startAddress = NNSi_FndRoundUpPtr(startAddress, 4);
@@ -317,12 +317,12 @@ NNSFndHeapHandle NNS_FndCreateExpHeapEx(void *startAddress, u32 size, u16 optFla return InitExpHeap(startAddress, endAddress, optFlag);
}
-void NNS_FndDestroyExpHeap(NNSFndHeapHandle handle)
+ARM_FUNC void NNS_FndDestroyExpHeap(NNSFndHeapHandle handle)
{
NNSi_FndFinalizeHeap(handle);
}
-void* NNS_FndAllocFromExpHeapEx(NNSFndHeapHandle handle, u32 size, int alignment)
+ARM_FUNC void* NNS_FndAllocFromExpHeapEx(NNSFndHeapHandle handle, u32 size, int alignment)
{
if (size == 0)
size = 1;
@@ -334,7 +334,7 @@ void* NNS_FndAllocFromExpHeapEx(NNSFndHeapHandle handle, u32 size, int alignment }
/*
-u32 NNS_FndResizeForMBlockExpHeap(NNSFndHeapHandle heap, void *memBlock, u32 size)
+ARM_FUNC u32 NNS_FndResizeForMBlockExpHeap(NNSFndHeapHandle heap, void *memBlock, u32 size)
{
NNSiFndExpHeapHead* pEHHead;
NNSiFndExpHeapMBlockHead* pMBHead;
diff --git a/arm9/lib/libnns/src/NNS_FND_heapcommon.c b/arm9/lib/libnns/src/NNS_FND_heapcommon.c index 07b8e9cf..73646030 100644 --- a/arm9/lib/libnns/src/NNS_FND_heapcommon.c +++ b/arm9/lib/libnns/src/NNS_FND_heapcommon.c @@ -5,9 +5,9 @@ BOOL sRootListInitialized;
NNSFndList sRootList;
-void *NNS_FndGetNextListObject(NNSFndList *, void *);
+ARM_FUNC void *NNS_FndGetNextListObject(NNSFndList *, void *);
-static NNSiFndHeapHead* FindContainHeap(NNSFndList * pList, const void * memBlock)
+ARM_FUNC static NNSiFndHeapHead* FindContainHeap(NNSFndList * pList, const void * memBlock)
{
NNSiFndHeapHead * pHead = NULL;
@@ -24,7 +24,7 @@ static NNSiFndHeapHead* FindContainHeap(NNSFndList * pList, const void * memBloc return NULL;
}
-static NNSFndList* FindListContainHeap(const void * memBlock)
+ARM_FUNC static NNSFndList* FindListContainHeap(const void * memBlock)
{
NNSFndList* ret = &sRootList;
NNSiFndHeapHead* pHead = FindContainHeap(&sRootList, memBlock);
@@ -33,7 +33,7 @@ static NNSFndList* FindListContainHeap(const void * memBlock) return ret;
}
-void NNSi_FndInitHeapHead(NNSiFndHeapHead *pHead, u32 signature, void* heapStart, void* heapEnd, u16 optionFlag)
+ARM_FUNC void NNSi_FndInitHeapHead(NNSiFndHeapHead *pHead, u32 signature, void* heapStart, void* heapEnd, u16 optionFlag)
{
pHead->signature = signature;
pHead->heapStart = heapStart;
@@ -49,7 +49,7 @@ void NNSi_FndInitHeapHead(NNSiFndHeapHead *pHead, u32 signature, void* heapStart NNS_FndAppendListObject(FindListContainHeap(pHead), pHead);
}
-void NNSi_FndFinalizeHeap(NNSiFndHeapHead *pHead)
+ARM_FUNC void NNSi_FndFinalizeHeap(NNSiFndHeapHead *pHead)
{
NNS_FndRemoveListObject(FindListContainHeap(pHead), pHead);
}
diff --git a/arm9/lib/libnns/src/NNS_FND_list.c b/arm9/lib/libnns/src/NNS_FND_list.c index d4dd7620..fdab8188 100644 --- a/arm9/lib/libnns/src/NNS_FND_list.c +++ b/arm9/lib/libnns/src/NNS_FND_list.c @@ -3,7 +3,7 @@ #define OBJ_TO_LINK(list, obj) ((NNSFndLink*)((void*)(obj) + (list)->offset))
-void NNS_FndInitList(NNSFndList* list, s32 alignment)
+ARM_FUNC void NNS_FndInitList(NNSFndList* list, s32 alignment)
{
list->headObject = NULL;
list->tailObject = NULL;
@@ -11,7 +11,7 @@ void NNS_FndInitList(NNSFndList* list, s32 alignment) list->offset = (u16)alignment;
}
-static void SetFirstObject(NNSFndList* list, void* object)
+ARM_FUNC static void SetFirstObject(NNSFndList* list, void* object)
{
NNSFndLink* tail = OBJ_TO_LINK(list, object);
tail->nextObject = NULL;
@@ -21,7 +21,7 @@ static void SetFirstObject(NNSFndList* list, void* object) list->numObjects++;
}
-void NNS_FndAppendListObject(NNSFndList* list, void* object)
+ARM_FUNC void NNS_FndAppendListObject(NNSFndList* list, void* object)
{
if (list->headObject == NULL)
{
@@ -38,7 +38,7 @@ void NNS_FndAppendListObject(NNSFndList* list, void* object) }
}
-void NNS_FndPrependListObject(NNSFndList* list, void* object)
+ARM_FUNC void NNS_FndPrependListObject(NNSFndList* list, void* object)
{
if (list->headObject == NULL)
{
@@ -55,7 +55,7 @@ void NNS_FndPrependListObject(NNSFndList* list, void* object) }
}
-void NNS_FndInsertListObject(NNSFndList* list, void* where, void* object)
+ARM_FUNC void NNS_FndInsertListObject(NNSFndList* list, void* where, void* object)
{
if (where == NULL)
{
@@ -79,7 +79,7 @@ void NNS_FndInsertListObject(NNSFndList* list, void* where, void* object) }
}
-void NNS_FndRemoveListObject(NNSFndList* list, void* object)
+ARM_FUNC void NNS_FndRemoveListObject(NNSFndList* list, void* object)
{
NNSFndLink* node = OBJ_TO_LINK(list, object);
if (node->prevObject == NULL)
@@ -103,7 +103,7 @@ void NNS_FndRemoveListObject(NNSFndList* list, void* object) list->numObjects--;
}
-void * NNS_FndGetNextListObject(NNSFndList* list, void* object)
+ARM_FUNC void * NNS_FndGetNextListObject(NNSFndList* list, void* object)
{
if (object == NULL)
{
@@ -115,7 +115,7 @@ void * NNS_FndGetNextListObject(NNSFndList* list, void* object) }
}
-void * NNS_FndGetPrevListObject(NNSFndList* list, void* object)
+ARM_FUNC void * NNS_FndGetPrevListObject(NNSFndList* list, void* object)
{
if (object == NULL)
{
diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s index d1e39e08..77bc1174 100644 --- a/arm9/modules/59/asm/mod59_021D74E0_asm.s +++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s @@ -5,92 +5,6 @@ .extern MOD59_021D7730 - thumb_func_start MOD59_021D796C -MOD59_021D796C: ; 0x021D796C - push {r4, lr} - add r4, r0, #0 - mov r0, #0 - add r1, r0, #0 - bl ToggleBgLayer - mov r0, #1 - mov r1, #0 - bl ToggleBgLayer - mov r0, #2 - mov r1, #0 - bl ToggleBgLayer - mov r0, #3 - mov r1, #0 - bl ToggleBgLayer - mov r0, #4 - mov r1, #0 - bl ToggleBgLayer - mov r0, #5 - mov r1, #0 - bl ToggleBgLayer - mov r0, #6 - mov r1, #0 - bl ToggleBgLayer - mov r0, #7 - mov r1, #0 - bl ToggleBgLayer - ldr r0, [r4, #0x18] - mov r1, #0 - bl FreeBgTilemapBuffer - ldr r0, [r4, #0x18] - mov r1, #1 - bl FreeBgTilemapBuffer - ldr r0, [r4, #0x18] - mov r1, #2 - bl FreeBgTilemapBuffer - ldr r0, [r4, #0x18] - mov r1, #3 - bl FreeBgTilemapBuffer - ldr r0, [r4, #0x18] - mov r1, #4 - bl FreeBgTilemapBuffer - ldr r0, [r4, #0x18] - mov r1, #5 - bl FreeBgTilemapBuffer - ldr r0, [r4, #0x18] - mov r1, #6 - bl FreeBgTilemapBuffer - ldr r0, [r4, #0x18] - mov r1, #7 - bl FreeBgTilemapBuffer - ldr r0, [r4, #0x18] - bl FreeToHeap - pop {r4, pc} - thumb_func_end MOD59_021D796C - - thumb_func_start MOD59_021D79F8 -MOD59_021D79F8: ; 0x021D79F8 - push {r4, lr} - add r4, r0, #0 - ldr r2, _021D7A30 ; =0x00000155 - ldr r3, [r4] - mov r0, #1 - mov r1, #0x1a - bl NewMsgDataFromNarc - str r0, [r4, #0x4c] - bl FUN_0201BD5C - mov r0, #0 - ldr r3, [r4] - add r1, r0, #0 - mov r2, #6 - bl FUN_020142EC - str r0, [r4, #0x60] - ldr r0, [r4] - bl ScrStrBufs_new - str r0, [r4, #0x64] - mov r0, #0 - str r0, [r4, #0x50] - str r0, [r4, #0x54] - str r0, [r4, #0x2c] - pop {r4, pc} - nop -_021D7A30: .word 0x00000155 - thumb_func_end MOD59_021D79F8 - thumb_func_start MOD59_021D7A34 MOD59_021D7A34: ; 0x021D7A34 push {r4, lr} diff --git a/arm9/modules/59/include/mod59_021D74E0.h b/arm9/modules/59/include/mod59_021D74E0.h index 0a594ad3..bee72507 100644 --- a/arm9/modules/59/include/mod59_021D74E0.h +++ b/arm9/modules/59/include/mod59_021D74E0.h @@ -20,22 +20,31 @@ typedef struct MOD59_OverlayData u32 heap_id; struct SaveBlock2 *sav2; struct Options *options; - u32 Unk0C; - u32 Unk10; - struct UnkStruct_02006234 *Unk14; + u32 unk0C; + u32 unk10; + struct UnkStruct_02006234 *unk14; struct BgConfig *bgConfig; - u8 padding[0x54]; + u8 filler1C[0x10]; + u32 unk2C; + u8 filler30[0x1C]; + struct MsgData *msgData; + u32 unk50; + u32 unk54; + u8 filler58[0x8]; + u32 unk60; // unknown if this is the right type, possibly a pointer instead? + struct ScrStrBufs *strBufs; + u8 filler68[0x8]; struct MOD59_UnkPlayerStruct *playerStruct; struct MOD59_UnkPlayerStruct *rivalStruct; - u32 Unk78; - u8 padding2[0xC]; - u8 Unk88; - u8 Unk89; - u8 Unk8A; - u8 Unk8B; - u8 padding3[4]; - u32 Unk90; - u8 padding4[32]; + u32 unk78; + u8 filler7C[0xC]; + u8 unk88; + u8 unk89; + u8 unk8A; + u8 unk8B; + u8 filler8C[4]; + u32 unk90; + u8 filler94[32]; } MOD59_OverlayData; BOOL MOD59_Init(struct UnkStruct_02006234 *param0); @@ -44,5 +53,7 @@ BOOL MOD59_021D76C0(struct UnkStruct_02006234 *param0); void MOD59_021D7724(MOD59_OverlayData *data); BOOL MOD59_021D7730(void); void MOD59_SetupBg(MOD59_OverlayData *data); +void MOD59_DestroyBg(MOD59_OverlayData *data); +void MOD59_SetupMsg(MOD59_OverlayData *data); #endif //POKEDIAMOND_MOD59_021D74E0_H diff --git a/arm9/modules/59/src/mod59_021D74E0_src.c b/arm9/modules/59/src/mod59_021D74E0_src.c index 7d6be2ca..1a301bc1 100644 --- a/arm9/modules/59/src/mod59_021D74E0_src.c +++ b/arm9/modules/59/src/mod59_021D74E0_src.c @@ -8,6 +8,10 @@ #include "unk_02024E64.h" #include "bg_window.h" #include "render_window.h" +#include "msgdata.h" +#include "msgdata/msg.naix" +#include "text.h" +#include "script_buffers.h" #include "module_52.h" extern void *FUN_02077A84(u32 heap_id, u32 param1, u32 param2, u32 param3, struct Options *options); @@ -20,9 +24,7 @@ extern struct GraphicsModes MOD59_021D9DCC; extern struct BgTemplate MOD59_021D9EA0; extern struct BgTemplate MOD59_021D9EBC; -extern void MOD59_021D79F8(MOD59_OverlayData *data); extern void MOD59_021D7A34(MOD59_OverlayData *data); -extern void MOD59_021D796C(MOD59_OverlayData *data); extern void MOD59_021D7A4C(MOD59_OverlayData *data); extern void MOD59_021D7A5C(MOD59_OverlayData *data); extern void MOD59_021D8058(MOD59_OverlayData *data); @@ -31,6 +33,8 @@ extern u32 MOD59_021D8920(MOD59_OverlayData *data); extern void FUN_0200E1D0(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 heap_id); extern u32 FUN_0200E308(void); +extern u32 FUN_020142EC(u32 param0, u32 param1, u32 param2, u32 heap_id); + extern void FUN_02077AC4(void *param0); FS_EXTERN_OVERLAY(MODULE_52); @@ -45,15 +49,15 @@ THUMB_FUNC BOOL MOD59_Init(struct UnkStruct_02006234 *param0) s32 *field18 = OverlayManager_GetField18(param0); data->sav2 = (struct SaveBlock2 *)field18[2]; //? data->options = Sav2_PlayerData_GetOptionsAddr(data->sav2); - data->Unk10 = data->Unk0C = 0; - data->Unk14 = NULL; + data->unk10 = data->unk0C = 0; + data->unk14 = NULL; data->playerStruct = (struct MOD59_UnkPlayerStruct *)FUN_02077A84(0x52, 0, 0, 7, data->options); data->rivalStruct = (struct MOD59_UnkPlayerStruct *)FUN_02077A84(0x52, 3, 0, 7, data->options); - data->Unk88 = 0; - data->Unk89 = 0; - data->Unk8A = 0; - data->Unk8B = 0; - data->Unk90 = 0; + data->unk88 = 0; + data->unk89 = 0; + data->unk8A = 0; + data->unk8B = 0; + data->unk90 = 0; return TRUE; } @@ -80,7 +84,7 @@ THUMB_FUNC BOOL MOD59_021D7564(struct UnkStruct_02006234 *param0, u32 *param1) SetKeyRepeatTimers(4, 8); MOD59_SetupBg(data); - MOD59_021D79F8(data); + MOD59_SetupMsg(data); MOD59_021D7A4C(data); Main_SetVBlankIntrCB((void (*)(void *))MOD59_021D7724, data); @@ -98,7 +102,7 @@ THUMB_FUNC BOOL MOD59_021D7564(struct UnkStruct_02006234 *param0, u32 *param1) *param1 = 2; } - if (data->Unk14 == NULL) + if (data->unk14 == NULL) { break; } @@ -115,7 +119,7 @@ THUMB_FUNC BOOL MOD59_021D7564(struct UnkStruct_02006234 *param0, u32 *param1) } MOD59_021D7A34(data); - MOD59_021D796C(data); + MOD59_DestroyBg(data); MOD59_021D7A5C(data); Main_SetVBlankIntrCB(NULL, NULL); @@ -130,7 +134,7 @@ THUMB_FUNC BOOL MOD59_021D7564(struct UnkStruct_02006234 *param0, u32 *param1) } MOD59_021D7A34(data); - MOD59_021D796C(data); + MOD59_DestroyBg(data); MOD59_021D7A5C(data); Main_SetVBlankIntrCB(NULL, NULL); @@ -140,13 +144,13 @@ THUMB_FUNC BOOL MOD59_021D7564(struct UnkStruct_02006234 *param0, u32 *param1) break; case 4: - if (OverlayManager_Run(data->Unk14) != TRUE) + if (OverlayManager_Run(data->unk14) != TRUE) { break; } - OverlayManager_delete(data->Unk14); - data->Unk14 = NULL; + OverlayManager_delete(data->unk14); + data->unk14 = NULL; *param1 = 5; @@ -275,5 +279,46 @@ THUMB_FUNC void MOD59_SetupBg(MOD59_OverlayData *data) ToggleBgLayer(GF_BG_LYR_SUB_3, GX_LAYER_TOGGLE_OFF); MOD59_021D8058(data); - data->Unk78 = 0; + data->unk78 = 0; +} + +THUMB_FUNC void MOD59_DestroyBg(MOD59_OverlayData *data) +{ + ToggleBgLayer(GF_BG_LYR_MAIN_0, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer(GF_BG_LYR_MAIN_1, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer(GF_BG_LYR_MAIN_2, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer(GF_BG_LYR_MAIN_3, GX_LAYER_TOGGLE_OFF); + + ToggleBgLayer(GF_BG_LYR_SUB_0, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer(GF_BG_LYR_SUB_1, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer(GF_BG_LYR_SUB_2, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer(GF_BG_LYR_SUB_3, GX_LAYER_TOGGLE_OFF); + + FreeBgTilemapBuffer(data->bgConfig, GF_BG_LYR_MAIN_0); + FreeBgTilemapBuffer(data->bgConfig, GF_BG_LYR_MAIN_1); + FreeBgTilemapBuffer(data->bgConfig, GF_BG_LYR_MAIN_2); + FreeBgTilemapBuffer(data->bgConfig, GF_BG_LYR_MAIN_3); + + FreeBgTilemapBuffer(data->bgConfig, GF_BG_LYR_SUB_0); + FreeBgTilemapBuffer(data->bgConfig, GF_BG_LYR_SUB_1); + FreeBgTilemapBuffer(data->bgConfig, GF_BG_LYR_SUB_2); + FreeBgTilemapBuffer(data->bgConfig, GF_BG_LYR_SUB_3); + + FreeToHeap(data->bgConfig); +} + +THUMB_FUNC void MOD59_SetupMsg(MOD59_OverlayData *data) +{ + data->msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0341_bin, data->heap_id); + + FUN_0201BD5C(); + + data->unk60 = FUN_020142EC(0, 0, 6, data->heap_id); + + data->strBufs = ScrStrBufs_new(data->heap_id); + + data->unk50 = 0; + data->unk54 = 0; + data->unk2C = 0; } + diff --git a/arm9/src/unk_0200E1D0.c b/arm9/src/unk_0200E1D0.c new file mode 100644 index 00000000..32f35605 --- /dev/null +++ b/arm9/src/unk_0200E1D0.c @@ -0,0 +1,16 @@ +#include "global.h"
+
+struct UnkStruct_021C46B4
+{
+ u8 unk_000[0x14];
+ u8 unk_014[0x30];
+ u8 unk_044[0x30];
+ u8 unk_074[0x18];
+ u8 unk_08C[0xC0];
+ u16 unk_14C;
+ u8 unk_14E;
+ u8 unk_14F;
+ u32 unk_150;
+};
+
+struct UnkStruct_021C46B4 UNK_021C46B4;
|