summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2021-06-07 01:16:24 +0100
committerred031000 <rubenru09@aol.com>2021-06-07 01:16:24 +0100
commitb44f8c765516b1be85c97b76dab07bfee318b407 (patch)
treefb1654b4f7444ef76eb50539f6a980b7fd14a767
parentd887b5d339c2801e3db17ad50529e45ed55addf2 (diff)
another mod59 func
-rw-r--r--arm9/modules/59/asm/mod59_021D74E0_asm.s64
-rw-r--r--arm9/modules/59/include/mod59_021D74E0.h4
-rw-r--r--arm9/modules/59/src/mod59_021D74E0_src.c35
3 files changed, 34 insertions, 69 deletions
diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s
index 627f31bf..7d1c22b6 100644
--- a/arm9/modules/59/asm/mod59_021D74E0_asm.s
+++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s
@@ -3,69 +3,7 @@
.section .text
.balign 4, 0
- thumb_func_start MOD59_021D7724
-MOD59_021D7724: ; 0x021D7724
- ldr r3, _021D772C ; =FUN_0201AB60
- ldr r0, [r0, #0x18]
- bx r3
- nop
-_021D772C: .word FUN_0201AB60
- thumb_func_end MOD59_021D7724
-
- thumb_func_start MOD59_021D7730
-MOD59_021D7730: ; 0x021D7730
- push {r3, r4}
- ldr r2, _021D7788 ; =gMain + 0x40
- mov r0, #0
- ldrh r1, [r2, #0x20]
- cmp r1, #0
- beq _021D7784
- ldrh r3, [r2, #0x1c]
- mov r1, #1
- lsl r1, r1, #8
- cmp r3, r1
- bhs _021D7784
- ldrh r2, [r2, #0x1e]
- cmp r2, #0xc0
- bhs _021D7784
- cmp r3, #0x80
- bhs _021D7758
- mov r1, #0x80
- sub r1, r1, r3
- lsl r1, r1, #0x10
- b _021D775C
-_021D7758:
- sub r3, #0x80
- lsl r1, r3, #0x10
-_021D775C:
- lsr r3, r1, #0x10
- cmp r2, #0x64
- bhs _021D776A
- mov r1, #0x64
- sub r1, r1, r2
- lsl r1, r1, #0x10
- b _021D776E
-_021D776A:
- sub r2, #0x64
- lsl r1, r2, #0x10
-_021D776E:
- lsr r4, r1, #0x10
- add r2, r3, #0
- add r1, r4, #0
- mul r2, r3
- mul r1, r4
- add r2, r2, r1
- mov r1, #1
- lsl r1, r1, #8
- cmp r2, r1
- bgt _021D7784
- mov r0, #1
-_021D7784:
- pop {r3, r4}
- bx lr
- .align 2, 0
-_021D7788: .word gMain + 0x40
- thumb_func_end MOD59_021D7730
+ .extern MOD59_021D7730
thumb_func_start MOD59_021D778C
MOD59_021D778C: ; 0x021D778C
diff --git a/arm9/modules/59/include/mod59_021D74E0.h b/arm9/modules/59/include/mod59_021D74E0.h
index 112512d8..2dd05826 100644
--- a/arm9/modules/59/include/mod59_021D74E0.h
+++ b/arm9/modules/59/include/mod59_021D74E0.h
@@ -34,11 +34,13 @@ typedef struct MOD59_OverlayData
u8 Unk8B;
u8 padding3[4];
u32 Unk90;
- //TODO pad to 0xb4
+ u8 padding4[32];
} MOD59_OverlayData;
BOOL MOD59_Init(struct UnkStruct_02006234 *param0);
BOOL MOD59_021D7564(struct UnkStruct_02006234 *param0, u32 *param1);
BOOL MOD59_021D76C0(struct UnkStruct_02006234 *param0);
+void MOD59_021D7724(MOD59_OverlayData *data);
+BOOL MOD59_021D7730(void);
#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 34912948..9be9eff3 100644
--- a/arm9/modules/59/src/mod59_021D74E0_src.c
+++ b/arm9/modules/59/src/mod59_021D74E0_src.c
@@ -6,6 +6,7 @@
#include "game_init.h"
#include "GX_layers.h"
#include "unk_02024E64.h"
+#include "unk_02016B94.h"
#include "module_52.h"
extern void *FUN_02077A84(u32 heap_id, u32 param1, u32 param2, u32 param3, struct Options *options);
@@ -18,7 +19,6 @@ 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_021D7724(void *data);
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);
@@ -30,13 +30,12 @@ FS_EXTERN_OVERLAY(MODULE_52);
THUMB_FUNC BOOL MOD59_Init(struct UnkStruct_02006234 *param0)
{
- //note: 0xb4 is likely the overlay data struct size, once struct is padded replace with sizeof
CreateHeap(3, 0x52, 1 << 18);
- MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_CreateAndGetData(param0, 0xb4, 0x52);
+ MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_CreateAndGetData(param0, sizeof(MOD59_OverlayData), 0x52);
(void)memset((void *)data, 0, 0xb4);
data->heap_id = 0x52;
- int *field18 = OverlayManager_GetField18(param0);
+ s32 *field18 = OverlayManager_GetField18(param0);
data->sav2 = (struct SaveBlock2 *)field18[2]; //?
data->options = Sav2_PlayerData_GetOptionsAddr(data->sav2);
data->Unk10 = data->Unk0C = 0;
@@ -77,7 +76,7 @@ THUMB_FUNC BOOL MOD59_021D7564(struct UnkStruct_02006234 *param0, u32 *param1)
MOD59_021D79F8(data);
MOD59_021D7A4C(data);
- Main_SetVBlankIntrCB(MOD59_021D7724, data);
+ Main_SetVBlankIntrCB((void (*)(void *))MOD59_021D7724, data);
GX_BothDispOn();
@@ -175,3 +174,29 @@ THUMB_FUNC BOOL MOD59_021D76C0(struct UnkStruct_02006234 *param0)
return TRUE;
}
+
+THUMB_FUNC void MOD59_021D7724(MOD59_OverlayData *data)
+{
+ FUN_0201AB60(data->Unk18);
+}
+
+THUMB_FUNC BOOL MOD59_021D7730(void)
+{
+ BOOL ret = FALSE;
+
+ if (gMain.touchNew != 0 && gMain.touchX < 256 && gMain.touchY < 192)
+ {
+ s32 distanceFromXCentre = gMain.touchX < 128 ? (u16)(128 - gMain.touchX) : (u16)(gMain.touchX - 128);
+ s32 distanceFromYCentre = gMain.touchY < 100 ? (u16)(100 - gMain.touchY) : (u16)(gMain.touchY - 100);
+
+ s32 distanceXSquare = distanceFromXCentre * distanceFromXCentre;
+ s32 distanceYSquare = distanceFromYCentre * distanceFromYCentre;
+
+ if (distanceXSquare + distanceYSquare <= 256)
+ {
+ ret = TRUE;
+ }
+ }
+
+ return ret;
+}