diff options
| author | theo <arisstephenson2@gmail.com> | 2020-06-11 17:58:56 -0700 |
|---|---|---|
| committer | theo <arisstephenson2@gmail.com> | 2020-06-11 17:58:56 -0700 |
| commit | 1d305716d5ff60410755d993c8ca5994d795aee5 (patch) | |
| tree | 4c2da0157bb7592779509278752a6912bcef13c0 /src | |
| parent | 6f91fbbdb9a2dbfda6f454386df4bf2f8a189213 (diff) | |
flag routine identification
Diffstat (limited to 'src')
| -rw-r--r-- | src/getProgressFlag.c | 6 | ||||
| -rw-r--r-- | src/greatFairy.c | 2 | ||||
| -rw-r--r-- | src/loadRoom.c | 4 | ||||
| -rw-r--r-- | src/mainLoop.c | 174 |
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 |
