through sub_80C1058

This commit is contained in:
PikalaxALT
2020-01-03 10:22:37 -05:00
parent 3535cf2ebc
commit 20c5160bf7
3 changed files with 98 additions and 266 deletions
-260
View File
@@ -5,266 +5,6 @@
.text
thumb_func_start sub_80C0E70
sub_80C0E70: @ 80C0E70
push {r4-r7,lr}
adds r7, r2, 0
lsls r0, 24
lsrs r6, r0, 24
lsls r1, 24
lsrs r5, r1, 24
ldr r4, _080C0EA0 @ =gUnknown_20399D8
movs r0, 0xE7
lsls r0, 5
bl AllocZeroed
str r0, [r4]
ldr r0, _080C0EA4 @ =0x00000846
bl FlagGet
lsls r0, 24
cmp r0, 0
beq _080C0EAC
ldr r0, [r4]
ldr r1, _080C0EA8 @ =0x00001ccc
adds r0, r1
movs r1, 0x3
b _080C0ED2
.align 2, 0
_080C0EA0: .4byte gUnknown_20399D8
_080C0EA4: .4byte 0x00000846
_080C0EA8: .4byte 0x00001ccc
_080C0EAC:
ldr r0, _080C0EC4 @ =0x00000845
bl FlagGet
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _080C0ECC
ldr r0, [r4]
ldr r2, _080C0EC8 @ =0x00001ccc
adds r0, r2
movs r1, 0x1
b _080C0ED2
.align 2, 0
_080C0EC4: .4byte 0x00000845
_080C0EC8: .4byte 0x00001ccc
_080C0ECC:
ldr r0, [r4]
ldr r3, _080C0F14 @ =0x00001ccc
adds r0, r3
_080C0ED2:
strb r1, [r0]
ldr r4, _080C0F18 @ =gUnknown_20399D8
ldr r2, [r4]
ldr r0, _080C0F1C @ =0x000018b8
adds r1, r2, r0
movs r0, 0x58
strh r0, [r1]
ldr r3, _080C0F20 @ =0x00001cc4
adds r1, r2, r3
movs r0, 0x98
strh r0, [r1]
ldr r1, _080C0F14 @ =0x00001ccc
adds r0, r2, r1
ldrb r0, [r0]
cmp r0, 0x2
beq _080C0F2C
cmp r0, 0x2
bgt _080C0F4C
cmp r0, 0x1
bne _080C0F4C
ldr r0, _080C0F24 @ =gUnknown_83F1084
movs r3, 0x80
lsls r3, 5
adds r1, r2, r3
bl LZ77UnCompWram
ldr r0, [r4]
ldr r1, _080C0F28 @ =0x00001cce
adds r0, r1
movs r1, 0x6
strh r1, [r0]
b _080C0F64
.align 2, 0
_080C0F14: .4byte 0x00001ccc
_080C0F18: .4byte gUnknown_20399D8
_080C0F1C: .4byte 0x000018b8
_080C0F20: .4byte 0x00001cc4
_080C0F24: .4byte gUnknown_83F1084
_080C0F28: .4byte 0x00001cce
_080C0F2C:
ldr r0, _080C0F44 @ =gUnknown_83F1190
movs r3, 0x80
lsls r3, 5
adds r1, r2, r3
bl LZ77UnCompWram
ldr r0, [r4]
ldr r1, _080C0F48 @ =0x00001cce
adds r0, r1
movs r1, 0x4
strh r1, [r0]
b _080C0F64
.align 2, 0
_080C0F44: .4byte gUnknown_83F1190
_080C0F48: .4byte 0x00001cce
_080C0F4C:
ldr r0, _080C0FB4 @ =gUnknown_20399D8
ldr r1, [r0]
ldr r3, _080C0FB8 @ =0x00001cce
adds r2, r1, r3
movs r0, 0x3
strh r0, [r2]
ldr r0, _080C0FBC @ =gUnknown_83F0F1C
movs r2, 0x80
lsls r2, 5
adds r1, r2
bl LZ77UnCompWram
_080C0F64:
ldr r0, _080C0FC0 @ =gUnknown_83F0580
ldr r4, _080C0FB4 @ =gUnknown_20399D8
ldr r1, [r4]
bl LZ77UnCompWram
ldr r0, [r4]
ldr r3, _080C0FC4 @ =0x00001cc8
adds r0, r3
movs r1, 0
strb r1, [r0]
ldr r0, [r4]
ldr r1, _080C0FC8 @ =0x00001cca
adds r0, r1
strb r6, [r0]
ldr r0, [r4]
ldr r2, _080C0FCC @ =0x00001cd0
adds r0, r2
str r7, [r0]
bl sub_80C0E34
ldr r1, [r4]
ldr r3, _080C0FD0 @ =0x00001ccb
adds r1, r3
strb r0, [r1]
movs r0, 0
bl sub_80C4AAC
ldr r0, _080C0FD4 @ =gUnknown_8418EB0
bl sub_80C4E74
ldr r1, _080C0FD8 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
ldr r1, _080C0FDC @ =sub_80C1098
str r1, [r0]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080C0FB4: .4byte gUnknown_20399D8
_080C0FB8: .4byte 0x00001cce
_080C0FBC: .4byte gUnknown_83F0F1C
_080C0FC0: .4byte gUnknown_83F0580
_080C0FC4: .4byte 0x00001cc8
_080C0FC8: .4byte 0x00001cca
_080C0FCC: .4byte 0x00001cd0
_080C0FD0: .4byte 0x00001ccb
_080C0FD4: .4byte gUnknown_8418EB0
_080C0FD8: .4byte gTasks
_080C0FDC: .4byte sub_80C1098
thumb_func_end sub_80C0E70
thumb_func_start sub_80C0FE0
sub_80C0FE0: @ 80C0FE0
push {lr}
bl sub_80C4BE4
movs r0, 0x1B
movs r1, 0x4
movs r2, 0x40
bl sub_80C4C2C
ldr r0, _080C100C @ =gUnknown_20399D8
ldr r0, [r0]
ldr r1, _080C1010 @ =0x00001ccd
adds r0, r1
ldrb r1, [r0]
movs r0, 0x10
subs r0, r1
lsls r0, 16
lsrs r0, 16
bl sub_80C4C5C
pop {r0}
bx r0
.align 2, 0
_080C100C: .4byte gUnknown_20399D8
_080C1010: .4byte 0x00001ccd
thumb_func_end sub_80C0FE0
thumb_func_start sub_80C1014
sub_80C1014: @ 80C1014
push {r4,lr}
ldr r4, _080C1028 @ =gUnknown_20399D8
ldr r0, [r4]
ldr r2, _080C102C @ =0x00001ccd
adds r1, r0, r2
ldrb r0, [r1]
cmp r0, 0xF
bls _080C1030
movs r0, 0x1
b _080C104C
.align 2, 0
_080C1028: .4byte gUnknown_20399D8
_080C102C: .4byte 0x00001ccd
_080C1030:
ldrb r1, [r1]
movs r0, 0x10
subs r0, r1
lsls r0, 16
lsrs r0, 16
bl sub_80C4C5C
ldr r1, [r4]
ldr r0, _080C1054 @ =0x00001ccd
adds r1, r0
ldrb r0, [r1]
adds r0, 0x2
strb r0, [r1]
movs r0, 0
_080C104C:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080C1054: .4byte 0x00001ccd
thumb_func_end sub_80C1014
thumb_func_start sub_80C1058
sub_80C1058: @ 80C1058
push {lr}
ldr r2, _080C106C @ =gUnknown_20399D8
ldr r0, [r2]
ldr r3, _080C1070 @ =0x00001ccd
adds r1, r0, r3
ldrb r0, [r1]
cmp r0, 0x1
bhi _080C1074
movs r0, 0x1
b _080C108E
.align 2, 0
_080C106C: .4byte gUnknown_20399D8
_080C1070: .4byte 0x00001ccd
_080C1074:
subs r0, 0x2
strb r0, [r1]
ldr r0, [r2]
ldr r1, _080C1094 @ =0x00001ccd
adds r0, r1
ldrb r1, [r0]
movs r0, 0x10
subs r0, r1
lsls r0, 16
lsrs r0, 16
bl sub_80C4C5C
movs r0, 0
_080C108E:
pop {r1}
bx r1
.align 2, 0
_080C1094: .4byte 0x00001ccd
thumb_func_end sub_80C1058
thumb_func_start sub_80C1098
sub_80C1098: @ 80C1098
push {r4,r5,lr}
+2 -2
View File
@@ -1007,8 +1007,8 @@ extern const u8 gText_LinkCableBattles[];
extern const u8 gUnknown_8418EB5[];
extern const u8 gUnknown_8418E8B[];
extern const u8 gUnknown_8418E8D[];
extern const u8 gUnknown_8418E8B[];
extern const u8 gUnknown_8418EA7[];
extern const u8 gUnknown_8418E95[];
extern const u8 gUnknown_8418EA7[];
extern const u8 gUnknown_8418EB0[];
#endif //GUARD_STRINGS_H
+96 -4
View File
@@ -41,13 +41,27 @@ struct UnkStruct_20399D4
u8 filler_47B2[6];
TaskFunc field_47B8;
MainCallback field_47BC;
};
}; // size = 0x47C0
struct UnkStruct_20399D8
{
u8 filler_0000[0x1CCA];
u8 field_0000[0x1000];
u8 field_1000[0x4B0];
u8 filler_14B0[0x408];
u16 field_18B8;
u8 filler_18BA[0x40A];
u16 field_1CC4;
u8 filler_1CC6[0x2];
u8 field_1CC8;
u8 field_1CC9;
u8 field_1CCA;
};
u8 field_1CCB;
u8 field_1CCC;
u8 field_1CCD;
u16 field_1CCE;
TaskFunc field_1CD0;
u8 filler_1CD4[0xC];
}; // size = 0x1CE0
EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL;
EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL;
@@ -77,9 +91,12 @@ void sub_80C0AB8(void);
void sub_80C0B18(void);
void sub_80C0B9C(void);
void sub_80C0BB0(void);
void sub_80C1098(u8 taskId);
void sub_80C4AAC(u8 a0);
void sub_80C4BE4(void);
void sub_80C4C2C(u8 a0, u16 a1, u16 a2);
void sub_80C4C48(u16 a0);
void sub_80C4C5C(u16 a0);
void sub_80C4C74(u16 a0, u16 a1);
void sub_80C4C88(u16 a0);
void sub_80C4C9C(u8 a0, u8 a1);
@@ -117,14 +134,17 @@ u16 sub_80C3514(void);
u16 sub_80C3580(void);
#include "data/text/map_section_names.h"
extern const u16 gUnknown_83EF23C[];
extern const u16 gUnknown_83EF2DC[];
extern const u32 gUnknown_83EF61C[];
extern const u32 gUnknown_83F0580[];
extern const u32 gUnknown_83F089C[];
extern const u32 gUnknown_83F0AFC[];
extern const u32 gUnknown_83F0C0C[];
extern const u32 gUnknown_83F0CF0[];
extern const u32 gUnknown_83F0F1C[];
extern const u32 gUnknown_83F1084[];
extern const u32 gUnknown_83F1190[];
extern const u32 gUnknown_83F1978[];
extern const u32 gUnknown_83F19A0[];
extern const struct BgTemplate gUnknown_83F1A50[4];
@@ -751,3 +771,75 @@ void sub_80C0E5C(u8 a0)
{
gUnknown_20399D4->field_479C = a0;
}
void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc)
{
gUnknown_20399D8 = AllocZeroed(sizeof(struct UnkStruct_20399D8));
if (FlagGet(FLAG_SYS_SEVII_MAP_4567))
gUnknown_20399D8->field_1CCC = 3;
else if (FlagGet(FLAG_SYS_SEVII_MAP_123))
gUnknown_20399D8->field_1CCC = 1;
else
gUnknown_20399D8->field_1CCC = 0;
gUnknown_20399D8->field_18B8 = 0x58;
gUnknown_20399D8->field_1CC4 = 0x98;
switch (gUnknown_20399D8->field_1CCC)
{
case 1:
LZ77UnCompWram(gUnknown_83F1084, gUnknown_20399D8->field_1000);
gUnknown_20399D8->field_1CCE = 6;
break;
case 2: // never reached
LZ77UnCompWram(gUnknown_83F1190, gUnknown_20399D8->field_1000);
gUnknown_20399D8->field_1CCE = 4;
break;
case 3:
default:
gUnknown_20399D8->field_1CCE = 3;
LZ77UnCompWram(gUnknown_83F0F1C, gUnknown_20399D8->field_1000);
break;
}
LZ77UnCompWram(gUnknown_83F0580, gUnknown_20399D8->field_0000);
gUnknown_20399D8->field_1CC8 = 0;
gUnknown_20399D8->field_1CCA = a0;
gUnknown_20399D8->field_1CD0 = taskFunc;
gUnknown_20399D8->field_1CCB = sub_80C0E34();
sub_80C4AAC(0);
sub_80C4E74(gUnknown_8418EB0);
gTasks[taskId].func = sub_80C1098;
}
void sub_80C0FE0(void)
{
sub_80C4BE4();
sub_80C4C2C(27, 4, 64);
sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD);
}
bool8 sub_80C1014(void)
{
if (gUnknown_20399D8->field_1CCD < 16)
{
sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD);
gUnknown_20399D8->field_1CCD += 2;
return FALSE;
}
else
{
return TRUE;
}
}
bool8 sub_80C1058(void)
{
if (gUnknown_20399D8->field_1CCD >= 2)
{
gUnknown_20399D8->field_1CCD -= 2;
sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD);
return FALSE;
}
else
{
return TRUE;
}
}