mirror of https://github.com/zeldaret/tmc.git
Match MainLoop()
This commit is contained in:
parent
1cbdcf5a36
commit
acdc85a61d
|
@ -1,115 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
bl sub_08055F70
|
|
||||||
bl sub_080A3204
|
|
||||||
bl sub_0805616C
|
|
||||||
bl sub_0807CE90
|
|
||||||
bl sub_080560B8
|
|
||||||
bl sub_08056208
|
|
||||||
ldr r1, _08055EEC @ =gUnk_02000010
|
|
||||||
movs r0, #0xc1
|
|
||||||
strb r0, [r1, #4]
|
|
||||||
bl sub_0804FFE4
|
|
||||||
ldr r1, _08055EF0 @ =0x040000D4
|
|
||||||
movs r0, #0xa0
|
|
||||||
lsls r0, r0, #0x13
|
|
||||||
str r0, [r1]
|
|
||||||
ldr r0, _08055EF4 @ =gUnk_020176A0
|
|
||||||
str r0, [r1, #4]
|
|
||||||
ldr r0, _08055EF8 @ =0x84000080
|
|
||||||
str r0, [r1, #8]
|
|
||||||
ldr r0, [r1, #8]
|
|
||||||
movs r0, #1
|
|
||||||
bl sub_0804FF84
|
|
||||||
bl sub_08056418
|
|
||||||
bl sub_080ADD30
|
|
||||||
ldr r1, _08055EFC @ =gRand
|
|
||||||
ldr r0, _08055F00 @ =0x01234567
|
|
||||||
str r0, [r1]
|
|
||||||
ldr r4, _08055F04 @ =gUnk_03001000
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0x10
|
|
||||||
bl _DmaZero
|
|
||||||
movs r0, #0
|
|
||||||
bl sub_08056010
|
|
||||||
adds r6, r4, #0
|
|
||||||
_08055EC8:
|
|
||||||
bl ReadKeyInput
|
|
||||||
bl sub_08055FF4
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08055ED8
|
|
||||||
bl sub_080560A8
|
|
||||||
_08055ED8:
|
|
||||||
ldrb r0, [r6, #1]
|
|
||||||
ldr r1, _08055F04 @ =gUnk_03001000
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08055F08
|
|
||||||
cmp r0, #1
|
|
||||||
bne _08055F08
|
|
||||||
bl sub_08056260
|
|
||||||
b _08055F64
|
|
||||||
.align 2, 0
|
|
||||||
_08055EEC: .4byte gUnk_02000010
|
|
||||||
_08055EF0: .4byte 0x040000D4
|
|
||||||
_08055EF4: .4byte gUnk_020176A0
|
|
||||||
_08055EF8: .4byte 0x84000080
|
|
||||||
_08055EFC: .4byte gRand
|
|
||||||
_08055F00: .4byte 0x01234567
|
|
||||||
_08055F04: .4byte gUnk_03001000
|
|
||||||
_08055F08:
|
|
||||||
ldrb r0, [r1, #8]
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08055F22
|
|
||||||
ldr r4, _08055F34 @ =gUnk_03001000
|
|
||||||
movs r5, #0xff
|
|
||||||
_08055F12:
|
|
||||||
bl VBlankIntrWait
|
|
||||||
ldrb r0, [r4, #8]
|
|
||||||
subs r0, #1
|
|
||||||
strb r0, [r4, #8]
|
|
||||||
ands r0, r5
|
|
||||||
cmp r0, #0
|
|
||||||
bne _08055F12
|
|
||||||
_08055F22:
|
|
||||||
ldr r1, _08055F34 @ =gUnk_03001000
|
|
||||||
ldrb r0, [r1, #9]
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08055F44
|
|
||||||
subs r0, #1
|
|
||||||
strb r0, [r1, #9]
|
|
||||||
ldrb r4, [r1, #0xa]
|
|
||||||
b _08055F3C
|
|
||||||
.align 2, 0
|
|
||||||
_08055F34: .4byte gUnk_03001000
|
|
||||||
_08055F38:
|
|
||||||
bl VBlankIntrWait
|
|
||||||
_08055F3C:
|
|
||||||
adds r0, r4, #0
|
|
||||||
subs r4, #1
|
|
||||||
cmp r0, #0
|
|
||||||
bgt _08055F38
|
|
||||||
_08055F44:
|
|
||||||
ldrh r0, [r6, #0xc]
|
|
||||||
adds r0, #1
|
|
||||||
strh r0, [r6, #0xc]
|
|
||||||
ldr r1, _08055F6C @ =gUnk_08100CBC
|
|
||||||
ldrb r0, [r6, #2]
|
|
||||||
lsls r0, r0, #2
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r0, [r0]
|
|
||||||
bl _call_via_r0
|
|
||||||
bl sub_08056458
|
|
||||||
bl sub_08050154
|
|
||||||
bl sub_080A3480
|
|
||||||
_08055F64:
|
|
||||||
bl sub_08016E78
|
|
||||||
b _08055EC8
|
|
||||||
.align 2, 0
|
|
||||||
_08055F6C: .4byte gUnk_08100CBC
|
|
||||||
.syntax divided
|
|
|
@ -17,13 +17,16 @@ typedef struct { // 0x03001000
|
||||||
typedef struct {
|
typedef struct {
|
||||||
u8 interruptFlag;
|
u8 interruptFlag;
|
||||||
u8 field_0x1;
|
u8 field_0x1;
|
||||||
|
u8 loadType;
|
||||||
u8 funcIndex;
|
u8 funcIndex;
|
||||||
u8 field_0x3;
|
|
||||||
u8 transition;
|
u8 transition;
|
||||||
u8 field_0x5;
|
u8 field_0x5;
|
||||||
u8 muteAudio;
|
u8 muteAudio;
|
||||||
u8 field_0x8;
|
u8 field_0x7;
|
||||||
u8 countdown;
|
u8 countdown;
|
||||||
|
u8 field_0x9;
|
||||||
|
u8 field_0xa;
|
||||||
|
u16 ticks;
|
||||||
} Main;
|
} Main;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -43,27 +46,25 @@ extern UI gUnk_02032EC0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern s32 sub_08055F70();
|
extern void sub_08055F70(void);
|
||||||
extern s32 sub_080A3204(s32);
|
extern void sub_080A3204(void);
|
||||||
extern s32 sub_0807CE90(s32);
|
extern void sub_0807CE90(void);
|
||||||
extern s32 sub_080560B8(s32);
|
extern void sub_080560B8(void);
|
||||||
extern void sub_08056208(s32);
|
extern void sub_08056208(void);
|
||||||
extern void sub_0804FFE4();
|
extern void sub_0804FFE4(void);
|
||||||
extern s32 sub_08056418();
|
extern void sub_08056418(void);
|
||||||
extern void sub_080ADD30(s32);
|
extern void sub_080ADD30(void);
|
||||||
|
|
||||||
extern s32 sub_08056010(s32);
|
extern void sub_08056010(u32);
|
||||||
extern s32 sub_08016E78(s32);
|
extern void sub_08016E78(void);
|
||||||
extern s32 ReadKeyInput();
|
extern void ReadKeyInput(void);
|
||||||
extern s32 sub_08055FF4(u8);
|
extern u32 sub_08055FF4(void);
|
||||||
extern void sub_080560A8();
|
extern void sub_080560A8(void);
|
||||||
extern s32 sub_08056260();
|
extern void sub_08056260(void);
|
||||||
extern void VBlankIntrWait();
|
extern void VBlankIntrWait();
|
||||||
extern s32 _call_via_r0(s32);
|
extern s32 _call_via_r0(s32);
|
||||||
extern s32 sub_08056458(s32);
|
extern void sub_08056458(void);
|
||||||
extern s32 sub_08050154(s32);
|
extern void sub_08050154(void);
|
||||||
extern s32 sub_080A3480(s32);
|
extern void sub_080A3480(void);
|
||||||
|
|
||||||
extern s32 gRand;
|
|
||||||
extern s32 gUnk_08100CBC;
|
|
||||||
#endif
|
#endif
|
|
@ -25,6 +25,14 @@ typedef struct {
|
||||||
#define gUnk_02000000 ((struct_02000000*)(0x2000000))
|
#define gUnk_02000000 ((struct_02000000*)(0x2000000))
|
||||||
//extern struct_02000000 gUnk_02000000;
|
//extern struct_02000000 gUnk_02000000;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
u8 filler0[0x4];
|
||||||
|
u8 field_0x4;
|
||||||
|
u8 field_0x5;
|
||||||
|
} struct_02000010;
|
||||||
|
|
||||||
|
extern struct_02000010 gUnk_02000010;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/*0x000*/ u8 filler0[0x6];
|
/*0x000*/ u8 filler0[0x6];
|
||||||
/*0x006*/ u8 unk6;
|
/*0x006*/ u8 unk6;
|
||||||
|
|
|
@ -18,17 +18,10 @@ typedef struct {
|
||||||
|
|
||||||
extern struct_03000FD0 gUnk_03000FD0;
|
extern struct_03000FD0 gUnk_03000FD0;
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
u8 filler[5];
|
|
||||||
u8 field_0x5;
|
|
||||||
} struct_02000010;
|
|
||||||
|
|
||||||
extern struct_02000010 gUnk_02000010;
|
|
||||||
|
|
||||||
u32 IntroSetTransition(u32 transition)
|
u32 IntroSetTransition(u32 transition)
|
||||||
{
|
{
|
||||||
gUnk_02032EC0.transitionType = transition;
|
gUnk_02032EC0.transitionType = transition;
|
||||||
gUnk_03001000.field_0x3 = 2;
|
gUnk_03001000.funcIndex = 2;
|
||||||
_DmaZero((u32 *)&gMenu, 48);
|
_DmaZero((u32 *)&gMenu, 48);
|
||||||
DoFade(7, 8);
|
DoFade(7, 8);
|
||||||
}
|
}
|
||||||
|
@ -36,7 +29,7 @@ u32 IntroSetTransition(u32 transition)
|
||||||
void sub_080AD380()
|
void sub_080AD380()
|
||||||
{
|
{
|
||||||
sub_080AD90C();
|
sub_080AD90C();
|
||||||
switch (gUnk_03001000.field_0x3) {
|
switch (gUnk_03001000.funcIndex) {
|
||||||
case 0:
|
case 0:
|
||||||
sub_08056418();
|
sub_08056418();
|
||||||
_DmaZero(&gUnk_02032EC0, 0x3b4);
|
_DmaZero(&gUnk_02032EC0, 0x3b4);
|
||||||
|
@ -50,7 +43,7 @@ void sub_080AD380()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sub_0801DA90(1);
|
sub_0801DA90(1);
|
||||||
gUnk_03001000.field_0x3 = 1;
|
gUnk_03001000.funcIndex = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sub_080AD918();
|
sub_080AD918();
|
||||||
|
@ -112,7 +105,8 @@ void sub_080AD474(void)
|
||||||
gMenu.transitionTimer = 0x1e;
|
gMenu.transitionTimer = 0x1e;
|
||||||
gMenu.field_0x4 = 7;
|
gMenu.field_0x4 = 7;
|
||||||
EraseAllEntities();
|
EraseAllEntities();
|
||||||
sub_080ADD30(sub_0801CFA8(0));
|
sub_0801CFA8(0);
|
||||||
|
sub_080ADD30();
|
||||||
gUnk_02024490 = 1;
|
gUnk_02024490 = 1;
|
||||||
sub_0801D7EC(2);
|
sub_0801D7EC(2);
|
||||||
if (((struct_02000000*)0x2000000)->gameLanguage == 0) {
|
if (((struct_02000000*)0x2000000)->gameLanguage == 0) {
|
||||||
|
|
|
@ -1,58 +1,17 @@
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
#include "functions.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
#include "random.h"
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
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_0804FF84(u32);
|
||||||
extern void sub_08056418(void);
|
|
||||||
extern void sub_080ADD30(void);
|
|
||||||
extern void _DmaZero(void*, u32);
|
extern void _DmaZero(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 gUnk_020176A0;
|
||||||
extern u32 gRand;
|
extern const void (*gUnk_08100CBC[])();
|
||||||
extern MainStruct gUnk_03001000;
|
|
||||||
extern void (*gUnk_08100CBC[])();
|
|
||||||
extern void VBlankInterruptWait(void);
|
extern void VBlankInterruptWait(void);
|
||||||
|
|
||||||
void MainLoop(void) {
|
void MainLoop(void) {
|
||||||
bool32 codeInputted;
|
int var0;
|
||||||
u8 cVar1;
|
|
||||||
u32 uVar2;
|
|
||||||
MainStruct *s;
|
|
||||||
|
|
||||||
sub_08055F70();
|
sub_08055F70();
|
||||||
sub_080A3204();
|
sub_080A3204();
|
||||||
|
@ -60,49 +19,49 @@ void MainLoop(void) {
|
||||||
sub_0807CE90();
|
sub_0807CE90();
|
||||||
sub_080560B8();
|
sub_080560B8();
|
||||||
sub_08056208();
|
sub_08056208();
|
||||||
gUnk_02000014 = 193;
|
gUnk_02000010.field_0x4 = 193;
|
||||||
sub_0804FFE4();
|
sub_0804FFE4();
|
||||||
DmaSet(3, 0x5000000U, &gUnk_020176A0, 0x84000080U);
|
DmaSet(3, 0x5000000U, &gUnk_020176A0, 0x84000080U);
|
||||||
sub_0804FF84(1);
|
sub_0804FF84(1);
|
||||||
sub_08056418();
|
sub_08056418();
|
||||||
sub_080ADD30();
|
sub_080ADD30();
|
||||||
gRand = 0x1234567;
|
gRand = 0x1234567;
|
||||||
s = &gUnk_03001000;
|
_DmaZero(&gUnk_03001000, 16);
|
||||||
_DmaZero(s, 16);
|
|
||||||
sub_08056010(0);
|
sub_08056010(0);
|
||||||
while (1) {
|
while (1) {
|
||||||
ReadKeyInput();
|
ReadKeyInput();
|
||||||
codeInputted = sub_08055FF4();
|
if (sub_08055FF4()) {
|
||||||
if (codeInputted) {
|
|
||||||
sub_080560A8();
|
sub_080560A8();
|
||||||
}
|
}
|
||||||
if ((s->field_0x1 != 0) || (s->field_0x1 == 1)) {
|
|
||||||
|
switch (gUnk_03001000.field_0x1) {
|
||||||
|
case 1:
|
||||||
sub_08056260();
|
sub_08056260();
|
||||||
} else if (s->field_0x8 != 0) {
|
break;
|
||||||
while (--s->field_0x8) {
|
case 0:
|
||||||
VBlankInterruptWait();
|
default:
|
||||||
}
|
if (gUnk_03001000.countdown != 0) {
|
||||||
}
|
do {
|
||||||
if (s->countdown != 0) {
|
VBlankIntrWait();
|
||||||
s->countdown--;
|
} while (--gUnk_03001000.countdown);
|
||||||
uVar2 = s->field_0xa;
|
}
|
||||||
while (uVar2 > 0) {
|
|
||||||
|
if (gUnk_03001000.field_0x9 != 0) {
|
||||||
|
gUnk_03001000.field_0x9--;
|
||||||
|
var0 = gUnk_03001000.field_0xa;
|
||||||
|
while (var0-- > 0) {
|
||||||
VBlankIntrWait();
|
VBlankIntrWait();
|
||||||
uVar2--;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
s->ticks++;
|
|
||||||
gUnk_08100CBC[s->loadType]();
|
gUnk_03001000.ticks++;
|
||||||
|
gUnk_08100CBC[gUnk_03001000.loadType]();
|
||||||
sub_08056458();
|
sub_08056458();
|
||||||
sub_08050154();
|
sub_08050154();
|
||||||
sub_080A3480();
|
sub_080A3480();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub_08016E78();
|
sub_08016E78();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
NAKED
|
|
||||||
void MainLoop(void) {
|
|
||||||
asm(".include \"asm/non_matching/mainLoop.inc\"");
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue