mod21_0225489C

This commit is contained in:
red031000
2020-11-10 16:38:39 +00:00
parent b65d56bc44
commit ebbcd4c9d9
3 changed files with 56 additions and 68 deletions

View File

@@ -3,69 +3,6 @@
.section .text
.balign 4, 0
thumb_func_start MOD21_0225489C
MOD21_0225489C: ; 0x0225489C
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
add r1, r5, #0
add r0, #0x24
add r1, #0x14
bl MOD21_02254A6C
cmp r0, #0
beq _0225490A
mov r1, #0
strb r1, [r5]
strb r1, [r5, #1]
strb r1, [r5, #2]
mov r0, #1
strb r0, [r5, #3]
strb r1, [r5, #6]
add r0, r5, #0
str r1, [r5, #0x20]
add r0, #0x14
bl GF_RTC_CopyTime
ldr r0, [r5, #0x14]
cmp r0, #0x18
blo _022548D6
mov r1, #0x18
bl _u32_div_f
str r1, [r5, #0x14]
_022548D6:
ldr r0, [r5, #0x18]
cmp r0, #0x3c
blo _022548E6
ldr r0, [r5, #0x14]
mov r1, #0x3c
bl _u32_div_f
str r1, [r5, #0x14]
_022548E6:
ldr r0, [r5, #0x18]
ldr r2, _02254910 ; =MOD21_02254974
strb r0, [r5, #5]
mov r0, #8
str r0, [sp]
ldr r0, _02254914 ; =MOD21_02254D80
mov r1, #1
add r3, r5, #0
bl MOD20_02254130
str r0, [r5, #0x10]
cmp r0, #0
bne _02254904
mov r0, #0
pop {r3, r4, r5, pc}
_02254904:
str r4, [r5, #0x28]
mov r0, #1
pop {r3, r4, r5, pc}
_0225490A:
mov r0, #0
pop {r3, r4, r5, pc}
nop
_02254910: .word MOD21_02254974
_02254914: .word MOD21_02254D80
thumb_func_end MOD21_0225489C
thumb_func_start MOD21_02254918
MOD21_02254918: ; 0x02254918
push {r4, lr}

View File

@@ -3,6 +3,19 @@
#include "nitro/types.h"
BOOL MOD21_02254854(u32 *param0, u32 param1, u32 param2, u32 param3);
typedef struct UnkStruct02254854
{
u8 bytearray[8];
u8 padding0[8];
BOOL Unk10;
u32 Unk14[2];
u8 padding1[4];
u32 Unk20;
u32 Unk24;
u32 Unk28;
} UnkStruct02254854;
BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3);
BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3);
#endif //POKEDIAMOND_MOD21_02254854_H

View File

@@ -3,20 +3,58 @@
#include "unk_0200CA44.h"
#include "mod21_02254854.h"
extern BOOL MOD21_0225489C(void *param0, u32 param1, u32 param2, u32 param3);
extern void MOD21_02254930(void *, void *);
THUMB_FUNC BOOL MOD21_02254854(u32 *param0, u32 param1, u32 param2, u32 param3) //param0 is likely actually a struct
extern void GF_RTC_CopyTime(u32 *param0);
extern void MOD21_02254D80();
extern void MOD21_02254974();
extern BOOL MOD21_02254A6C(u32 *param0, u32 *param1);
extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4);
THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3)
{
void * alloced = AllocFromHeap(8, 0x2c);
UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854));
if (alloced != NULL)
{
if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44(MOD21_02254930, alloced, (void *)1))
{
*param0 = (u32)alloced;
*param0 = alloced;
return TRUE;
}
FreeToHeap(alloced);
}
return FALSE;
}
THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3)
{
#pragma unused (param2, param3) //not sure, please check
if (MOD21_02254A6C(&param0->Unk24, param0->Unk14))
{
param0->bytearray[0] = 0;
param0->bytearray[1] = 0;
param0->bytearray[2] = 0;
param0->bytearray[3] = 1;
param0->bytearray[6] = 0;
param0->Unk20 = 0;
GF_RTC_CopyTime(param0->Unk14);
if (param0->Unk14[0] >= 0x18)
{
param0->Unk14[0] = param0->Unk14[0] % 0x18;
}
if (param0->Unk14[1] >= 0x3c)
{
param0->Unk14[0] = param0->Unk14[0] % 0x3c;
}
param0->bytearray[5] = (u8)param0->Unk14[1];
param0->Unk10 = MOD20_02254130(MOD21_02254D80, TRUE, MOD21_02254974, param0, 8);
if (param0->Unk10 == FALSE)
{
return FALSE;
}
param0->Unk28 = param1;
return TRUE;
}
return FALSE;
}