diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-01-07 10:03:47 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-01-07 10:03:47 -0500 |
commit | d35a54052fdf80a4770004027f2e8d8a07873a30 (patch) | |
tree | d48ea51592d8bb07ee008359a0fc39d480b4adf1 | |
parent | cdc025132e7ec7844587782df736df04b5953d5a (diff) |
through sub_80C3580
-rw-r--r-- | asm/region_map.s | 244 | ||||
-rw-r--r-- | src/region_map.c | 95 |
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; +} |