diff options
-rw-r--r-- | arm9/modules/59/asm/mod59_021D74E0_asm.s | 64 | ||||
-rw-r--r-- | arm9/modules/59/include/mod59_021D74E0.h | 4 | ||||
-rw-r--r-- | arm9/modules/59/src/mod59_021D74E0_src.c | 35 |
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; +} |