two mod 21 funcs

This commit is contained in:
red031000
2020-12-05 21:19:20 +00:00
parent 21ff3852f8
commit 8c4c85d47a
3 changed files with 49 additions and 79 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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);
}