summaryrefslogtreecommitdiff
path: root/arm9
diff options
context:
space:
mode:
Diffstat (limited to 'arm9')
-rw-r--r--arm9/modules/59/asm/mod59_021D74E0_asm.s86
-rw-r--r--arm9/modules/59/include/mod59_021D74E0.h19
-rw-r--r--arm9/modules/59/src/mod59_021D74E0_src.c54
3 files changed, 64 insertions, 95 deletions
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..d193202e 100644
--- a/arm9/modules/59/include/mod59_021D74E0.h
+++ b/arm9/modules/59/include/mod59_021D74E0.h
@@ -24,18 +24,27 @@ typedef struct MOD59_OverlayData
u32 Unk10;
struct UnkStruct_02006234 *Unk14;
struct BgConfig *bgConfig;
- u8 padding[0x54];
+ u8 padding[0x10];
+ u32 Unk2C;
+ u8 padding2[0x1C];
+ struct MsgData *msgData;
+ u32 Unk50;
+ u32 Unk54;
+ u8 padding3[0x8];
+ u32 Unk60; // unknown if this is the right type, possibly a pointer instead?
+ struct ScrStrBufs *strBufs;
+ u8 padding4[0x8];
struct MOD59_UnkPlayerStruct *playerStruct;
struct MOD59_UnkPlayerStruct *rivalStruct;
u32 Unk78;
- u8 padding2[0xC];
+ u8 padding5[0xC];
u8 Unk88;
u8 Unk89;
u8 Unk8A;
u8 Unk8B;
- u8 padding3[4];
+ u8 padding6[4];
u32 Unk90;
- u8 padding4[32];
+ u8 padding7[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..5a5d0126 100644
--- a/arm9/modules/59/src/mod59_021D74E0_src.c
+++ b/arm9/modules/59/src/mod59_021D74E0_src.c
@@ -8,6 +8,9 @@
#include "unk_02024E64.h"
#include "bg_window.h"
#include "render_window.h"
+#include "msgdata.h"
+#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 +23,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 +32,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);
@@ -80,7 +83,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);
@@ -115,7 +118,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 +133,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);
@@ -277,3 +280,44 @@ THUMB_FUNC void MOD59_SetupBg(MOD59_OverlayData *data)
MOD59_021D8058(data);
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, 0x155, 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;
+}
+