summaryrefslogtreecommitdiff
path: root/arm9
diff options
context:
space:
mode:
Diffstat (limited to 'arm9')
-rw-r--r--arm9/arm9.lsf1
-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.h23
-rw-r--r--arm9/lib/NitroSDK/include/SND_bank.h79
-rw-r--r--arm9/lib/NitroSDK/include/SND_command.h50
-rw-r--r--arm9/lib/NitroSDK/include/SND_main.h14
-rw-r--r--arm9/lib/NitroSDK/include/SND_work.h45
-rw-r--r--arm9/lib/libnns/src/NNS_FND_allocator.c10
-rw-r--r--arm9/lib/libnns/src/NNS_FND_expheap.c26
-rw-r--r--arm9/lib/libnns/src/NNS_FND_heapcommon.c10
-rw-r--r--arm9/lib/libnns/src/NNS_FND_list.c16
-rw-r--r--arm9/modules/59/asm/mod59_021D74E0_asm.s86
-rw-r--r--arm9/modules/59/include/mod59_021D74E0.h37
-rw-r--r--arm9/modules/59/src/mod59_021D74E0_src.c79
-rw-r--r--arm9/src/unk_0200E1D0.c16
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;