through sub_80C3580

This commit is contained in:
PikalaxALT 2020-01-07 10:03:47 -05:00
parent cdc025132e
commit d35a54052f
2 changed files with 93 additions and 246 deletions

View File

@ -5,250 +5,6 @@
.text
thumb_func_start sub_80C3418
sub_80C3418: @ 80C3418
push {r4,r5,lr}
movs r0, 0
bl sub_80C0E04
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080C3482
ldr r5, _080C3474 @ =gUnknown_20399E4
ldr r1, [r5]
ldrb r0, [r1, 0xE]
adds r0, 0x1
strb r0, [r1, 0xE]
ldr r4, [r5]
ldrb r0, [r4, 0xE]
movs r1, 0x3
bl __umodsi3
strb r0, [r4, 0xE]
ldr r0, [r5]
ldrb r0, [r0, 0xE]
cmp r0, 0
bne _080C3460
bl sub_80C0E20
adds r4, r0, 0
bl sub_80C0E34
lsls r4, 24
lsls r0, 24
cmp r4, r0
beq _080C3460
ldr r1, [r5]
ldrb r0, [r1, 0xE]
adds r0, 0x1
strb r0, [r1, 0xE]
_080C3460:
ldr r4, _080C3474 @ =gUnknown_20399E4
ldr r1, [r4]
ldrb r0, [r1, 0xE]
cmp r0, 0x1
beq _080C3478
cmp r0, 0x1
ble _080C34A2
cmp r0, 0x2
beq _080C34B8
b _080C34A2
.align 2, 0
_080C3474: .4byte gUnknown_20399E4
_080C3478:
movs r0, 0x15
strh r0, [r1]
movs r0, 0xB
strh r0, [r1, 0x2]
b _080C34C0
_080C3482:
ldr r4, _080C34B4 @ =gUnknown_20399E4
ldr r1, [r4]
ldrb r0, [r1, 0xE]
adds r0, 0x1
strb r0, [r1, 0xE]
ldr r2, [r4]
ldrb r0, [r2, 0xE]
movs r1, 0x1
ands r0, r1
strb r0, [r2, 0xE]
ldr r1, [r4]
ldrb r0, [r1, 0xE]
cmp r0, 0
beq _080C34A2
cmp r0, 0x1
beq _080C34B8
_080C34A2:
bl sub_80C4380
ldr r1, [r4]
strh r0, [r1]
bl sub_80C438C
ldr r1, [r4]
strh r0, [r1, 0x2]
b _080C34C0
.align 2, 0
_080C34B4: .4byte gUnknown_20399E4
_080C34B8:
movs r0, 0xD
strh r0, [r1, 0x2]
movs r0, 0x15
strh r0, [r1]
_080C34C0:
ldr r4, _080C3504 @ =gUnknown_20399E4
ldr r1, [r4]
ldr r2, [r1, 0x1C]
movs r3, 0
ldrsh r0, [r1, r3]
lsls r0, 3
adds r0, 0x24
strh r0, [r2, 0x20]
ldr r2, [r1, 0x1C]
movs r5, 0x2
ldrsh r0, [r1, r5]
lsls r0, 3
adds r0, 0x24
strh r0, [r2, 0x22]
bl sub_80C0E20
lsls r0, 24
lsrs r0, 24
ldr r1, [r4]
movs r3, 0x2
ldrsh r2, [r1, r3]
movs r5, 0
ldrsh r3, [r1, r5]
movs r1, 0
bl sub_80C4164
ldr r1, [r4]
lsls r0, 24
lsrs r0, 24
strh r0, [r1, 0x14]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080C3504: .4byte gUnknown_20399E4
thumb_func_end sub_80C3418
thumb_func_start sub_80C3508
sub_80C3508: @ 80C3508
ldr r0, _080C3510 @ =gUnknown_20399E4
ldr r0, [r0]
ldrh r0, [r0]
bx lr
.align 2, 0
_080C3510: .4byte gUnknown_20399E4
thumb_func_end sub_80C3508
thumb_func_start sub_80C3514
sub_80C3514: @ 80C3514
ldr r0, _080C351C @ =gUnknown_20399E4
ldr r0, [r0]
ldrh r0, [r0, 0x2]
bx lr
.align 2, 0
_080C351C: .4byte gUnknown_20399E4
thumb_func_end sub_80C3514
thumb_func_start sub_80C3520
sub_80C3520: @ 80C3520
push {r4,lr}
ldr r4, _080C353C @ =gUnknown_20399E4
ldr r1, [r4]
ldrh r0, [r1, 0x2]
cmp r0, 0xE
bhi _080C3538
movs r2, 0
ldrsh r0, [r1, r2]
cmp r0, 0
blt _080C3538
cmp r0, 0x15
ble _080C3540
_080C3538:
movs r0, 0xC5
b _080C3574
.align 2, 0
_080C353C: .4byte gUnknown_20399E4
_080C3540:
bl sub_80C0E20
lsls r0, 24
lsrs r0, 24
ldr r1, [r4]
movs r3, 0x2
ldrsh r2, [r1, r3]
movs r4, 0
ldrsh r3, [r1, r4]
movs r1, 0
bl sub_80C4164
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0xAE
beq _080C3564
cmp r4, 0xBB
bne _080C3572
_080C3564:
ldr r0, _080C357C @ =0x000008b5
bl FlagGet
lsls r0, 24
cmp r0, 0
bne _080C3572
movs r4, 0xC5
_080C3572:
adds r0, r4, 0
_080C3574:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080C357C: .4byte 0x000008b5
thumb_func_end sub_80C3520
thumb_func_start sub_80C3580
sub_80C3580: @ 80C3580
push {r4,lr}
ldr r4, _080C359C @ =gUnknown_20399E4
ldr r1, [r4]
ldrh r0, [r1, 0x2]
cmp r0, 0xE
bhi _080C3598
movs r2, 0
ldrsh r0, [r1, r2]
cmp r0, 0
blt _080C3598
cmp r0, 0x15
ble _080C35A0
_080C3598:
movs r0, 0xC5
b _080C35D0
.align 2, 0
_080C359C: .4byte gUnknown_20399E4
_080C35A0:
bl sub_80C0E20
lsls r0, 24
lsrs r0, 24
ldr r1, [r4]
movs r3, 0x2
ldrsh r2, [r1, r3]
movs r4, 0
ldrsh r3, [r1, r4]
movs r1, 0x1
bl sub_80C4164
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x8D
bne _080C35CE
ldr r0, _080C35D8 @ =0x00000844
bl FlagGet
lsls r0, 24
cmp r0, 0
bne _080C35CE
movs r4, 0xC5
_080C35CE:
adds r0, r4, 0
_080C35D0:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080C35D8: .4byte 0x00000844
thumb_func_end sub_80C3580
thumb_func_start sub_80C35DC
sub_80C35DC: @ 80C35DC
push {lr}

View File

@ -231,16 +231,18 @@ u8 sub_80C31C0(void);
u8 sub_80C3348(void);
u8 sub_80C3400(void);
void sub_80C3418(void);
u8 sub_80C3878(u8 a0);
u16 sub_80C3520(void);
u8 sub_80C35DC(u8 a0);
u8 sub_80C3878(u8 a0);
u8 sub_80C3AC8(u8 a0);
void sub_80C3D40(void);
u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3);
void sub_80C41D8(u16 a0, u16 a1);
void sub_80C4324(u8 a0);
void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc);
void sub_80C4348(void);
u16 sub_80C4380();
u16 sub_80C438C();
void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc);
void sub_80C48BC(u8 a0, u8 a1, u8 a2);
void sub_80C4960(u8 a0, u8 a1, u8 a2);
void sub_80C4A04(void);
@ -2223,3 +2225,92 @@ u8 sub_80C3400(void)
{
return gUnknown_20399E4->field_010();
}
void sub_80C3418(void)
{
if (sub_80C0E04(0) == 1)
{
gUnknown_20399E4->field_00E++;
gUnknown_20399E4->field_00E %= 3;
if (gUnknown_20399E4->field_00E == 0 && sub_80C0E20() != sub_80C0E34())
{
gUnknown_20399E4->field_00E++;
}
switch (gUnknown_20399E4->field_00E)
{
case 0:
default:
gUnknown_20399E4->field_000 = sub_80C4380();
gUnknown_20399E4->field_002 = sub_80C438C();
break;
case 1:
gUnknown_20399E4->field_000 = 21;
gUnknown_20399E4->field_002 = 11;
break;
case 2:
gUnknown_20399E4->field_002 = 13;
gUnknown_20399E4->field_000 = 21;
break;
}
}
else
{
gUnknown_20399E4->field_00E++;
gUnknown_20399E4->field_00E %= 2;
switch (gUnknown_20399E4->field_00E)
{
case 0:
default:
gUnknown_20399E4->field_000 = sub_80C4380();
gUnknown_20399E4->field_002 = sub_80C438C();
break;
case 1:
gUnknown_20399E4->field_002 = 13;
gUnknown_20399E4->field_000 = 21;
break;
}
}
gUnknown_20399E4->field_01C->pos1.x = 8 * gUnknown_20399E4->field_000 + 36;
gUnknown_20399E4->field_01C->pos1.y = 8 * gUnknown_20399E4->field_002 + 36;
gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000);
}
u16 sub_80C3508(void)
{
return gUnknown_20399E4->field_000;
}
u16 sub_80C3514(void)
{
return gUnknown_20399E4->field_002;
}
u16 sub_80C3520(void)
{
u8 ret;
if (gUnknown_20399E4->field_002 < 0
|| gUnknown_20399E4->field_002 > 14
|| gUnknown_20399E4->field_000 < 0
|| gUnknown_20399E4->field_000 > 21)
return MAPSEC_NONE;
ret = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000);
if ((ret == MAPSEC_NAVEL_ROCK || ret == MAPSEC_BIRTH_ISLAND) && !FlagGet(FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR))
ret = MAPSEC_NONE;
return ret;
}
u16 sub_80C3580(void)
{
u8 ret;
if (gUnknown_20399E4->field_002 < 0
|| gUnknown_20399E4->field_002 > 14
|| gUnknown_20399E4->field_000 < 0
|| gUnknown_20399E4->field_000 > 21)
return MAPSEC_NONE;
ret = sub_80C4164(sub_80C0E20(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000);
if (ret == MAPSEC_CERULEAN_CAVE && !FlagGet(FLAG_SYS_CAN_LINK_WITH_RS))
ret = MAPSEC_NONE;
return ret;
}