diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/field_region_map.c | 79 |
1 files changed, 75 insertions, 4 deletions
diff --git a/src/field_region_map.c b/src/field_region_map.c index 4923f2069..399ae9070 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -10,6 +10,9 @@ #include "text_window.h" #include "palette.h" #include "menu.h" +#include "strings.h" +#include "international_string_util.h" +#include "region_map.h" // Static type declarations @@ -17,8 +20,9 @@ EWRAM_DATA struct { MainCallback callback; - u8 filler_004[0x888]; - u16 unk_88c; + u8 filler_004[0x4]; + u8 filler_008[0x884]; + u16 state; } *gUnknown_0203BCD0 = NULL; // Static ROM declarations @@ -26,7 +30,8 @@ EWRAM_DATA struct { static void sub_81701C4(void); static void sub_8170260(void); static void sub_8170274(void); -void sub_8170290(void); +static void sub_8170290(void); +void sub_8170428(void); // .rodata @@ -39,7 +44,7 @@ void sub_817018C(MainCallback callback) { SetVBlankCallback(NULL); gUnknown_0203BCD0 = malloc(sizeof(*gUnknown_0203BCD0)); - gUnknown_0203BCD0->unk_88c = 0; + gUnknown_0203BCD0->state = 0; gUnknown_0203BCD0->callback = callback; SetMainCallback2(sub_81701C4); } @@ -82,3 +87,69 @@ static void sub_8170274(void) UpdatePaletteFade(); do_scheduled_bg_tilemap_copies_to_vram(); } + +void sub_8170290(void) +{ + u8 offset; + + switch (gUnknown_0203BCD0->state) + { + case 0: + sub_8122CDC(gUnknown_0203BCD0->filler_008, 0); + sub_8124288(0, 0); + sub_81240D4(1, 1); + gUnknown_0203BCD0->state ++; + break; + case 1: + SetWindowBorderStyle(1, 0, 0x27, 0xd); + offset = GetStringCenterAlignXOffset(1, gText_Hoenn, 0x38); + PrintTextOnWindow(1, 1, gText_Hoenn, offset, 1, 0, 0); + schedule_bg_copy_tilemap_to_vram(0); + SetWindowBorderStyle(0, 0, 0x27, 0xd); + sub_8170428(); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gUnknown_0203BCD0->state ++; + break; + case 2: + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(2); + gUnknown_0203BCD0->state ++; + break; + case 3: + if (!gPaletteFade.active) + { + gUnknown_0203BCD0->state ++; + } + break; + case 4: + switch (sub_81230AC()) + { + case 3: + sub_8170428(); + break; + case 4: + case 5: + gUnknown_0203BCD0->state ++; + break; + } + break; + case 5: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_0203BCD0->state ++; + break; + case 6: + if (!gPaletteFade.active) + { + sub_812305C(); + SetMainCallback2(gUnknown_0203BCD0->callback); + if (gUnknown_0203BCD0 != NULL) + { + free(gUnknown_0203BCD0); + gUnknown_0203BCD0 = NULL; + } + FreeAllWindowBuffers(); + } + break; + } +} |