Decomp up to sub_803E830

This commit is contained in:
Seth Barberee
2024-08-09 08:45:41 -07:00
parent 2767ee285c
commit d774d6d6ec
2 changed files with 89 additions and 171 deletions

View File

@@ -5,176 +5,6 @@
.text
thumb_func_start sub_803E724
sub_803E724:
push {r4-r6,lr}
adds r4, r0, 0
ldr r5, _0803E744
movs r6, 0xF0
_0803E72C:
adds r0, r4, 0
bl sub_803E46C
ldrh r1, [r5]
adds r0, r6, 0
ands r0, r1
cmp r0, 0
bne _0803E72C
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0803E744: .4byte gRealInputs
thumb_func_end sub_803E724
thumb_func_start sub_803E748
sub_803E748:
push {r4,r5,lr}
movs r5, 0x1F
ldr r1, _0803E7B8
movs r0, 0x1
strb r0, [r1]
ldr r1, _0803E7BC
movs r0, 0
str r0, [r1]
movs r0, 0x1
movs r1, 0x1F
bl sub_803E874
movs r4, 0
_0803E762:
cmp r4, 0x1F
bgt _0803E780
subs r5, 0x2
cmp r5, 0
bgt _0803E780
movs r5, 0
movs r0, 0x1
movs r1, 0
bl sub_803EAF0
ldr r0, _0803E7C0
ldr r0, [r0]
ldr r1, _0803E7C4
adds r0, r1
strb r5, [r0]
_0803E780:
cmp r4, 0xB
ble _0803E790
ldr r1, _0803E7BC
ldr r0, [r1]
cmp r0, 0x1E
bgt _0803E790
adds r0, 0x1
str r0, [r1]
_0803E790:
movs r0, 0x1
adds r1, r5, 0
bl sub_803E874
movs r0, 0x5
bl sub_803E46C
adds r4, 0x1
cmp r4, 0x2B
ble _0803E762
ldr r1, _0803E7B8
movs r0, 0
strb r0, [r1]
ldr r1, _0803E7BC
movs r0, 0x1F
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803E7B8: .4byte gUnknown_203B40D
_0803E7BC: .4byte gUnknown_202EDC8
_0803E7C0: .4byte gDungeon
_0803E7C4: .4byte 0x00018217
thumb_func_end sub_803E748
thumb_func_start sub_803E7C8
sub_803E7C8:
push {r4,r5,lr}
movs r4, 0x1F
ldr r1, _0803E820
movs r0, 0x1
strb r0, [r1]
ldr r1, _0803E824
movs r0, 0
str r0, [r1]
movs r0, 0x5
bl sub_803E46C
movs r5, 0
_0803E7E0:
movs r0, 0x1
adds r1, r4, 0
bl sub_803E874
cmp r5, 0x1F
bgt _0803E806
subs r4, 0x2
cmp r4, 0
bgt _0803E806
movs r4, 0
movs r0, 0x1
movs r1, 0
bl sub_803EAF0
ldr r0, _0803E828
ldr r0, [r0]
ldr r1, _0803E82C
adds r0, r1
strb r4, [r0]
_0803E806:
movs r0, 0x5
bl sub_803E46C
adds r5, 0x1
cmp r5, 0x2B
ble _0803E7E0
ldr r1, _0803E820
movs r0, 0
strb r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803E820: .4byte gUnknown_203B40D
_0803E824: .4byte gUnknown_202EDC8
_0803E828: .4byte gDungeon
_0803E82C: .4byte 0x00018217
thumb_func_end sub_803E7C8
thumb_func_start sub_803E830
sub_803E830:
push {r4,r5,lr}
ldr r1, _0803E86C
movs r0, 0x1
strb r0, [r1]
ldr r5, _0803E870
movs r4, 0x1F
_0803E83C:
movs r0, 0
movs r1, 0
bl sub_803E874
movs r0, 0x5
bl sub_803E46C
ldr r0, [r5]
cmp r0, 0
ble _0803E854
subs r0, 0x1
str r0, [r5]
_0803E854:
subs r4, 0x1
cmp r4, 0
bge _0803E83C
ldr r0, _0803E870
movs r1, 0
str r1, [r0]
ldr r0, _0803E86C
strb r1, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803E86C: .4byte gUnknown_203B40D
_0803E870: .4byte gUnknown_202EDC8
thumb_func_end sub_803E830
thumb_func_start sub_803E874
sub_803E874:
push {r4-r7,lr}

View File

@@ -18,7 +18,7 @@
extern u8 gUnknown_203B40C;
extern u8 gUnknown_203B40D;
extern u32 gUnknown_202EDC8;
extern s32 gUnknown_202EDC8;
extern s32 gUnknown_202EDCC;
extern u32 gUnknown_202EDD0;
extern s32 gUnknown_202EDD4;
@@ -39,6 +39,8 @@ void sub_8042E5C();
void sub_8040B60();
void sub_8040788();
void sub_800F7D0(Position *);
void sub_803E874(s32, s32);
void sub_803EAF0(s32, s32);
void sub_803E46C(u32 a0)
{
@@ -152,3 +154,89 @@ void sub_803E708(s32 a0, u32 a1)
}
}
void sub_803E724(s32 r0)
{
do
{
sub_803E46C(r0);
} while (gRealInputs.held & 0xF0);
}
void sub_803E748(void) {
s32 index1;
s32 index2;
index2 = 0x1F;
gUnknown_203B40D = 1;
gUnknown_202EDC8 = 0;
sub_803E874(1, 0x1F);
for(index1 = 0; index1 < 0x2C; index1++)
{
if(index1 < 0x20)
{
index2 -= 2;
if(index2 <= 0)
{
index2 = 0;
sub_803EAF0(1, 0);
gDungeon->unk181e8.unk18217 = index2;
}
}
if(index1 > 0xB)
if(gUnknown_202EDC8 <= 0x1E)
gUnknown_202EDC8++;
sub_803E874(1, index2);
sub_803E46C(5);
}
gUnknown_203B40D = 0;
gUnknown_202EDC8 = 0x1F;
}
void sub_803E7C8(void)
{
s32 index1;
s32 index2;
index2 = 0x1F;
gUnknown_203B40D = 1;
gUnknown_202EDC8 = 0;
sub_803E46C(5);
for(index1 = 0; index1 < 0x2C; index1++)
{
sub_803E874(1, index2);
if(index1 < 0x20)
{
index2 -= 2;
if(index2 <= 0)
{
index2 = 0;
sub_803EAF0(1, 0);
gDungeon->unk181e8.unk18217 = index2;
}
}
sub_803E46C(5);
}
gUnknown_203B40D = 0;
}
void sub_803E830(void)
{
s32 index;
gUnknown_203B40D = 1;
for(index = 0; index < 0x20; index++)
{
sub_803E874(0, 0);
sub_803E46C(5);
if(gUnknown_202EDC8 > 0)
gUnknown_202EDC8--;
}
gUnknown_202EDC8 = 0;
gUnknown_203B40D = 0;
}