diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-01-07 16:25:13 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-01-07 16:25:13 -0500 |
commit | 1235d7c50643f925a30e0e4dfa299ea6ff624dc2 (patch) | |
tree | 82b32587b73d8fb2c4b3323b4d2148669dbd5d28 | |
parent | ce44eb021c16246d2f6ff2b564b70ccc24c98e30 (diff) |
through sub_80C527C
-rw-r--r-- | asm/region_map.s | 562 | ||||
-rw-r--r-- | include/field_effect.h | 1 | ||||
-rw-r--r-- | include/overworld.h | 1 | ||||
-rw-r--r-- | include/region_map.h | 66 | ||||
-rw-r--r-- | src/region_map.c | 217 |
5 files changed, 217 insertions, 630 deletions
diff --git a/asm/region_map.s b/asm/region_map.s index 4f1b771f4..1f63bde6c 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,568 +5,6 @@ .text - thumb_func_start sub_80C4E18 -sub_80C4E18: @ 80C4E18 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - ldr r0, _080C4E38 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C4E3C @ =0x00004799 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080C4E40 - movs r0, 0x3 - movs r1, 0 - bl FillWindowPixelBuffer - b _080C4E48 - .align 2, 0 -_080C4E38: .4byte gUnknown_20399D4 -_080C4E3C: .4byte 0x00004799 -_080C4E40: - movs r0, 0x3 - movs r1, 0xFF - bl FillWindowPixelBuffer -_080C4E48: - ldr r0, _080C4E70 @ =gUnknown_83F1CA8 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AddTextPrinterParameterized3 - movs r0, 0x3 - movs r1, 0x2 - bl CopyWindowToVram - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C4E70: .4byte gUnknown_83F1CA8 - thumb_func_end sub_80C4E18 - - thumb_func_start sub_80C4E74 -sub_80C4E74: @ 80C4E74 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - ldr r0, _080C4E94 @ =gUnknown_20399D4 - ldr r0, [r0] - ldr r1, _080C4E98 @ =0x00004799 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080C4E9C - movs r0, 0x4 - movs r1, 0 - bl FillWindowPixelBuffer - b _080C4EA4 - .align 2, 0 -_080C4E94: .4byte gUnknown_20399D4 -_080C4E98: .4byte 0x00004799 -_080C4E9C: - movs r0, 0x4 - movs r1, 0xFF - bl FillWindowPixelBuffer -_080C4EA4: - ldr r0, _080C4ECC @ =gUnknown_83F1CA8 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x4 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AddTextPrinterParameterized3 - movs r0, 0x4 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C4ECC: .4byte gUnknown_83F1CA8 - thumb_func_end sub_80C4E74 - - thumb_func_start sub_80C4ED0 -sub_80C4ED0: @ 80C4ED0 - push {lr} - lsls r0, 24 - cmp r0, 0 - bne _080C4EE6 - movs r0, 0x3 - bl PutWindowTilemap - movs r0, 0x4 - bl PutWindowTilemap - b _080C4EF2 -_080C4EE6: - movs r0, 0x3 - bl ClearWindowTilemap - movs r0, 0x4 - bl ClearWindowTilemap -_080C4EF2: - pop {r0} - bx r0 - thumb_func_end sub_80C4ED0 - - thumb_func_start MCB2_FlyMap -MCB2_FlyMap: @ 80C4EF8 - push {lr} - bl sub_80C51E8 - movs r0, 0x2 - bl sub_80BFEDC - pop {r0} - bx r0 - thumb_func_end MCB2_FlyMap - - thumb_func_start sub_80C4F08 -sub_80C4F08: @ 80C4F08 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080C4F28 @ =gUnknown_20399FC - ldr r2, [r0] - ldrb r0, [r2] - cmp r0, 0x6 - bls _080C4F1C - b _080C51B8 -_080C4F1C: - lsls r0, 2 - ldr r1, _080C4F2C @ =_080C4F30 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C4F28: .4byte gUnknown_20399FC -_080C4F2C: .4byte _080C4F30 - .align 2, 0 -_080C4F30: - .4byte _080C4F4C - .4byte _080C4F92 - .4byte _080C4FEC - .4byte _080C5000 - .4byte _080C5028 - .4byte _080C5180 - .4byte _080C5196 -_080C4F4C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_80C0E20 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_80C07E4 - adds r2, r0, 0 - adds r0, r4, 0 - 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 - movs r0, 0 - bl sub_80C3154 - movs r0, 0 - bl sub_80C4324 - b _080C51A6 -_080C4F92: - movs r0, 0x2 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C4FAE - bl sub_80C07E4 - adds r1, r0, 0 - adds r0, r5, 0 - bl sub_80C2208 - b _080C51A6 -_080C4FAE: - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r0, 0x1 - bl ShowBg - ldr r0, _080C4FE8 @ =gUnknown_8418EB5 - bl sub_80C4E18 - 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 _080C51A6 - .align 2, 0 -_080C4FE8: .4byte gUnknown_8418EB5 -_080C4FEC: - ldr r0, _080C4FFC @ =gUnknown_8418EB0 - bl sub_80C4E74 - movs r0, 0 - bl sub_80C4ED0 - b _080C51A6 - .align 2, 0 -_080C4FFC: .4byte gUnknown_8418EB0 -_080C5000: - ldr r0, _080C5024 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080C500E - b _080C51DC -_080C500E: - bl sub_80C0B18 - movs r0, 0 - bl PutWindowTilemap - bl sub_80C0BB0 - movs r0, 0x1 - bl PutWindowTilemap - b _080C51A6 - .align 2, 0 -_080C5024: .4byte gPaletteFade -_080C5028: - bl sub_80C3400 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x5 - bls _080C5038 - b _080C51DC -_080C5038: - lsls r0, 2 - ldr r1, _080C5044 @ =_080C5048 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C5044: .4byte _080C5048 - .align 2, 0 -_080C5048: - .4byte _080C51DC - .4byte _080C51DC - .4byte _080C5070 - .4byte _080C50F8 - .4byte _080C5168 - .4byte _080C5060 -_080C5060: - ldr r0, _080C506C @ =gUnknown_20399FC - ldr r1, [r0] - movs r0, 0x6 - strb r0, [r1] - b _080C51DC - .align 2, 0 -_080C506C: .4byte gUnknown_20399FC -_080C5070: - movs r0, 0 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080C5086 - movs r0, 0x66 - bl PlaySE - b _080C508A -_080C5086: - bl sub_80C0450 -_080C508A: - bl sub_80C3178 - bl sub_80C0B18 - bl sub_80C0BB0 - bl sub_80C0B9C - bl sub_80C3508 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x15 - bne _080C50C4 - bl sub_80C3514 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xD - bne _080C50C4 - movs r0, 0xE1 - bl PlaySE - ldr r0, _080C50C0 @ =gUnknown_8418E95 - bl sub_80C4E74 - b _080C51DC - .align 2, 0 -_080C50C0: .4byte gUnknown_8418E95 -_080C50C4: - movs r0, 0 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _080C50E0 - movs r0, 0 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _080C50EC -_080C50E0: - ldr r0, _080C50E8 @ =gUnknown_8418EB0 - bl sub_80C4E74 - b _080C51DC - .align 2, 0 -_080C50E8: .4byte gUnknown_8418EB0 -_080C50EC: - ldr r0, _080C50F4 @ =gUnknown_8418E8B - bl sub_80C4E74 - b _080C51DC - .align 2, 0 -_080C50F4: .4byte gUnknown_8418E8B -_080C50F8: - movs r0, 0 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _080C5114 - movs r0, 0 - bl sub_80C3AC8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _080C51DC -_080C5114: - movs r0, 0x3 - bl sub_80C0E04 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bne _080C51DC - ldr r0, _080C514C @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - bl get_map_light_level_by_bank_and_number - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _080C5140 - cmp r0, 0x8 - bne _080C5154 -_080C5140: - ldr r2, _080C5150 @ =gUnknown_20399FC - ldr r1, [r2] - movs r0, 0 - strb r0, [r1, 0x2] - ldr r1, [r2] - b _080C51AA - .align 2, 0 -_080C514C: .4byte gSaveBlock1Ptr -_080C5150: .4byte gUnknown_20399FC -_080C5154: - movs r0, 0x1 - bl PlaySE - ldr r1, _080C5164 @ =gUnknown_20399FC - ldr r0, [r1] - strb r4, [r0, 0x2] - ldr r1, [r1] - b _080C51AA - .align 2, 0 -_080C5164: .4byte gUnknown_20399FC -_080C5168: - bl sub_80C0E20 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C517C @ =sub_80C07F8 - adds r1, r5, 0 - bl sub_80C0E70 - b _080C51DC - .align 2, 0 -_080C517C: .4byte sub_80C07F8 -_080C5180: - movs r0, 0x2 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C51A6 - adds r0, r5, 0 - bl sub_80C2C1C - b _080C51A6 -_080C5196: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_080C51A6: - ldr r0, _080C51B4 @ =gUnknown_20399FC - ldr r1, [r0] -_080C51AA: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080C51DC - .align 2, 0 -_080C51B4: .4byte gUnknown_20399FC -_080C51B8: - ldr r0, _080C51E4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080C51DC - ldrb r0, [r2, 0x2] - cmp r0, 0x1 - bne _080C51D6 - bl sub_80C3520 - lsls r0, 16 - lsrs r0, 16 - bl sub_80C527C -_080C51D6: - adds r0, r5, 0 - bl sub_80C5208 -_080C51DC: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C51E4: .4byte gPaletteFade - thumb_func_end sub_80C4F08 - - thumb_func_start sub_80C51E8 -sub_80C51E8: @ 80C51E8 - push {r4,lr} - ldr r4, _080C5204 @ =gUnknown_20399FC - movs r0, 0x4 - bl AllocZeroed - str r0, [r4] - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - strb r1, [r0, 0x1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C5204: .4byte gUnknown_20399FC - thumb_func_end sub_80C51E8 - - thumb_func_start sub_80C5208 -sub_80C5208: @ 80C5208 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x2 - bl sub_80C0E04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C5220 - bl sub_80C25BC -_080C5220: - bl sub_80C4A04 - bl sub_80C3188 - bl sub_80C4348 - bl sub_80C4D30 - bl sub_80C0898 - adds r0, r4, 0 - bl DestroyTask - bl FreeAllWindowBuffers - ldr r0, _080C5250 @ =gUnknown_20399FC - ldr r0, [r0] - ldrb r0, [r0, 0x2] - cmp r0, 0x1 - bne _080C5258 - ldr r0, _080C5254 @ =CB2_ReturnToField - bl SetMainCallback2 - b _080C525E - .align 2, 0 -_080C5250: .4byte gUnknown_20399FC -_080C5254: .4byte CB2_ReturnToField -_080C5258: - ldr r0, _080C5274 @ =CB2_ReturnToPartyMenuFromFlyMap - bl SetMainCallback2 -_080C525E: - ldr r4, _080C5278 @ =gUnknown_20399FC - ldr r0, [r4] - cmp r0, 0 - beq _080C526E - bl Free - movs r0, 0 - str r0, [r4] -_080C526E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C5274: .4byte CB2_ReturnToPartyMenuFromFlyMap -_080C5278: .4byte gUnknown_20399FC - thumb_func_end sub_80C5208 - - thumb_func_start sub_80C527C -sub_80C527C: @ 80C527C - push {r4,r5,lr} - lsls r0, 16 - ldr r1, _080C52A4 @ =0xffa80000 - adds r0, r1 - lsrs r0, 16 - ldr r5, _080C52A8 @ =gUnknown_83F2EE0 - lsls r1, r0, 1 - adds r4, r1, r0 - adds r0, r5, 0x2 - adds r1, r4, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080C52AC - bl sub_805546C - adds r0, r4, r5 - bl sub_8124C1C - b _080C52C6 - .align 2, 0 -_080C52A4: .4byte 0xffa80000 -_080C52A8: .4byte gUnknown_83F2EE0 -_080C52AC: - adds r0, r4, r5 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r1, r5, 0x1 - adds r1, r4, r1 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - bl warp1_set_2 -_080C52C6: - bl sub_80842C8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80C527C - thumb_func_start sub_80C52D0 sub_80C52D0: @ 80C52D0 push {lr} diff --git a/include/field_effect.h b/include/field_effect.h index 4afc5cace..c2d14d43c 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -23,5 +23,6 @@ void sub_80853CC(u8 a0); void sub_8083598(u8 a0); void sub_8083A5C(struct Sprite * sprite, u8 spriteId); u8 sub_8083970(u16 species, s16 x, s16 y, bool8 unused); +void sub_80842C8(void); #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/overworld.h b/include/overworld.h index 04d28701c..324150779 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -149,5 +149,6 @@ void sub_8055778(int); void sub_8055738(u8 loc); void sub_8056078(void *, void *); +void sub_805546C(u8 a0); #endif //GUARD_OVERWORLD_H diff --git a/include/region_map.h b/include/region_map.h index 76195a3af..bc5f789bd 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -24,76 +24,10 @@ enum { MAPSECTYPE_CITY_CANTFLY, }; -struct RegionMap { - /*0x000*/ u16 mapSecId; - /*0x002*/ u8 iconDrawType; - /*0x003*/ u8 posWithinMapSec; - /*0x004*/ u8 mapSecName[0x14]; - /*0x018*/ u8 (*inputCallback)(void); - /*0x01c*/ struct Sprite *cursorSprite; - /*0x020*/ struct Sprite *playerIconSprite; - /*0x024*/ s32 bg2x; - /*0x028*/ s32 bg2y; - /*0x02c*/ u32 bg2pa; - /*0x034*/ u32 bg2pc; - /*0x030*/ u32 bg2pb; - /*0x038*/ u32 bg2pd; - /*0x03c*/ s32 unk_03c; - /*0x040*/ s32 unk_040; - /*0x044*/ s32 unk_044; - /*0x048*/ s32 unk_048; - /*0x04c*/ s32 unk_04c; - /*0x050*/ s32 unk_050; - /*0x054*/ u16 cursorPosX; - /*0x056*/ u16 cursorPosY; - /*0x058*/ u16 cursorTileTag; - /*0x05a*/ u16 cursorPaletteTag; - /*0x05c*/ s16 scrollX; - /*0x05e*/ s16 scrollY; - /*0x060*/ s16 unk_060; - /*0x062*/ s16 unk_062; - /*0x064*/ u16 zoomedCursorPosX; - /*0x066*/ u16 zoomedCursorPosY; - /*0x068*/ s16 zoomedCursorDeltaY; - /*0x06a*/ s16 zoomedCursorDeltaX; - /*0x06c*/ u16 zoomedCursorMovementFrameCounter; - /*0x06e*/ u16 unk_06e; - /*0x070*/ u16 playerIconTileTag; - /*0x072*/ u16 playerIconPaletteTag; - /*0x074*/ u16 playerIconSpritePosX; - /*0x076*/ u16 playerIconSpritePosY; - /*0x078*/ bool8 zoomed; - /*0x079*/ u8 initStep; - /*0x07a*/ s8 cursorMovementFrameCounter; - /*0x07b*/ s8 cursorDeltaX; - /*0x07c*/ s8 cursorDeltaY; - /*0x07d*/ bool8 needUpdateVideoRegs; - /*0x07e*/ bool8 blinkPlayerIcon; - /*0x07f*/ bool8 playerIsInCave; - /*0x080*/ u8 bgNum; - /*0x081*/ u8 charBaseIdx; - /*0x082*/ u8 mapBaseIdx; - /*0x083*/ bool8 bgManaged; - /*0x084*/ u8 filler_084[0x100]; - /*0x184*/ u8 cursorSmallImage[0x100]; - /*0x284*/ u8 cursorLargeImage[0x600]; -}; // size = 0x884 - // Exported RAM declarations // Exported ROM declarations -void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 zoomed); -bool8 sub_8122DB0(void); -void UpdateRegionMapVideoRegs(void); -void InitRegionMap(struct RegionMap *regionMap, u8 argument); -u8 sub_81230AC(void); -bool8 sub_8123514(void); -void FreeRegionMapIconResources(void); -u16 GetRegionMapSectionIdAt(u16 x, u16 y); -void CreateRegionMapPlayerIcon(u16 x, u16 y); -void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); u8 *GetMapName(u8 *dest, u16 mapsec, u16 fill); -bool32 sub_8124668(u8 mapSecId); u8 *GetMapNameGeneric(u8 *dest, u16 mapsec); void sub_80BFF50(u8 a0, void (*a1)(void)); void MCB2_FlyMap(void); diff --git a/src/region_map.c b/src/region_map.c index 6678a226a..f997791ba 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -10,6 +10,8 @@ #include "region_map.h" #include "window.h" #include "sound.h" +#include "party_menu.h" +#include "field_effect.h" #include "new_menu_helpers.h" #include "menu.h" #include "string_util.h" @@ -160,7 +162,7 @@ struct UnkStruct_20399E4 struct Sprite * field_01C; u16 field_020; u16 field_022; - u16 field_024[0x080]; + u16 field_024[0x80]; }; // size = 0x124 struct UnkStruct_20399E8 @@ -208,6 +210,13 @@ struct UnkStruct_20399F0 u16 win1v; }; +struct UnkStruct_20399FC +{ + u8 field_0; + u8 field_1; + u8 field_2; +}; + EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL; EWRAM_DATA struct UnkStruct_20399DC * gUnknown_20399DC = NULL; @@ -216,7 +225,7 @@ EWRAM_DATA struct UnkStruct_20399E4 * gUnknown_20399E4 = NULL; EWRAM_DATA struct UnkStruct_20399E8 * gUnknown_20399E8 = NULL; EWRAM_DATA struct UnkStruct_20399EC * gUnknown_20399EC = NULL; EWRAM_DATA struct UnkStruct_20399F0 * gUnknown_20399F0[3] = {}; -EWRAM_DATA void * gUnknown_20399FC = NULL; +EWRAM_DATA struct UnkStruct_20399FC * gUnknown_20399FC = NULL; static void sub_80BFFD0(void); void sub_80C0100(void); @@ -315,6 +324,9 @@ void sub_80C4E18(const u8 *str); void sub_80C4E74(const u8 *str); void sub_80C4ED0(bool8 a0); void sub_80C4F08(u8 taskId); +void sub_80C51E8(void); +void sub_80C5208(u8 taskId); +void sub_80C527C(u16 a0); #include "data/text/map_section_names.h" extern const u16 gUnknown_83EF23C[]; @@ -375,6 +387,7 @@ extern const union AnimCmd *const gUnknown_83F1C94[]; extern const union AnimCmd *const gUnknown_83F1C98[]; extern const u16 gUnknown_83F1CA0[]; extern const u8 gUnknown_83F1CA4[][2]; +extern const u8 gUnknown_83F1CA8[]; extern const u8 *const gUnknown_83F1CAC[]; extern const u16 gUnknown_83F1E60[][2]; extern const u16 gUnknown_83F2178[][2]; @@ -382,6 +395,7 @@ extern const u8 gUnknown_83F2490[][15][22]; extern const u8 gUnknown_83F2724[][15][22]; extern const u8 gUnknown_83F29B8[][15][22]; extern const u8 gUnknown_83F2C4C[][15][22]; +extern const u8 gUnknown_83F2EE0[][3]; static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint) { @@ -3269,3 +3283,202 @@ u8 *sub_80C4E08(u8 *dest, u16 mapsec) { return GetMapNameGeneric(dest, mapsec); } + +void sub_80C4E18(const u8 *str) +{ + if (gUnknown_20399D4->field_4797[2] == 1) + FillWindowPixelBuffer(3, PIXEL_FILL(0)); + else + FillWindowPixelBuffer(3, PIXEL_FILL(15)); + AddTextPrinterParameterized3(3, 0, 0, 0, gUnknown_83F1CA8, 0, str); + CopyWindowToVram(3, 2); +} + +void sub_80C4E74(const u8 *str) +{ + if (gUnknown_20399D4->field_4797[2] == 1) + FillWindowPixelBuffer(4, PIXEL_FILL(0)); + else + FillWindowPixelBuffer(4, PIXEL_FILL(15)); + AddTextPrinterParameterized3(4, 0, 0, 0, gUnknown_83F1CA8, 0, str); + CopyWindowToVram(4, 3); +} + +void sub_80C4ED0(bool8 mode) +{ + if (!mode) + { + PutWindowTilemap(3); + PutWindowTilemap(4); + } + else + { + ClearWindowTilemap(3); + ClearWindowTilemap(4); + } +} + +void MCB2_FlyMap(void) +{ + sub_80C51E8(); + sub_80BFEDC(2); +} + +void sub_80C4F08(u8 taskId) +{ + switch (gUnknown_20399FC->field_0) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + sub_80C4398(sub_80C0E20(), taskId, sub_80C07E4()); + sub_80C3008(0, 0); + sub_80C41D8(1, 1); + sub_80C3154(FALSE); + sub_80C4324(FALSE); + gUnknown_20399FC->field_0++; + break; + case 1: + if (sub_80C0E04(2) == TRUE) + { + sub_80C2208(taskId, sub_80C07E4()); + } + else + { + ShowBg(0); + ShowBg(3); + ShowBg(1); + sub_80C4E18(gUnknown_8418EB5); + sub_80C48BC(sub_80C0E20(), 25, FALSE); + sub_80C4960(sub_80C0E20(), 25, FALSE); + } + gUnknown_20399FC->field_0++; + break; + case 2: + sub_80C4E74(gUnknown_8418EB0); + sub_80C4ED0(FALSE); + gUnknown_20399FC->field_0++; + break; + case 3: + if (!gPaletteFade.active) + { + sub_80C0B18(); + PutWindowTilemap(0); + sub_80C0BB0(); + PutWindowTilemap(1); + gUnknown_20399FC->field_0++; + } + break; + case 4: + switch (sub_80C3400()) + { + case 1: + case 2: + break; + case 6: + gUnknown_20399FC->field_0 = 6; + break; + case 3: + if (sub_80C3AC8(0) == 2) + PlaySE(SE_Z_PAGE); + else + sub_80C0450(); + sub_80C3178(); + sub_80C0B18(); + sub_80C0BB0(); + sub_80C0B9C(); + if (sub_80C3508() == 21 && sub_80C3514() == 13) + { + PlaySE(SE_W255); + sub_80C4E74(gUnknown_8418E95); + } + else if (sub_80C3AC8(0) == 2 || sub_80C3AC8(0) == 4) + { + sub_80C4E74(gUnknown_8418EB0); + } + else + { + sub_80C4E74(gUnknown_8418E8B); + } + break; + case 4: + if ((sub_80C3AC8(0) == 2 || sub_80C3AC8(0) == 4) && sub_80C0E04(3) == TRUE) + { + switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)) + { + case 4: + case 8: + gUnknown_20399FC->field_2 = FALSE; + gUnknown_20399FC->field_0++; + break; + default: + PlaySE(SE_KAIFUKU); + gUnknown_20399FC->field_2 = TRUE; + gUnknown_20399FC->field_0++; + break; + } + } + break; + case 5: + sub_80C0E70(sub_80C0E20(), taskId, sub_80C07F8); + break; + } + break; + case 5: + if (sub_80C0E04(2) == TRUE) + sub_80C2C1C(taskId); + gUnknown_20399FC->field_0++; + break; + case 6: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gUnknown_20399FC->field_0++; + break; + default: + if (!gPaletteFade.active) + { + if (gUnknown_20399FC->field_2 == TRUE) + sub_80C527C(sub_80C3520()); + sub_80C5208(taskId); + } + break; + } +} + +void sub_80C51E8(void) +{ + gUnknown_20399FC = AllocZeroed(sizeof(struct UnkStruct_20399FC)); + gUnknown_20399FC->field_0 = 0; + gUnknown_20399FC->field_1 = 0; +} + +void sub_80C5208(u8 taskId) +{ + if (sub_80C0E04(2) == TRUE) + sub_80C25BC(); + sub_80C4A04(); + sub_80C3188(); + sub_80C4348(); + sub_80C4D30(); + sub_80C0898(); + DestroyTask(taskId); + FreeAllWindowBuffers(); + if (gUnknown_20399FC->field_2 == TRUE) + SetMainCallback2(CB2_ReturnToField); + else + SetMainCallback2(CB2_ReturnToPartyMenuFromFlyMap); + FREE_IF_NOT_NULL(gUnknown_20399FC); +} + +void sub_80C527C(u16 mapsec) +{ + u16 idx = mapsec - MAPSECS_KANTO; + if (gUnknown_83F2EE0[idx][2]) + { + sub_805546C(gUnknown_83F2EE0[idx][2]); + sub_8124C1C(gUnknown_83F2EE0[idx]); + } + else + { + warp1_set_2(gUnknown_83F2EE0[idx][0], gUnknown_83F2EE0[idx][1], -1); + } + sub_80842C8(); +} |