diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2021-03-30 13:11:51 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-30 13:11:51 -0500 |
commit | a2d206665c6fffbd962375f262b7fbb05c7b7478 (patch) | |
tree | 6710109c4d9098b74da68ca8f18024d6c184ebc2 /src/code_8094F88.c | |
parent | 2fd4f339b42c010191c199772b09ac34c580de94 (diff) |
Move some data and Splitting (#32)
* move friend area settings to src
* split out playtime into different C file and decomp a few more funcs
* time -> play_time
* fix include
* split out more wonder mail stuff
* unify 203B2C0 and unkDungeon structs. snuck in a decomp func too
* split out more menu screens
* work some more on trade items
* doc a few more things
* add a close nonmatch and decomp nullsub and small func
* rollback struct attempt since it causes nonmatchings
* only one func left in asm
* death to trade_item asm and unify into one C file
* more docing and cleanup
* label main menu and trade items menu global menu struct
* doc itemMode
Diffstat (limited to 'src/code_8094F88.c')
-rw-r--r-- | src/code_8094F88.c | 212 |
1 files changed, 119 insertions, 93 deletions
diff --git a/src/code_8094F88.c b/src/code_8094F88.c index d3ed115..5bd3a29 100644 --- a/src/code_8094F88.c +++ b/src/code_8094F88.c @@ -1,134 +1,160 @@ #include "global.h" -#include "time.h" +#include "memory.h" -extern struct PlayTimeStruct *gPlayTimeRef; -extern struct PlayTimeStruct gPlayTime; +struct unkStruct_203B480 +{ + //size of 48 + u8 unk0; + u8 fill1[0x22 - 1]; + u8 unk22; + u8 fill23[0x2D - 0x23]; + u8 unk2D; +}; + +struct unkStruct_203B48C +{ + s32 unk0; + s32 unk4[0x20]; +}; -extern u8 gUnknown_2038C88; +extern struct unkStruct_203B480 gUnknown_2038C88; extern u8 gUnknown_2039288; extern u32 gUnknown_20392E8; -extern u32 gUnknown_20393C0; -extern u8 *gUnknown_203B480; +extern struct unkStruct_203B48C gUnknown_20393C0; extern u8 *gUnknown_203B484; extern u32 *gUnknown_203B488; -extern u32 *gUnknown_203B48C; -extern void sub_809488C(u8 *r0, u8 *r1, u32); -extern void sub_8094924(u8 *r0, u8 *r1, u32); +extern struct unkStruct_203B480 *gUnknown_203B480; +extern struct unkStruct_203B48C *gUnknown_203B48C; // def a pointer -void InitializePlayTime(void) -{ - gPlayTimeRef = &gPlayTime; - ResetPlayTime(&gPlayTime); -} -struct PlayTimeStruct *GetPlayTime(void) +void sub_80950BC(void) { - return &gPlayTime; + gUnknown_203B480 = &gUnknown_2038C88; + gUnknown_203B484 = &gUnknown_2039288; + gUnknown_203B488 = &gUnknown_20392E8; + gUnknown_203B48C = &gUnknown_20393C0; } -void ResetPlayTime(struct PlayTimeStruct *Time) +struct unkStruct_203B480 *sub_80950F8(void) { - Time->frames = 0; - Time->seconds = 0; - Time->minutes = 0; - Time->hours = 0; + return &gUnknown_2038C88; } -void IncrementPlayTime(struct PlayTimeStruct *Time) +u8 *sub_8095100(void) { - u16 temp_store16; - - Time->frames++; - if(Time->frames <= 59) - return; - Time->frames = 0; - - Time->seconds++; - if(Time->seconds <= 59) - return; - Time->seconds = 0; - - Time->minutes++; - if(Time->minutes <= 59) - return; - Time->minutes = 0; - - // Casting here for unsigned comparison - temp_store16 = Time->hours; - if(Time->hours <= 9998) - { - temp_store16++; - Time->hours = temp_store16; - } - else - { - Time->seconds = 59; - Time->minutes = 59; - Time->hours= 9999; - } + return &gUnknown_2039288; } -void DeconstructPlayTime(struct PlayTimeStruct *r0, u32 *outHours, u32 *outMinutes, u32 *outSeconds) +u32 *sub_8095108(void) { - if(r0->hours <= 9999) - { - *outHours = r0->hours; - *outMinutes = r0->minutes; - *outSeconds = r0->seconds; - } - else - { - *outHours = 9999; - *outMinutes = 59; - *outSeconds = 59; - } + return &gUnknown_20392E8; } -void sub_8095044(u8 *r0) +struct unkStruct_203B48C *sub_8095110(void) { - sub_809488C(r0, (&(gPlayTimeRef->frames)), 6); - sub_809488C(r0, (&(gPlayTimeRef->seconds)), 6); - sub_809488C(r0, (&(gPlayTimeRef->minutes)), 6); - sub_809488C(r0, (u8 *)(&(gPlayTimeRef->hours)), 14); + return &gUnknown_20393C0; } -void sub_8095080(u8 *r0) -{ - sub_8094924(r0, (&(gPlayTimeRef->frames)), 6); - sub_8094924(r0, (&(gPlayTimeRef->seconds)), 6); - sub_8094924(r0, (&(gPlayTimeRef->minutes)), 6); - sub_8094924(r0, (u8 *)(&(gPlayTimeRef->hours)), 14); -} -void sub_80950BC(void) +#ifdef NONMATCHING +void sub_8095118(void) { - gUnknown_203B480 = &gUnknown_2038C88; - gUnknown_203B484 = &gUnknown_2039288; - gUnknown_203B488 = &gUnknown_20392E8; - gUnknown_203B48C = &gUnknown_20393C0; + int iVar1; + + MemoryFill8((u8*)gUnknown_203B480,0,0x600); + MemoryFill8(gUnknown_203B484,0,0x5c); + for(iVar1 = 0; iVar1 < 0x20; iVar1++){ + // NOTE: when it adds the index regs flip + // Instead of add r0, r0, r1 -> add r0, r1, r0 + // Everything else matches... + gUnknown_203B480[iVar1].unk0 = 0; + gUnknown_203B480[iVar1].unk22 = 0; + gUnknown_203B480[iVar1].unk2D = 0; + } + gUnknown_203B48C->unk0 = 0; + for(iVar1 = 0; iVar1 < 0x20; iVar1++){ + gUnknown_203B48C->unk4[iVar1] = -1; + } } - -u8 *sub_80950F8(void) +#else +NAKED +void sub_8095118(void) { - return &gUnknown_2038C88; + asm_unified("\tpush {r4,lr}\n" + "\tldr r4, _0809517C\n" + "\tldr r0, [r4]\n" + "\tmovs r2, 0xC0\n" + "\tlsls r2, 3\n" + "\tmovs r1, 0\n" + "\tbl MemoryFill8\n" + "\tldr r0, _08095180\n" + "\tldr r0, [r0]\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0x5C\n" + "\tbl MemoryFill8\n" + "\tmovs r2, 0\n" + "\tmovs r1, 0\n" + "\tmovs r3, 0x1F\n" +"_0809513A:\n" + "\tldr r0, [r4]\n" + "\tadds r0, r1\n" + "\tstrb r2, [r0]\n" + "\tldr r0, [r4]\n" + "\tadds r0, r1\n" + "\tadds r0, 0x22\n" + "\tstrb r2, [r0]\n" + "\tldr r0, [r4]\n" + "\tadds r0, r1\n" + "\tadds r0, 0x2D\n" + "\tstrb r2, [r0]\n" + "\tadds r1, 0x30\n" + "\tsubs r3, 0x1\n" + "\tcmp r3, 0\n" + "\tbge _0809513A\n" + "\tldr r2, _08095184\n" + "\tldr r1, [r2]\n" + "\tmovs r0, 0\n" + "\tstr r0, [r1]\n" + "\tmovs r3, 0\n" + "\tmovs r4, 0x1\n" + "\tnegs r4, r4\n" +"_08095166:\n" + "\tldr r0, [r2]\n" + "\tlsls r1, r3, 2\n" + "\tadds r0, 0x4\n" + "\tadds r0, r1\n" + "\tstr r4, [r0]\n" + "\tadds r3, 0x1\n" + "\tcmp r3, 0x1F\n" + "\tble _08095166\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_0809517C: .4byte gUnknown_203B480\n" +"_08095180: .4byte gUnknown_203B484\n" +"_08095184: .4byte gUnknown_203B48C"); } +#endif -u8 *sub_8095100(void) +void nullsub_206(void) { - return &gUnknown_2039288; } -u32 *sub_8095108(void) +void nullsub_207(void) { - return &gUnknown_20392E8; } -u32 *sub_8095110(void) +s32 sub_8095190(void) { - return &gUnknown_20393C0; + int index; + + for(index = 2; index < 0x20; index++){ + if(gUnknown_203B480[index].unk0 == 0) + return index; + } + return -1; } - - |