diff options
-rw-r--r-- | asm/code_8094F88.s | 61 | ||||
-rw-r--r-- | include/save.h | 4 | ||||
-rw-r--r-- | include/time.h | 19 | ||||
-rwxr-xr-x | ld_script.txt | 2 | ||||
-rw-r--r-- | src/code_8094F88.c | 137 | ||||
-rw-r--r-- | src/code_8095014.c | 87 | ||||
-rw-r--r-- | src/save_mid.c | 20 |
7 files changed, 152 insertions, 178 deletions
diff --git a/asm/code_8094F88.s b/asm/code_8094F88.s deleted file mode 100644 index 2b58465..0000000 --- a/asm/code_8094F88.s +++ /dev/null @@ -1,61 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8094FB4 -sub_8094FB4: - push {lr} - adds r2, r0, 0 - ldrb r0, [r2, 0x4] - adds r0, 0x1 - movs r1, 0 - strb r0, [r2, 0x4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bls _0809500A - strb r1, [r2, 0x4] - ldrb r0, [r2, 0x3] - adds r0, 0x1 - strb r0, [r2, 0x3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bls _0809500A - strb r1, [r2, 0x3] - ldrb r0, [r2, 0x2] - adds r0, 0x1 - strb r0, [r2, 0x2] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bls _0809500A - strb r1, [r2, 0x2] - ldrh r3, [r2] - movs r0, 0 - ldrsh r1, [r2, r0] - ldr r0, _08094FFC - cmp r1, r0 - bgt _08095000 - adds r0, r3, 0x1 - b _08095008 - .align 2, 0 -_08094FFC: .4byte 0x0000270e -_08095000: - movs r0, 0x3B - strb r0, [r2, 0x3] - strb r0, [r2, 0x2] - ldr r0, _08095010 -_08095008: - strh r0, [r2] -_0809500A: - pop {r0} - bx r0 - .align 2, 0 -_08095010: .4byte 0x0000270f - thumb_func_end sub_8094FB4 - - .align 2,0 diff --git a/include/save.h b/include/save.h index f507acc..37309cf 100644 --- a/include/save.h +++ b/include/save.h @@ -9,8 +9,8 @@ struct unkTimeStruct struct UnkStruct_203B184 { /* 0x0 */ u32 *unk0; /* 0x4 */ u32 *unk4; - /* 0x8 */ u32 *unk8; - /* 0xC */ u32 *unkC; + /* 0x8 */ u8 *unk8; + /* 0xC */ u8 *unkC; /* 0x10 */ u32 *unk10; /* 0x14 */ u32 *unk14; /* 0x18 */ u32 unk18; diff --git a/include/time.h b/include/time.h new file mode 100644 index 0000000..b052ea1 --- /dev/null +++ b/include/time.h @@ -0,0 +1,19 @@ +#ifndef TIME_H +#define TIME_H + +struct PlayTimeStruct +{ + s16 unk0; + u8 hours; + u8 minutes; + u8 seconds; +}; + +void sub_8094FB4(struct PlayTimeStruct *Time); +void ResetPlayTime(struct PlayTimeStruct *Time); +struct PlayTimeStruct *sub_8094FA0(void); +void sub_8094F88(void); + + +#endif // TIME_H + diff --git a/ld_script.txt b/ld_script.txt index 0fe08ad..aa0316c 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -123,8 +123,6 @@ SECTIONS { src/code_8092334.o(.text); asm/code_8092334.o(.text); src/code_8094F88.o(.text); - asm/code_8094F88.o(.text); - src/code_8095014.o(.text); asm/code_8095014.o(.text); src/code_8097F40.o(.text); asm/code_8097F40.o(.text); diff --git a/src/code_8094F88.c b/src/code_8094F88.c index 2a0e618..dea2561 100644 --- a/src/code_8094F88.c +++ b/src/code_8094F88.c @@ -1,35 +1,140 @@ #include "global.h" +#include "time.h" + +extern struct PlayTimeStruct *gUnknown_203B47C; +extern struct PlayTimeStruct gPlayTime; + +extern u8 gUnknown_2038C88; +extern u8 gUnknown_2039288; +extern u32 gUnknown_20392E8; +extern u32 gUnknown_20393C0; +extern u8 *gUnknown_203B480; +extern u8 *gUnknown_203B484; +extern u32 *gUnknown_203B488; +extern u32 *gUnknown_203B48C; -struct unkTimeStruct -{ - u16 unk0; - u8 unk2; - u8 unk3; - u8 unk4; -}; -extern struct unkTimeStruct *gUnknown_203B47C; -extern struct unkTimeStruct gPlayTime; +extern void sub_809488C(u32, u32, u32); +extern void sub_8094924(u32, u32, u32); + // Forward Declaration -void sub_8094FA8(struct unkTimeStruct *Time); +void ResetPlayTime(struct PlayTimeStruct *Time); void sub_8094F88(void) { gUnknown_203B47C = &gPlayTime; - sub_8094FA8(&gPlayTime); + ResetPlayTime(&gPlayTime); } -struct unkTimeStruct *sub_8094FA0(void) +struct PlayTimeStruct *sub_8094FA0(void) { return &gPlayTime; } -void sub_8094FA8(struct unkTimeStruct *Time) +void ResetPlayTime(struct PlayTimeStruct *Time) { - Time->unk4 = 0; - Time->unk3 = 0; - Time->unk2 = 0; + Time->seconds = 0; + Time->minutes = 0; + Time->hours = 0; Time->unk0 = 0; } + +void sub_8094FB4(struct PlayTimeStruct *Time) +{ + u16 temp_store16; + + Time->seconds++; + if(Time->seconds <= 59) + return; + Time->seconds = 0; + + Time->minutes++; + if(Time->minutes <= 59) + return; + Time->minutes = 0; + + Time->hours++; + if(Time->hours <= 59) + return; + Time->hours = 0; + + // ??? + temp_store16 = Time->unk0; + if(Time->unk0 <= 9998) + { + temp_store16++; + Time->unk0 = temp_store16; + } + else + { + Time->minutes = 59; + Time->hours = 59; + Time->unk0 = 9999; + } +} + +void sub_8095014(struct PlayTimeStruct *r0, u32 *r1, u32 *r2, u32 *r3) +{ + u32 temp; + if(r0->unk0 <= 9999) + { + *r1 = r0->unk0; + *r2 = r0->hours; + temp = r0->minutes; + } + else + { + *r1 = 9999; + *r2 = 59; + temp = 59; + } + *r3 = temp; +} + +void sub_8095044(u32 r0) +{ + sub_809488C(r0, (u32)(gUnknown_203B47C) + 4, 0x6); + sub_809488C(r0, (u32)(gUnknown_203B47C) + 3, 0x6); + sub_809488C(r0, (u32)(gUnknown_203B47C) + 2, 0x6); + sub_809488C(r0, (u32)(gUnknown_203B47C), 0xE); +} + +void sub_8095080(u32 r0) +{ + sub_8094924(r0, (u32)(gUnknown_203B47C) + 4, 0x6); + sub_8094924(r0, (u32)(gUnknown_203B47C) + 3, 0x6); + sub_8094924(r0, (u32)(gUnknown_203B47C) + 2, 0x6); + sub_8094924(r0, (u32)(gUnknown_203B47C), 0xE); +} + +void sub_80950BC(void) +{ + gUnknown_203B480 = &gUnknown_2038C88; + gUnknown_203B484 = &gUnknown_2039288; + gUnknown_203B488 = &gUnknown_20392E8; + gUnknown_203B48C = &gUnknown_20393C0; +} + +u8 *sub_80950F8(void) +{ + return &gUnknown_2038C88; +} + +u8 *sub_8095100(void) +{ + return &gUnknown_2039288; +} + +u32 *sub_8095108(void) +{ + return &gUnknown_20392E8; +} + +u32 *sub_8095110(void) +{ + return &gUnknown_20393C0; +} + + diff --git a/src/code_8095014.c b/src/code_8095014.c deleted file mode 100644 index 7f3fb05..0000000 --- a/src/code_8095014.c +++ /dev/null @@ -1,87 +0,0 @@ -#include "global.h" - -struct unk_8094FB4 -{ - s16 unk0; - u8 unk2; - u8 unk3; - u8 unk4; -}; - - -extern u32 *gUnknown_203B480; -extern u32 *gUnknown_203B484; -extern u32 *gUnknown_203B488; -extern u32 *gUnknown_203B48C; - -extern u32 gUnknown_203B47C; -extern u32 gUnknown_2038C88; -extern u32 gUnknown_2039288; -extern u32 gUnknown_20392E8; -extern u32 gUnknown_20393C0; - -extern void sub_809488C(u32, u32, u32); -extern void sub_8094924(u32, u32, u32); - -void sub_8095014(struct unk_8094FB4 *r0, u32 *r1, u32 *r2, u32 *r3) -{ - u32 temp; - if(r0->unk0 <= 0x270f) - { - *r1 = r0->unk0; - *r2 = r0->unk2; - temp = r0->unk3; - } - else - { - *r1 = 0x270f; - *r2 = 0x3B; - temp = 0x3B; - } - *r3 = temp; -} - -void sub_8095044(u32 r0) -{ - sub_809488C(r0, gUnknown_203B47C + 4, 0x6); - sub_809488C(r0, gUnknown_203B47C + 3, 0x6); - sub_809488C(r0, gUnknown_203B47C + 2, 0x6); - sub_809488C(r0, gUnknown_203B47C, 0xE); -} - -void sub_8095080(u32 r0) -{ - sub_8094924(r0, gUnknown_203B47C + 4, 0x6); - sub_8094924(r0, gUnknown_203B47C + 3, 0x6); - sub_8094924(r0, gUnknown_203B47C + 2, 0x6); - sub_8094924(r0, gUnknown_203B47C, 0xE); -} - -void sub_80950BC(void) -{ - gUnknown_203B480 = &gUnknown_2038C88; - gUnknown_203B484 = &gUnknown_2039288; - gUnknown_203B488 = &gUnknown_20392E8; - gUnknown_203B48C = &gUnknown_20393C0; -} - -u32 *sub_80950F8(void) -{ - return &gUnknown_2038C88; -} - -u32 *sub_8095100(void) -{ - return &gUnknown_2039288; -} - -u32 *sub_8095108(void) -{ - return &gUnknown_20392E8; -} - -u32 *sub_8095110(void) -{ - return &gUnknown_20393C0; -} - diff --git a/src/save_mid.c b/src/save_mid.c index ce1b378..13e9cbf 100644 --- a/src/save_mid.c +++ b/src/save_mid.c @@ -25,18 +25,18 @@ struct unk_struct extern struct unk_203B188 *gUnknown_203B188; -extern u32 *gUnknown_203B460; extern u32 *gUnknown_203B45C; -extern u32 *gUnknown_203B480; -extern u32 *gUnknown_203B484; +extern u32 *gUnknown_203B460; +extern u32 gUnknown_203B464; +extern u8 *gUnknown_203B468; +extern u32 gUnknown_203B46C; +extern u8 *gUnknown_203B480; +extern u8 *gUnknown_203B484; extern u32 *gUnknown_203B488; extern u32 *gUnknown_203B48C; extern u32 gUnknown_203B490; -extern u32 gUnknown_203B464; extern u32 gUnknown_203B494; extern u8 *gUnknown_203B498; -extern u8 *gUnknown_203B468; -extern u32 gUnknown_203B46C; extern void sub_800135C(void); extern u32 *sub_808CE00(void); @@ -49,8 +49,8 @@ extern u8 *sub_80923B0(void); extern void sub_80923B8(void); extern u32 sub_8094990(void); extern void sub_8094998(u8 r0); -extern u32 *sub_80950F8(void); -extern u32 *sub_8095100(void); +extern u8 *sub_80950F8(void); +extern u8 *sub_8095100(void); extern u32 *sub_8095108(void); extern u32 *sub_8095110(void); extern void sub_8095118(void); @@ -67,7 +67,7 @@ extern void sub_8011C40(s32 r0); extern void sub_8097748(void); -extern void sub_8094FA8(struct unkTimeStruct *Time); // defined in src/code_8094F88.c +extern void ResetPlayTime(struct unkTimeStruct *Time); // defined in src/code_8094F88.c extern struct unkTimeStruct *sub_8094FA0(void); extern void* MemoryAlloc(u32 a, u32 b); @@ -167,7 +167,7 @@ void sub_80122D0(void) sub_8011C28(0); sub_8011C40(-1); sub_8097748(); - sub_8094FA8(gUnknown_203B47C); + ResetPlayTime(gUnknown_203B47C); } void sub_80122F4(void) |