diff options
-rw-r--r-- | asm/region_map.s | 118 | ||||
-rw-r--r-- | data/region_map.s | 4 | ||||
-rw-r--r-- | src/region_map.c | 51 |
3 files changed, 52 insertions, 121 deletions
diff --git a/asm/region_map.s b/asm/region_map.s index 9dea034bc..08fb0b88a 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,120 +5,6 @@ .text - thumb_func_start sub_80C0AB8 -sub_80C0AB8: @ 80C0AB8 - push {r4,lr} - bl sub_80C4BE4 - movs r0, 0 - movs r1, 0x11 - movs r2, 0xC0 - bl sub_80C4C2C - movs r0, 0x6 - bl sub_80C4C48 - movs r0, 0x39 - movs r1, 0x39 - bl sub_80C4C74 - movs r0, 0x1B - bl sub_80C4C88 - ldr r4, _080C0B14 @ =gUnknown_83F1B0C - movs r0, 0 - adds r1, r4, 0 - bl sub_80C4CF0 - adds r4, 0x8 - movs r0, 0x1 - adds r1, r4, 0 - bl sub_80C4CF0 - movs r0, 0 - movs r1, 0 - bl sub_80C4C9C - bl sub_80C3580 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC5 - beq _080C0B0C - movs r0, 0x1 - movs r1, 0 - bl sub_80C4C9C -_080C0B0C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C0B14: .4byte gUnknown_83F1B0C - thumb_func_end sub_80C0AB8 - - thumb_func_start sub_80C0B18 -sub_80C0B18: @ 80C0B18 - push {r4,r5,lr} - sub sp, 0xC - movs r0, 0 - bl ClearWindowTilemap - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - bl sub_80C3520 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC5 - bne _080C0B44 - ldr r1, _080C0B40 @ =gUnknown_83F1B1C - movs r0, 0 - bl sub_80C4CF0 - b _080C0B88 - .align 2, 0 -_080C0B40: .4byte gUnknown_83F1B1C -_080C0B44: - ldr r5, _080C0B90 @ =gUnknown_20399D4 - ldr r4, [r5] - bl sub_80C3520 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - movs r2, 0 - bl GetMapName - ldr r0, _080C0B94 @ =gUnknown_83F1A90 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldr r0, [r5] - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0x2 - movs r2, 0x2 - movs r3, 0x2 - bl AddTextPrinterParameterized3 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x2 - bl CopyWindowToVram - ldr r1, _080C0B98 @ =gUnknown_83F1B0C - movs r0, 0 - bl sub_80C4CF0 -_080C0B88: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C0B90: .4byte gUnknown_20399D4 -_080C0B94: .4byte gUnknown_83F1A90 -_080C0B98: .4byte gUnknown_83F1B0C - thumb_func_end sub_80C0B18 - - thumb_func_start sub_80C0B9C -sub_80C0B9C: @ 80C0B9C - push {lr} - ldr r1, _080C0BAC @ =gUnknown_83F1B14 - movs r0, 0x1 - bl sub_80C4CF0 - pop {r0} - bx r0 - .align 2, 0 -_080C0BAC: .4byte gUnknown_83F1B14 - thumb_func_end sub_80C0B9C - thumb_func_start sub_80C0BB0 sub_80C0BB0: @ 80C0BB0 push {r4-r6,lr} @@ -973,7 +859,7 @@ sub_80C1280: @ 80C1280 bl sub_80C4E74 bl sub_80C0AB8 bl sub_80C0B9C - ldr r1, _080C12E8 @ =gUnknown_83F1B1C + ldr r1, _080C12E8 @ =gUnknown_83F1B0C+16 movs r0, 0 bl sub_80C4CF0 ldr r0, [r4] @@ -992,7 +878,7 @@ _080C12D8: .4byte gUnknown_20399D8 _080C12DC: .4byte 0x00001cd0 _080C12E0: .4byte gUnknown_8418EB5 _080C12E4: .4byte gUnknown_8418EA7 -_080C12E8: .4byte gUnknown_83F1B1C +_080C12E8: .4byte gUnknown_83F1B0C+16 thumb_func_end sub_80C1280 thumb_func_start sub_80C12EC diff --git a/data/region_map.s b/data/region_map.s index e2ba5e5ac..01bbb7a5a 100644 --- a/data/region_map.s +++ b/data/region_map.s @@ -308,11 +308,7 @@ gUnknown_83F1B00:: @ 83F1B00 gUnknown_83F1B0C:: @ 83F1B0C .2byte 0x0018, 0x0010, 0x0090, 0x0020 - -gUnknown_83F1B14:: @ 83F1B14 .2byte 0x0018, 0x0020, 0x0090, 0x0030 - -gUnknown_83F1B1C:: @ 83F1B1C .2byte 0x0000, 0x0000, 0x0000, 0x0000 gUnknown_83F1B24:: @ 83F1B24 diff --git a/src/region_map.c b/src/region_map.c index d4451330f..3f1dd9f08 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -10,6 +10,7 @@ #include "window.h" #include "sound.h" #include "new_menu_helpers.h" +#include "menu.h" #include "strings.h" #include "constants/flags.h" #include "constants/songs.h" @@ -17,7 +18,7 @@ struct UnkStruct_20399D4 { - u8 filler_0000[0x0026]; + u8 field_0000[38]; u16 field_0026[5][600]; // Inefficiency: these should be u8 or have half the elements each u16 field_1796[BG_SCREEN_SIZE]; @@ -66,7 +67,14 @@ void sub_80C0AB8(void); void sub_80C0B18(void); void sub_80C0B9C(void); void sub_80C0BB0(void); +void sub_80C4BE4(void); +void sub_80C4C2C(u8 a0, u16 a1, u16 a2); +void sub_80C4C48(u16 a0); +void sub_80C4C74(u16 a0, u16 a1); +void sub_80C4C88(u16 a0); +void sub_80C4C9C(u8 a0, u8 a1); void sub_80C0CC8(u8 bg, u16 *map); +void sub_80C4CF0(u8 a0, const u16 *a1); bool8 sub_80C0E04(u8 a0); u8 sub_80C0E20(void); void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc); @@ -85,6 +93,7 @@ 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_80C3520(void); void sub_80C48BC(u8 a0, u8 a1, u8 a2); void sub_80C4960(u8 a0, u8 a1, u8 a2); void sub_80C4A04(void); @@ -110,8 +119,10 @@ extern const u32 gUnknown_83F1978[]; extern const u32 gUnknown_83F19A0[]; extern const struct BgTemplate gUnknown_83F1A50[4]; extern const struct WindowTemplate gUnknown_83F1A60[]; +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]; static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) { @@ -455,6 +466,7 @@ void sub_80C04E4(u8 taskId) if (sub_80C0E04(2) == 1) { sub_80C2C1C(taskId); + // FIXME: goto required to match // gUnknown_20399D4->field_47A0++; goto _080C0798; } @@ -599,3 +611,40 @@ void sub_80C0A88(u8 mode) break; } } + +void sub_80C0AB8(void) +{ + sub_80C4BE4(); + sub_80C4C2C(0, 0x11, 0xc0); + sub_80C4C48(6); + sub_80C4C74(0x39, 0x39); + sub_80C4C88(0x1b); + sub_80C4CF0(0, gUnknown_83F1B0C[0]); + sub_80C4CF0(1, gUnknown_83F1B0C[1]); + sub_80C4C9C(0, 0); + if (sub_80C3580() != MAPSEC_NONE) + sub_80C4C9C(1, 0); +} + +void sub_80C0B18(void) +{ + ClearWindowTilemap(0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); + if (sub_80C3520() == MAPSEC_NONE) + { + sub_80C4CF0(0, gUnknown_83F1B0C[2]); + } + else + { + GetMapName(gUnknown_20399D4->field_0000, sub_80C3520(), 0); + AddTextPrinterParameterized3(0, 2, 2, 2, gUnknown_83F1A90, 0, gUnknown_20399D4->field_0000); + PutWindowTilemap(0); + CopyWindowToVram(0, 2); + sub_80C4CF0(0, gUnknown_83F1B0C[0]); + } +} + +void sub_80C0B9C(void) +{ + sub_80C4CF0(1, gUnknown_83F1B0C[1]); +} |