diff options
-rw-r--r-- | asm/region_map.s | 330 | ||||
-rw-r--r-- | include/strings.h | 8 | ||||
-rw-r--r-- | src/region_map.c | 139 |
3 files changed, 147 insertions, 330 deletions
diff --git a/asm/region_map.s b/asm/region_map.s index e3317d3b1..c45d74270 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,336 +5,6 @@ .text - thumb_func_start sub_80C04E4 -sub_80C04E4: @ 80C04E4 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080C0508 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C050C @ =0x000047a0 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x5 - bls _080C04FC - b _080C07B0 -_080C04FC: - lsls r0, 2 - ldr r1, _080C0510 @ =_080C0514 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C0508: .4byte gUnknown_20399D4 -_080C050C: .4byte 0x000047a0 -_080C0510: .4byte _080C0514 - .align 2, 0 -_080C0514: - .4byte _080C052C - .4byte _080C0560 - .4byte _080C05E0 - .4byte _080C0624 - .4byte _080C0760 - .4byte _080C0788 -_080C052C: - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080C0558 @ =gUnknown_20399D4 - ldr r1, [r4] - ldr r2, _080C055C @ =0x000047b8 - adds r1, r2 - ldr r2, [r1] - adds r1, r5, 0 - bl sub_80C4398 - movs r0, 0 - movs r1, 0 - bl sub_80C3008 - movs r0, 0x1 - movs r1, 0x1 - bl sub_80C41D8 - ldr r1, [r4] - b _080C079C - .align 2, 0 -_080C0558: .4byte gUnknown_20399D4 -_080C055C: .4byte 0x000047b8 -_080C0560: - ldr r0, _080C057C @ =gUnknown_20399D4 - ldr r1, [r0] - ldr r2, _080C0580 @ =0x00004799 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080C0584 - adds r2, 0x1F - adds r0, r1, r2 - ldr r1, [r0] - adds r0, r5, 0 - bl sub_80C2208 - b _080C0798 - .align 2, 0 -_080C057C: .4byte gUnknown_20399D4 -_080C0580: .4byte 0x00004799 -_080C0584: - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r0, 0x1 - bl ShowBg - ldr r0, _080C05D8 @ =gUnknown_8418EB5 - bl sub_80C4E18 - ldr r0, _080C05DC @ =gUnknown_8418E8B - bl sub_80C4E74 - movs r0, 0 - bl sub_80C4ED0 - movs r0, 0 - bl sub_80C4324 - movs r0, 0 - bl sub_80C3154 - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x19 - movs r2, 0 - bl sub_80C48BC - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x19 - movs r2, 0 - bl sub_80C4960 - b _080C0798 - .align 2, 0 -_080C05D8: .4byte gUnknown_8418EB5 -_080C05DC: .4byte gUnknown_8418E8B -_080C05E0: - ldr r0, _080C0618 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080C05EE - b _080C07C2 -_080C05EE: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - beq _080C05FA - b _080C07C2 -_080C05FA: - bl sub_80C0B18 - movs r0, 0 - bl PutWindowTilemap - bl sub_80C0BB0 - movs r0, 0x1 - bl PutWindowTilemap - ldr r0, _080C061C @ =gUnknown_20399D4 - ldr r1, [r0] - ldr r2, _080C0620 @ =0x000047a0 - adds r1, r2 - b _080C07A0 - .align 2, 0 -_080C0618: .4byte gPaletteFade -_080C061C: .4byte gUnknown_20399D4 -_080C0620: .4byte 0x000047a0 -_080C0624: - bl sub_80C3400 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x5 - bls _080C0634 - b _080C07C2 -_080C0634: - lsls r0, 2 - ldr r1, _080C0640 @ =_080C0644 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C0640: .4byte _080C0644 - .align 2, 0 -_080C0644: - .4byte _080C065C - .4byte _080C07C2 - .4byte _080C0662 - .4byte _080C070C - .4byte _080C0740 - .4byte _080C0798 -_080C065C: - bl sub_80C3178 - b _080C07C2 -_080C0662: - bl sub_80C0B18 - bl sub_80C0BB0 - bl sub_80C0B9C - bl sub_80C0450 - bl sub_80C3580 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC5 - beq _080C06A8 - movs r0, 0x1 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080C068E - b _080C07C2 -_080C068E: - movs r0, 0x1 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080C0700 - ldr r0, _080C06A4 @ =gUnknown_8418E8D - bl sub_80C4E74 - b _080C07C2 - .align 2, 0 -_080C06A4: .4byte gUnknown_8418E8D -_080C06A8: - bl sub_80C3508 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x15 - bne _080C06DC - bl sub_80C3514 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB - bne _080C06DC - movs r0, 0 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C06DC - ldr r0, _080C06D8 @ =gUnknown_8418EA7 - bl sub_80C4E74 - b _080C07C2 - .align 2, 0 -_080C06D8: .4byte gUnknown_8418EA7 -_080C06DC: - bl sub_80C3508 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x15 - bne _080C0700 - bl sub_80C3514 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xD - bne _080C0700 - ldr r0, _080C06FC @ =gUnknown_8418E95 - bl sub_80C4E74 - b _080C07C2 - .align 2, 0 -_080C06FC: .4byte gUnknown_8418E95 -_080C0700: - ldr r0, _080C0708 @ =gUnknown_8418E8B - bl sub_80C4E74 - b _080C07C2 - .align 2, 0 -_080C0708: .4byte gUnknown_8418E8B -_080C070C: - movs r0, 0x1 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080C07C2 - ldr r0, _080C0734 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C0738 @ =0x00004798 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080C07C2 - ldr r2, _080C073C @ =sub_80C07F8 - movs r0, 0 - adds r1, r5, 0 - bl sub_80C195C - b _080C07C2 - .align 2, 0 -_080C0734: .4byte gUnknown_20399D4 -_080C0738: .4byte 0x00004798 -_080C073C: .4byte sub_80C07F8 -_080C0740: - ldr r0, _080C0754 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r2, _080C0758 @ =0x0000479b - adds r0, r2 - ldrb r0, [r0] - ldr r2, _080C075C @ =sub_80C07F8 - adds r1, r5, 0 - bl sub_80C0E70 - b _080C07C2 - .align 2, 0 -_080C0754: .4byte gUnknown_20399D4 -_080C0758: .4byte 0x0000479b -_080C075C: .4byte sub_80C07F8 -_080C0760: - movs r0, 0x2 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C0776 - adds r0, r5, 0 - bl sub_80C2C1C - b _080C0798 -_080C0776: - ldr r0, _080C0780 @ =gUnknown_20399D4 - ldr r1, [r0] - ldr r2, _080C0784 @ =0x000047a0 - adds r1, r2 - b _080C07A0 - .align 2, 0 -_080C0780: .4byte gUnknown_20399D4 -_080C0784: .4byte 0x000047a0 -_080C0788: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_080C0798: - ldr r0, _080C07A8 @ =gUnknown_20399D4 - ldr r1, [r0] -_080C079C: - ldr r0, _080C07AC @ =0x000047a0 - adds r1, r0 -_080C07A0: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080C07C2 - .align 2, 0 -_080C07A8: .4byte gUnknown_20399D4 -_080C07AC: .4byte 0x000047a0 -_080C07B0: - ldr r0, _080C07CC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080C07C2 - adds r0, r5, 0 - bl sub_80C0820 -_080C07C2: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C07CC: .4byte gPaletteFade - thumb_func_end sub_80C04E4 - thumb_func_start sub_80C07D0 sub_80C07D0: @ 80C07D0 ldr r1, _080C07DC @ =gUnknown_20399D4 diff --git a/include/strings.h b/include/strings.h index 90fd49b52..6cca52507 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1003,4 +1003,12 @@ extern const u8 gText_UnionRoomTradesBattles[]; extern const u8 gText_LinkBattles[]; extern const u8 gText_LinkCableBattles[]; +// region_map +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[]; + #endif //GUARD_STRINGS_H diff --git a/src/region_map.c b/src/region_map.c index e642ed2a4..4199b2f17 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -8,6 +8,7 @@ #include "window.h" #include "sound.h" #include "new_menu_helpers.h" +#include "strings.h" #include "constants/flags.h" #include "constants/songs.h" #include "constants/region_map.h" @@ -47,6 +48,8 @@ void sub_80C0100(void); bool8 sub_80C0238(void); void sub_80C03E8(void); void sub_80C04E4(u8 taskId); +void sub_80C07F8(u8 taskId); +void sub_80C0820(u8 taskId); void sub_80C08B4(void); void sub_80C08E0(void); void sub_80C08F4(void); @@ -54,17 +57,32 @@ void sub_80C0904(void); void sub_80C0A6C(void); void sub_80C0A88(u8 a0); void sub_80C0B18(void); +void sub_80C0B9C(void); void sub_80C0BB0(void); void sub_80C0CC8(u8 bg, u16 *map); bool8 sub_80C0E04(u8 a0); u8 sub_80C0E20(void); +void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc); +void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc); +void sub_80C2208(u8 taskId, TaskFunc taskFunc); +void sub_80C2C1C(u8 taskId); void sub_80C3008(u16 a0, u16 a1); +void sub_80C3154(u8 a0); +void sub_80C3178(void); +u8 sub_80C3400(void); u16 sub_80C3508(void); u16 sub_80C3514(void); +u16 sub_80C3580(void); u8 sub_80C3AC8(u8 a0); 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_80C48BC(u8 a0, u8 a1, u8 a2); +void sub_80C4960(u8 a0, u8 a1, u8 a2); +void sub_80C4E18(const u8 *str); +void sub_80C4E74(const u8 *str); +void sub_80C4ED0(bool8 a0); void sub_80C4F08(u8 taskId); #include "data/text/map_section_names.h" @@ -323,3 +341,124 @@ void sub_80C0450(void) PlaySE(SE_W255); } } + +void sub_80C04E4(u8 taskId) +{ + switch (gUnknown_20399D4->field_47A0) + { + case 0: + sub_80C4398(sub_80C0E20(), taskId, gUnknown_20399D4->field_47B8); + sub_80C3008(0, 0); + sub_80C41D8(1, 1); + gUnknown_20399D4->field_47A0++; + break; + case 1: + if (gUnknown_20399D4->field_4797[2] == 1) + { + sub_80C2208(taskId, gUnknown_20399D4->field_47B8); + } + else + { + ShowBg(0); + ShowBg(3); + ShowBg(1); + sub_80C4E18(gUnknown_8418EB5); + sub_80C4E74(gUnknown_8418E8B); + sub_80C4ED0(FALSE); + sub_80C4324(0); + sub_80C3154(0); + sub_80C48BC(sub_80C0E20(), 25, 0); + sub_80C4960(sub_80C0E20(), 25, 0); + } + gUnknown_20399D4->field_47A0++; + break; + case 2: + if (!gPaletteFade.active && !IsDma3ManagerBusyWithBgCopy()) + { + sub_80C0B18(); + PutWindowTilemap(0); + sub_80C0BB0(); + PutWindowTilemap(1); + gUnknown_20399D4->field_47A0++; + } + break; + case 3: + switch (sub_80C3400()) + { + case 1: + sub_80C3178(); + break; + case 3: + sub_80C0B18(); + sub_80C0BB0(); + sub_80C0B9C(); + sub_80C0450(); + if (sub_80C3580() != MAPSEC_NONE) + { + if (sub_80C0E04(1) == TRUE) + { + if (sub_80C3AC8(1) == 2) + { + sub_80C4E74(gUnknown_8418E8D); + } + else + { + sub_80C4E74(gUnknown_8418E8B); + } + } + } + else + { + if (sub_80C3508() == 21 && sub_80C3514() == 11 && sub_80C0E04(0) == TRUE) + { + sub_80C4E74(gUnknown_8418EA7); + } + else if (sub_80C3508() == 21 && sub_80C3514() == 13) + { + sub_80C4E74(gUnknown_8418E95); + } + else + { + sub_80C4E74(gUnknown_8418E8B); + } + } + break; + case 4: + if (sub_80C3AC8(1) == 2 && gUnknown_20399D4->field_4797[1] == 1) + { + sub_80C195C(0, taskId, sub_80C07F8); + } + break; + case 5: + sub_80C0E70(gUnknown_20399D4->field_479B, taskId, sub_80C07F8); + break; + case 6: + gUnknown_20399D4->field_47A0++; + break; + } + break; + case 4: + if (sub_80C0E04(2) == 1) + { + sub_80C2C1C(taskId); + // gUnknown_20399D4->field_47A0++; + goto _080C0798; + } + else + { + gUnknown_20399D4->field_47A0++; + } + break; + case 5: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + _080C0798: + gUnknown_20399D4->field_47A0++; + break; + default: + if (!gPaletteFade.active) + { + sub_80C0820(taskId); + } + break; + } +} |