diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-01-03 09:09:02 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-01-03 09:09:02 -0500 |
commit | 3535cf2ebc0ff5cb408bb018ade68ae8cfcb0c5c (patch) | |
tree | 262d855ea94396679bb9b7fb0f289c9e276c9c2a | |
parent | 404932ba23a2be1ff5c90def5ebf2a2ec5cf9839 (diff) |
through sub_80C0E5C
-rw-r--r-- | asm/region_map.s | 352 | ||||
-rw-r--r-- | include/constants/region_map.h | 3 | ||||
-rw-r--r-- | src/region_map.c | 121 |
3 files changed, 114 insertions, 362 deletions
diff --git a/asm/region_map.s b/asm/region_map.s index 08fb0b88a..f0f1de990 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,358 +5,6 @@ .text - thumb_func_start sub_80C0BB0 -sub_80C0BB0: @ 80C0BB0 - push {r4-r6,lr} - sub sp, 0xC - ldr r5, _080C0C84 @ =gUnknown_20399D4 - ldr r1, [r5] - ldr r2, _080C0C88 @ =0x000047ac - adds r0, r1, r2 - movs r6, 0 - strh r6, [r0] - ldr r3, _080C0C8C @ =0x000047ae - adds r2, r1, r3 - movs r0, 0x18 - strh r0, [r2] - ldr r0, _080C0C90 @ =0x000047b0 - adds r1, r0 - movs r0, 0x20 - strh r0, [r1] - movs r0, 0x1 - movs r1, 0x1 - bl sub_80C4C9C - movs r0, 0x1 - bl ClearWindowTilemap - bl sub_80C3580 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC5 - beq _080C0C7A - adds r4, r0, 0 - subs r4, 0x58 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0x1 - movs r1, 0 - bl sub_80C4C9C - ldr r0, [r5] - ldr r1, _080C0C88 @ =0x000047ac - adds r0, r1 - movs r1, 0x1 - strh r1, [r0] - ldr r0, _080C0C94 @ =gUnknown_83F1CAC - lsls r4, 2 - adds r4, r0 - ldr r4, [r4] - adds r0, r4, 0 - bl StringLength - ldr r2, [r5] - ldr r3, _080C0C98 @ =0x000047aa - adds r1, r2, r3 - strh r0, [r1] - ldrh r1, [r1] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - adds r0, 0x32 - adds r3, 0x4 - adds r1, r2, r3 - strh r0, [r1] - ldr r0, _080C0C90 @ =0x000047b0 - adds r2, r0 - movs r0, 0x30 - strh r0, [r2] - movs r0, 0x1 - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, [r5] - adds r0, 0x13 - adds r1, r4, 0 - bl StringCopy - ldr r4, _080C0C9C @ =gUnknown_83F1A9C - movs r0, 0x1 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 22 - subs r0, 0x8 - adds r0, r4 - ldr r0, [r0] - str r0, [sp] - str r6, [sp, 0x4] - ldr r0, [r5] - adds r0, 0x13 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0xC - movs r3, 0x2 - bl AddTextPrinterParameterized3 - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x1 - movs r1, 0x3 - bl CopyWindowToVram -_080C0C7A: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C0C84: .4byte gUnknown_20399D4 -_080C0C88: .4byte 0x000047ac -_080C0C8C: .4byte 0x000047ae -_080C0C90: .4byte 0x000047b0 -_080C0C94: .4byte gUnknown_83F1CAC -_080C0C98: .4byte 0x000047aa -_080C0C9C: .4byte gUnknown_83F1A9C - thumb_func_end sub_80C0BB0 - - thumb_func_start sub_80C0CA0 -sub_80C0CA0: @ 80C0CA0 - push {lr} - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x1 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x1 - movs r1, 0x3 - bl CopyWindowToVram - pop {r0} - bx r0 - thumb_func_end sub_80C0CA0 - - thumb_func_start sub_80C0CC8 -sub_80C0CC8: @ 80C0CC8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r7, r1, 0 - lsls r0, 24 - ldr r2, _080C0D0C @ =gUnknown_20399D4 - lsrs r0, 12 - ldr r1, _080C0D10 @ =0x00001796 - adds r0, r1 - ldr r1, [r2] - adds r6, r1, r0 - movs r1, 0 - mov r8, r2 -_080C0CE4: - movs r2, 0 - lsls r5, r1, 16 - asrs r1, r5, 16 - lsls r3, r1, 5 - lsls r0, r1, 4 - subs r0, r1 - lsls r4, r0, 1 -_080C0CF2: - lsls r0, r2, 16 - asrs r1, r0, 16 - adds r2, r0, 0 - cmp r1, 0x1D - bgt _080C0D14 - adds r0, r3, r1 - lsls r0, 1 - adds r0, r6 - adds r1, r4, r1 - lsls r1, 1 - adds r1, r7 - ldrh r1, [r1] - b _080C0D1C - .align 2, 0 -_080C0D0C: .4byte gUnknown_20399D4 -_080C0D10: .4byte 0x00001796 -_080C0D14: - adds r0, r3, r1 - lsls r0, 1 - adds r0, r6 - ldrh r1, [r7] -_080C0D1C: - strh r1, [r0] - movs r1, 0x80 - lsls r1, 9 - adds r0, r2, r1 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x1F - ble _080C0CF2 - adds r0, r5, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080C0CE4 - mov r1, r8 - ldr r0, [r1] - ldr r1, _080C0D94 @ =0x00004797 - adds r0, r1 - ldrb r5, [r0] - cmp r5, 0x1 - bne _080C0D86 - movs r4, 0x3 - str r4, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - str r5, [sp, 0xC] - movs r0, 0 - movs r1, 0xF0 - movs r2, 0x18 - movs r3, 0xE - bl WriteSequenceToBgTilemapBuffer - movs r1, 0x80 - lsls r1, 1 - str r4, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - str r5, [sp, 0xC] - movs r0, 0 - movs r2, 0x18 - movs r3, 0xF - bl WriteSequenceToBgTilemapBuffer - movs r1, 0x88 - lsls r1, 1 - str r4, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - str r5, [sp, 0xC] - movs r0, 0 - movs r2, 0x18 - movs r3, 0x10 - bl WriteSequenceToBgTilemapBuffer -_080C0D86: - ldr r0, _080C0D98 @ =gUnknown_20399D8 - ldr r0, [r0] - cmp r0, 0 - beq _080C0DA0 - ldr r1, _080C0D9C @ =0x00001cca - b _080C0DA6 - .align 2, 0 -_080C0D94: .4byte 0x00004797 -_080C0D98: .4byte gUnknown_20399D8 -_080C0D9C: .4byte 0x00001cca -_080C0DA0: - mov r1, r8 - ldr r0, [r1] - ldr r1, _080C0DF8 @ =0x0000479b -_080C0DA6: - adds r0, r1 - ldrb r4, [r0] - cmp r4, 0x2 - bne _080C0DCC - ldr r0, _080C0DFC @ =0x000008b5 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _080C0DCC - movs r0, 0x3 - str r0, [sp] - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0x3 - movs r2, 0xD - movs r3, 0xB - bl FillBgTilemapBufferRect_Palette0 -_080C0DCC: - cmp r4, 0x3 - bne _080C0DEC - ldr r0, _080C0E00 @ =0x000008c2 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _080C0DEC - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0x3 - movs r2, 0x15 - movs r3, 0x10 - bl FillBgTilemapBufferRect_Palette0 -_080C0DEC: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C0DF8: .4byte 0x0000479b -_080C0DFC: .4byte 0x000008b5 -_080C0E00: .4byte 0x000008c2 - thumb_func_end sub_80C0CC8 - - thumb_func_start sub_80C0E04 -sub_80C0E04: @ 80C0E04 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080C0E18 @ =gUnknown_20399D4 - ldr r1, [r1] - ldr r2, _080C0E1C @ =0x00004797 - adds r1, r2 - adds r1, r0 - ldrb r0, [r1] - bx lr - .align 2, 0 -_080C0E18: .4byte gUnknown_20399D4 -_080C0E1C: .4byte 0x00004797 - thumb_func_end sub_80C0E04 - - thumb_func_start sub_80C0E20 -sub_80C0E20: @ 80C0E20 - ldr r0, _080C0E2C @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C0E30 @ =0x0000479b - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080C0E2C: .4byte gUnknown_20399D4 -_080C0E30: .4byte 0x0000479b - thumb_func_end sub_80C0E20 - - thumb_func_start sub_80C0E34 -sub_80C0E34: @ 80C0E34 - ldr r0, _080C0E40 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C0E44 @ =0x0000479c - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080C0E40: .4byte gUnknown_20399D4 -_080C0E44: .4byte 0x0000479c - thumb_func_end sub_80C0E34 - - thumb_func_start sub_80C0E48 -sub_80C0E48: @ 80C0E48 - ldr r1, _080C0E54 @ =gUnknown_20399D4 - ldr r1, [r1] - ldr r2, _080C0E58 @ =0x0000479b - adds r1, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_080C0E54: .4byte gUnknown_20399D4 -_080C0E58: .4byte 0x0000479b - thumb_func_end sub_80C0E48 - - thumb_func_start sub_80C0E5C -sub_80C0E5C: @ 80C0E5C - ldr r1, _080C0E68 @ =gUnknown_20399D4 - ldr r1, [r1] - ldr r2, _080C0E6C @ =0x0000479c - adds r1, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_080C0E68: .4byte gUnknown_20399D4 -_080C0E6C: .4byte 0x0000479c - thumb_func_end sub_80C0E5C - thumb_func_start sub_80C0E70 sub_80C0E70: @ 80C0E70 push {r4-r7,lr} diff --git a/include/constants/region_map.h b/include/constants/region_map.h index e096f08a2..bd087bd60 100644 --- a/include/constants/region_map.h +++ b/include/constants/region_map.h @@ -90,7 +90,8 @@ #define MAPSEC_SECRET_BASE 0x56 #define MAPSEC_DYNAMIC 0x57 -// Kanto landmarks +#define MAPSECS_KANTO 0x58 + #define MAPSEC_PALLET_TOWN 0x58 #define MAPSEC_VIRIDIAN_CITY 0x59 #define MAPSEC_PEWTER_CITY 0x5A diff --git a/src/region_map.c b/src/region_map.c index 3f1dd9f08..adcf0dcb6 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -11,6 +11,7 @@ #include "sound.h" #include "new_menu_helpers.h" #include "menu.h" +#include "string_util.h" #include "strings.h" #include "constants/flags.h" #include "constants/songs.h" @@ -18,12 +19,11 @@ struct UnkStruct_20399D4 { - u8 field_0000[38]; + u8 field_0000[19]; + u8 field_0013[19]; u16 field_0026[5][600]; // Inefficiency: these should be u8 or have half the elements each - u16 field_1796[BG_SCREEN_SIZE]; - u16 field_2796[BG_SCREEN_SIZE]; - u16 field_3796[BG_SCREEN_SIZE]; + u16 field_1796[3][BG_SCREEN_SIZE]; u8 field_4796; u8 field_4797[4]; u8 field_479B; @@ -34,13 +34,23 @@ struct UnkStruct_20399D4 u8 field_47A4; u8 filler_47A5[3]; u8 field_47A8; - u8 filler_47A9[15]; + u16 field_47AA; + u16 field_47AC; + u16 field_47AE; + u16 field_47B0; + u8 filler_47B2[6]; TaskFunc field_47B8; MainCallback field_47BC; }; +struct UnkStruct_20399D8 +{ + u8 filler_0000[0x1CCA]; + u8 field_1CCA; +}; + EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; -EWRAM_DATA void * gUnknown_20399D8 = NULL; +EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL; EWRAM_DATA void * gUnknown_20399DC = NULL; EWRAM_DATA void * gUnknown_20399E0 = NULL; EWRAM_DATA void * gUnknown_20399E4 = NULL; @@ -123,6 +133,8 @@ extern const u8 gUnknown_83F1A90[]; extern const u8 sSeviiMapsecs[3][30]; extern const u8 gUnknown_83F1B00[3][4]; extern const u16 gUnknown_83F1B0C[3][4]; +extern const u8 *const gUnknown_83F1A9C[]; +extern const u8 *const gUnknown_83F1CAC[]; static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) { @@ -583,9 +595,9 @@ void sub_80C0904(void) void sub_80C0A2C(void) { - SetBgTilemapBuffer(0, gUnknown_20399D4->field_1796); - SetBgTilemapBuffer(1, gUnknown_20399D4->field_2796); - SetBgTilemapBuffer(2, gUnknown_20399D4->field_3796); + SetBgTilemapBuffer(0, gUnknown_20399D4->field_1796[0]); + SetBgTilemapBuffer(1, gUnknown_20399D4->field_1796[1]); + SetBgTilemapBuffer(2, gUnknown_20399D4->field_1796[2]); } void sub_80C0A6C(void) @@ -648,3 +660,94 @@ void sub_80C0B9C(void) { sub_80C4CF0(1, gUnknown_83F1B0C[1]); } + +void sub_80C0BB0(void) +{ + u16 mapsecId; + u16 descOffset; + gUnknown_20399D4->field_47AC = 0; + gUnknown_20399D4->field_47AE = 24; + gUnknown_20399D4->field_47B0 = 32; + sub_80C4C9C(1, 1); + ClearWindowTilemap(1); + mapsecId = sub_80C3580(); + if (mapsecId != MAPSEC_NONE) + { + descOffset = mapsecId - MAPSECS_KANTO; + sub_80C4C9C(1, 0); + gUnknown_20399D4->field_47AC = 1; + gUnknown_20399D4->field_47AA = StringLength(gUnknown_83F1CAC[descOffset]); + gUnknown_20399D4->field_47AE = gUnknown_20399D4->field_47AA * 10 + 50; + gUnknown_20399D4->field_47B0 = 48; + FillWindowPixelBuffer(1, PIXEL_FILL(0)); + StringCopy(gUnknown_20399D4->field_0013, gUnknown_83F1CAC[descOffset]); + AddTextPrinterParameterized3(1, 2, 12, 2, gUnknown_83F1A9C[sub_80C3AC8(1) - 2], 0, gUnknown_20399D4->field_0013); + PutWindowTilemap(1); + CopyWindowToVram(1, 3); + } +} + +void sub_80C0CA0(void) +{ + FillWindowPixelBuffer(0, PIXEL_FILL(0)); + CopyWindowToVram(0, 3); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); + CopyWindowToVram(1, 3); +} + +void sub_80C0CC8(u8 bg, u16 *map) +{ + s16 i; + s16 j; + u8 r4; + u16 *buffer = gUnknown_20399D4->field_1796[bg]; + for (i = 0; i < 20; i++) + { + for (j = 0; j < 32; j++) + { + if (j < 30) + buffer[32 * i + j] = map[30 * i + j]; + else + buffer[32 * i + j] = map[0]; + } + } + if (gUnknown_20399D4->field_4797[0] == 1) + { + WriteSequenceToBgTilemapBuffer(0, 0x0F0, 0x18, 0x0E, 3, 1, 0x3, 0x001); + WriteSequenceToBgTilemapBuffer(0, 0x100, 0x18, 0x0F, 3, 1, 0x3, 0x001); + WriteSequenceToBgTilemapBuffer(0, 0x110, 0x18, 0x10, 3, 1, 0x3, 0x001); + } + if (gUnknown_20399D8 != NULL) + r4 = gUnknown_20399D8->field_1CCA; + else + r4 = gUnknown_20399D4->field_479B; + if (r4 == 2 && !FlagGet(FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR)) + FillBgTilemapBufferRect_Palette0(0, 0x003, 13, 11, 3, 2); + if (r4 == 3 && !FlagGet(FLAG_WORLD_MAP_BIRTH_ISLAND_EXTERIOR)) + FillBgTilemapBufferRect_Palette0(0, 0x003, 21, 16, 3, 3); +} + +u8 sub_80C0E04(u8 a0) +{ + return gUnknown_20399D4->field_4797[a0]; +} + +u8 sub_80C0E20(void) +{ + return gUnknown_20399D4->field_479B; +} + +u8 sub_80C0E34(void) +{ + return gUnknown_20399D4->field_479C; +} + +void sub_80C0E48(u8 a0) +{ + gUnknown_20399D4->field_479B = a0; +} + +void sub_80C0E5C(u8 a0) +{ + gUnknown_20399D4->field_479C = a0; +} |