diff options
author | red031000 <rubenru09@aol.com> | 2020-12-05 21:19:20 +0000 |
---|---|---|
committer | red031000 <rubenru09@aol.com> | 2020-12-05 21:19:20 +0000 |
commit | 8c4c85d47a2457e524eb63f91ef32f2c8cd8c38d (patch) | |
tree | feec6e8ea88f9751ecbf67a60ce9268ad720ac4d | |
parent | 21ff3852f8fd49e9f491a2a12fb81d43e5147727 (diff) |
two mod 21 funcs
-rw-r--r-- | arm9/modules/21/asm/mod21_02254A6C_asm.s | 81 | ||||
-rw-r--r-- | arm9/modules/21/include/mod21_02254A6C.h | 8 | ||||
-rw-r--r-- | arm9/modules/21/src/mod21_02254A6C_src.c | 39 |
3 files changed, 49 insertions, 79 deletions
diff --git a/arm9/modules/21/asm/mod21_02254A6C_asm.s b/arm9/modules/21/asm/mod21_02254A6C_asm.s index ff26bc88..f364df84 100644 --- a/arm9/modules/21/asm/mod21_02254A6C_asm.s +++ b/arm9/modules/21/asm/mod21_02254A6C_asm.s @@ -3,85 +3,8 @@ .section .text .balign 4, 0 - thumb_func_start MOD21_02254B4C -MOD21_02254B4C: ; 0x02254B4C - push {r4, lr} - add r4, r0, #0 - bl MOD20_022538A0 - add r0, #8 - add r1, r4, #0 - bl MOD20_02253888 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_02254B4C - - thumb_func_start MOD21_02254B60 -MOD21_02254B60: ; 0x02254B60 - push {r4, r5, lr} - sub sp, #0x14 - add r4, r1, #0 - add r0, r4, #0 - bl MOD20_022538A0 - add r5, r0, #0 - ldr r0, [r5, #4] - ldr r2, _02254BE8 ; =MOD21_02254D90 - mov r1, #6 - mov r3, #0 - bl FUN_02016C18 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #8 - str r0, [sp, #0xc] - ldr r2, [r5, #4] - mov r0, #0xc - mov r1, #0x17 - mov r3, #6 - bl FUN_0200687C - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #8 - str r0, [sp, #0xc] - ldr r2, [r5, #4] - mov r0, #0xc - mov r1, #0x18 - mov r3, #6 - bl FUN_020068C8 - mov r0, #0 - add r1, r0, #0 - bl MOD20_02252D7C - add r0, r5, #0 - bl MOD21_02254C5C - ldr r0, [r5, #4] - mov r1, #6 - bl FUN_02017CD0 - ldr r1, _02254BEC ; =0x04001000 - ldr r0, _02254BF0 ; =0xFFFFE0FF - ldr r3, [r1] - ldr r2, [r1] - str r3, [sp, #0x10] - and r0, r2 - lsl r2, r3, #0x13 - lsr r3, r2, #0x1b - mov r2, #4 - orr r2, r3 - lsl r2, r2, #8 - orr r0, r2 - str r0, [r1] - add r0, r4, #0 - bl MOD21_02254B4C - add sp, #0x14 - pop {r4, r5, pc} - .align 2, 0 -_02254BE8: .word MOD21_02254D90 -_02254BEC: .word 0x04001000 -_02254BF0: .word 0xFFFFE0FF - thumb_func_end MOD21_02254B60 + .extern MOD21_02254B4C + .extern MOD21_02254B60 thumb_func_start MOD21_02254BF4 MOD21_02254BF4: ; 0x02254BF4 diff --git a/arm9/modules/21/include/mod21_02254A6C.h b/arm9/modules/21/include/mod21_02254A6C.h index c2eba5b7..d0fc3284 100644 --- a/arm9/modules/21/include/mod21_02254A6C.h +++ b/arm9/modules/21/include/mod21_02254A6C.h @@ -12,11 +12,19 @@ typedef struct UnkStruct02254A6C u32 Unk30[1]; } UnkStruct02254A6C; +typedef struct UnkStruct02254B60 +{ + u32 Unk00; + u32 Unk04; +} UnkStruct02254B60; + BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1); void MOD21_02254AD4(void *param0, void *param1); void MOD21_02254B04(void *param0); void MOD21_02254B10(u32 *param0, u32 param1); BOOL MOD21_02254B34(void *param0, u32 param1); BOOL MOD21_02254B40(void *param0); +BOOL MOD21_02254B4C(void *param0); +BOOL MOD21_02254B60(u32 param0, void *param1); #endif //POKEDIAMOND_MOD21_02254A6C_H diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index b36baa2a..44c2515a 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -10,6 +10,17 @@ extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, v extern void MOD21_02254DAC(void); extern BOOL MOD20_02253794(void *param0, u32 param1); extern BOOL MOD20_022537B8(void *param0); +extern UnkStruct02254B60 *MOD20_022538A0(void *param0); +extern BOOL MOD20_02253888(void *param0, void *param1); + +extern void MOD21_02254D90(void); + +extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3); +extern void FUN_0200687C(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); +extern void FUN_020068C8(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); +extern void MOD20_02252D7C(u32 param0, u32 param1); +extern void MOD21_02254C5C(UnkStruct02254B60 *param0); +extern void FUN_02017CD0(u32 param0, u32 param1); THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) { @@ -69,3 +80,31 @@ THUMB_FUNC BOOL MOD21_02254B40(void *param0) { return MOD20_022537B8((void *)((u32)param0 + 8)); } + +THUMB_FUNC BOOL MOD21_02254B4C(void *param0) +{ + return MOD20_02253888((void *)((u32)MOD20_022538A0(param0) + 8), param0); +} + +THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254B60 *strct = MOD20_022538A0(param1); + FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0); + FUN_0200687C(12, 23, strct->Unk04, 6, 0, 0, 1, 8); + FUN_020068C8(12, 24, strct->Unk04, 6, 0, 0, 1, 8); + MOD20_02252D7C(0, 0); + MOD21_02254C5C(strct); + FUN_02017CD0(strct->Unk04, 6); + u32 r3 = reg_GXS_DB_DISPCNT; + u32 r2 = reg_GXS_DB_DISPCNT; + vu32 tmp = r3; //unused? wtf + u32 r0 = ~0x1F00 & r2; + r2 = r3 << 0x13; + r3 = r2 >> 0x1b; + r2 = 4 | r3; + r2 <<= 8; + r0 |= r2; + reg_GXS_DB_DISPCNT = r0; + return MOD21_02254B4C(param1); +} |