summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-01-07 10:03:47 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-01-07 10:03:47 -0500
commitd35a54052fdf80a4770004027f2e8d8a07873a30 (patch)
treed48ea51592d8bb07ee008359a0fc39d480b4adf1
parentcdc025132e7ec7844587782df736df04b5953d5a (diff)
through sub_80C3580
-rw-r--r--asm/region_map.s244
-rw-r--r--src/region_map.c95
2 files changed, 93 insertions, 246 deletions
diff --git a/asm/region_map.s b/asm/region_map.s
index 10f8c83f4..62323a302 100644
--- a/asm/region_map.s
+++ b/asm/region_map.s
@@ -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}
diff --git a/src/region_map.c b/src/region_map.c
index 8ea4c9bb6..e8252065e 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -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;
+}