summaryrefslogtreecommitdiff
path: root/src/code_8094F88.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-03-30 13:11:51 -0500
committerGitHub <noreply@github.com>2021-03-30 13:11:51 -0500
commita2d206665c6fffbd962375f262b7fbb05c7b7478 (patch)
tree6710109c4d9098b74da68ca8f18024d6c184ebc2 /src/code_8094F88.c
parent2fd4f339b42c010191c199772b09ac34c580de94 (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.c212
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;
}
-
-