summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkira Akashi <rubenru09@aol.com>2021-08-28 14:24:05 +0100
committerGitHub <noreply@github.com>2021-08-28 14:24:05 +0100
commit12d164b14df9b8936a5aa13111d3fe81e033ec6b (patch)
tree15352e1fc3681bf177fb77065ac0e6324e9a9c6c
parentab1ad9955b4f81e442b7a7114ec1ce82572c10ed (diff)
parent766cb136d9b9b4f2fc6fc14059a316a93f9aff9b (diff)
Merge branch 'master' into decompile_sound
-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
3 files changed, 86 insertions, 116 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..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;
}
+