summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortheo <arisstephenson2@gmail.com>2020-06-11 17:58:56 -0700
committertheo <arisstephenson2@gmail.com>2020-06-11 17:58:56 -0700
commit1d305716d5ff60410755d993c8ca5994d795aee5 (patch)
tree4c2da0157bb7592779509278752a6912bcef13c0 /src
parent6f91fbbdb9a2dbfda6f454386df4bf2f8a189213 (diff)
flag routine identification
Diffstat (limited to 'src')
-rw-r--r--src/getProgressFlag.c6
-rw-r--r--src/greatFairy.c2
-rw-r--r--src/loadRoom.c4
-rw-r--r--src/mainLoop.c174
4 files changed, 111 insertions, 75 deletions
diff --git a/src/getProgressFlag.c b/src/getProgressFlag.c
index 200167f4..fe9197fd 100644
--- a/src/getProgressFlag.c
+++ b/src/getProgressFlag.c
@@ -1,7 +1,7 @@
#include "global.h"
-u32 extern GetProgressFlagWithOffset(u32, u32);
+u32 extern CheckLocalFlagByOffset(u32, u32);
-u32 GetProgressFlag (u32 index) {
- return GetProgressFlagWithOffset(0, index);
+u32 CheckGlobalFlag (u32 index) {
+ return CheckLocalFlagByOffset(0, index);
} \ No newline at end of file
diff --git a/src/greatFairy.c b/src/greatFairy.c
index bd5c8aef..df4a2b00 100644
--- a/src/greatFairy.c
+++ b/src/greatFairy.c
@@ -49,7 +49,7 @@ void sub_08086B10(Entity *ent)
Entity *ripple; // r5@16
u32 event;
- event = sub_0807CC3C(0);
+ event = CheckRoomFlag(0);
if (event == 0) {
return;
}
diff --git a/src/loadRoom.c b/src/loadRoom.c
index 9ef70edc..c2eedb70 100644
--- a/src/loadRoom.c
+++ b/src/loadRoom.c
@@ -2,7 +2,7 @@
/* called when loading any room */
void LoadRoomEntityList();
- s32 GetProgressFlag(u32 flag);
+ s32 CheckGlobalFlag(u32 flag);
extern s32* sub_0804B128(u8 unk);
extern void sub_0804B058(s32 *unk);
extern void sub_0804B1AC();
@@ -20,7 +20,7 @@ void LoadRoom(void)
sub_0804B128(0);
LoadRoomEntityList();
- iVar1 = GetProgressFlag(21);
+ iVar1 = CheckGlobalFlag(21);
if (iVar1 != 0) {
dat = sub_0804B128(2);
sub_0804B058(dat);
diff --git a/src/mainLoop.c b/src/mainLoop.c
index e4fb08b8..858f5249 100644
--- a/src/mainLoop.c
+++ b/src/mainLoop.c
@@ -1,76 +1,112 @@
-/*
#include "global.h"
#include "mainLoop.h"
+#ifdef NON_MATCHING
-void MainLoop()
+typedef struct {
+ u8 interruptFlag;
+ u8 field_0x1;
+ u8 loadType;
+ u8 funcIndex;
+ u8 transition;
+ u16 field_0x5;
+ u8 muteAudio;
+ u8 field_0x8;
+ u8 countdown;
+ u8 field_0xa;
+ u8 field_0xb;
+ u16 ticks;
+ u8 field_0xe;
+ u8 field_0xf;
+} MainStruct;
+
+extern void sub_08055F70(void);
+extern void sub_080A3204(void);
+extern void sub_0805616C(void);
+extern void sub_0807CE90(void);
+extern void sub_080560B8(void);
+extern void sub_08056208(void);
+extern void sub_0804FFE4(void);
+extern void sub_0804FF84(u32);
+extern void sub_08056418(void);
+extern void sub_080ADD30(void);
+extern void sub_0801D630(void *,u32);
+extern void sub_08056010(u32);
+extern void ReadKeyInput();
+extern u32 sub_08055FF4();
+extern void sub_080560A8(void);
+extern void sub_08056458(void);
+extern void sub_08050154(void);
+extern void sub_080A3480(void);
+extern void sub_08016E78(void);
+extern void sub_08056260(void);
+
+extern u8 gUnk_02000014;
+extern u32 gUnk_020176A0;
+extern u32 gRand;
+extern MainStruct gUnk_03001000;
+extern void (* gUnk_08100CBC[])();
+extern void VBlankInterruptWait(void);
+
+void MainLoop(void)
{
- s32 v0; // r0@1
- s32 v1; // r0@1
- s32 v2; // r0@1
- s32 v3; // r0@1
- s32 v4; // r0@1
- s32 v5; // r0@1
- s32 v6; // r0@1
- s32 i; // r0@1
- s32 v8; // r0@2
- s32 v9; // r0@6
- s32 v10; // r4@10
- s32 v11; // r0@12
- s32 v12; // r0@13
- s32 v13; // r0@13
- s32 v14; // r0@13
- s32 * v15;
- u32 in_r2;
-
- v0 = sub_08055F70();
- v1 = sub_080A3204(v0);
- v2 = sub_0805616C(v1);
- v3 = sub_0807CE90(v2);
- v4 = sub_080560B8(v3);
- sub_08056208(v4);
-
- v15 = &gUnk_02000010;
- *(u8 *)(v15 + 1) = 193;
- sub_0804FFE4();
- DmaSet(3, 83886080, 33650336, -2080374656);
- v5 = sub_0804FF84(1);
- v6 = sub_08056418(v5);
- sub_080ADD30(v6);
- gRand = 19088743;
- v9 = sub_0801D630(50335744, in_r2, 16);
- for ( i = sub_08056010(0); ; i = sub_08016E78(v9) )
- {
- v8 = ReadKeyInput();
- if ( sub_08055FF4(v8) )
- sub_080560A8();
- if ( gUnk_03001000.field_0x1 && gUnk_03001000.field_0x1 == 1 )
- {
- v9 = sub_08056260();
- }
- else
- {
- for ( ; gUnk_03001000.field_0x8; --gUnk_03001000.field_0x8 )
- VBlankIntrWait();
- if ( gUnk_03001000.field_0x9 )
- {
- --gUnk_03001000.field_0x9;
- v10 = gUnk_03001000.field_0xa;
- while ( 1 )
- {
- v11 = v10--;
- if ( v11 <= 0 )
- break;
- VBlankIntrWait();
+ bool32 codeInputted;
+ u8 cVar1;
+ u32 uVar2;
+
+ sub_08055F70();
+ sub_080A3204();
+ sub_0805616C();
+ sub_0807CE90();
+ sub_080560B8();
+ sub_08056208();
+ gUnk_02000014 = 193;
+ sub_0804FFE4();
+ DmaSet(3, 0x5000000U, &gUnk_020176A0, 0x84000080U);
+ sub_0804FF84(1);
+ sub_08056418();
+ sub_080ADD30();
+ gRand = 0x1234567;
+ sub_0801D630(&gUnk_03001000,16);
+ sub_08056010(0);
+ do {
+ ReadKeyInput();
+ codeInputted = sub_08055FF4();
+ if (codeInputted) {
+ sub_080560A8();
+ }
+ if ((gUnk_03001000.field_0x1 == 0) || (gUnk_03001000.field_0x1 != 1)) {
+ if (gUnk_03001000.field_0x8 != '\0') {
+ while (codeInputted) {
+ VBlankInterruptWait();
+ cVar1 = gUnk_03001000.field_0x8 + -1;
+ codeInputted = gUnk_03001000.field_0x8 != '\x01';
+ gUnk_03001000.field_0x8 = cVar1;
+ }
+ }
+ if (gUnk_03001000.countdown != '\0') {
+ gUnk_03001000.countdown = gUnk_03001000.countdown + -1;
+ uVar2 = gUnk_03001000.field_0xa;
+ while (0 < uVar2) {
+ VBlankIntrWait();
+ uVar2 = uVar2 - 1;
+ }
+ }
+ gUnk_03001000.ticks = gUnk_03001000.ticks + 1;
+ gUnk_08100CBC[gUnk_03001000.loadType]();
+ sub_08056458();
+ sub_08050154();
+ sub_080A3480();
}
- }
- ++gUnk_03001000.ticks;
- v12 = _call_via_r0((u32)*(&gUnk_08100CBC + gUnk_03001000.field_0x2));
- v13 = sub_08056458(v12);
- v14 = sub_08050154(v13);
- v9 = sub_080A3480(v14);
- }
- }
+ else {
+ sub_08056260();
+ }
+ sub_08016E78();
+ } while( TRUE );
}
-
- */ \ No newline at end of file
+#else
+NAKED
+void MainLoop(void) {
+ asm(".include \"asm/non_matching/mainLoop.inc\"");
+}
+#endif \ No newline at end of file