diff options
88 files changed, 3391 insertions, 2770 deletions
diff --git a/asm/battle_1.s b/asm/battle_1.s index 6ae993e27..c479650a7 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -294,7 +294,7 @@ sub_800F40C: @ 800F40C thumb_func_start LoadBattleTextboxAndBackground LoadBattleTextboxAndBackground: @ 800F420 push {lr} - ldr r0, _0800F454 @ =gUnknown_8D00000 + ldr r0, _0800F454 @ =gBattleTextboxTiles movs r1, 0xC0 lsls r1, 19 bl LZDecompressVram @@ -305,7 +305,7 @@ LoadBattleTextboxAndBackground: @ 800F420 bl CopyToBgTilemapBuffer movs r0, 0 bl CopyBgTilemapBufferToVram - ldr r0, _0800F45C @ =gUnknown_8D004D8 + ldr r0, _0800F45C @ =gBattleTextboxPalette movs r1, 0 movs r2, 0x40 bl LoadCompressedPalette @@ -314,9 +314,9 @@ LoadBattleTextboxAndBackground: @ 800F420 pop {r0} bx r0 .align 2, 0 -_0800F454: .4byte gUnknown_8D00000 +_0800F454: .4byte gBattleTextboxTiles _0800F458: .4byte gFile_graphics_interface_menu_map_tilemap -_0800F45C: .4byte gUnknown_8D004D8 +_0800F45C: .4byte gBattleTextboxPalette thumb_func_end LoadBattleTextboxAndBackground thumb_func_start sub_800F460 @@ -1385,13 +1385,13 @@ _0800FCD0: .4byte _0800FD68 .4byte _0800FD8C _0800FCEC: - ldr r0, _0800FCF8 @ =gUnknown_8D00000 + ldr r0, _0800FCF8 @ =gBattleTextboxTiles movs r1, 0xC0 lsls r1, 19 bl LZDecompressVram b _0800FD94 .align 2, 0 -_0800FCF8: .4byte gUnknown_8D00000 +_0800FCF8: .4byte gBattleTextboxTiles _0800FCFC: ldr r1, _0800FD10 @ =gFile_graphics_interface_menu_map_tilemap movs r0, 0 @@ -1404,13 +1404,13 @@ _0800FCFC: .align 2, 0 _0800FD10: .4byte gFile_graphics_interface_menu_map_tilemap _0800FD14: - ldr r0, _0800FD20 @ =gUnknown_8D004D8 + ldr r0, _0800FD20 @ =gBattleTextboxPalette movs r1, 0 movs r2, 0x40 bl LoadCompressedPalette b _0800FD94 .align 2, 0 -_0800FD20: .4byte gUnknown_8D004D8 +_0800FD20: .4byte gBattleTextboxPalette _0800FD24: bl sub_800FC2C lsls r0, 24 diff --git a/asm/battle_2.s b/asm/battle_2.s index e1dd268aa..b4414ad71 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -3597,7 +3597,7 @@ _08011A9C: ldr r0, _08011B74 @ =gBattle_BG3_Y strh r4, [r0] bl sub_800F34C - ldr r0, _08011B78 @ =gUnknown_8D004D8 + ldr r0, _08011B78 @ =gBattleTextboxPalette movs r1, 0 movs r2, 0x40 bl LoadCompressedPalette @@ -3655,7 +3655,7 @@ _08011B68: .4byte gBattle_BG2_X _08011B6C: .4byte gBattle_BG2_Y _08011B70: .4byte gBattle_BG3_X _08011B74: .4byte gBattle_BG3_Y -_08011B78: .4byte gUnknown_8D004D8 +_08011B78: .4byte gBattleTextboxPalette _08011B7C: .4byte gReservedSpritePaletteCount _08011B80: .4byte sub_80116F4 _08011B84: .4byte sub_800F6FC diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s index a778933e8..18b83bac6 100644 --- a/asm/battle_controller_link_opponent.s +++ b/asm/battle_controller_link_opponent.s @@ -3576,7 +3576,7 @@ LinkOpponentHandleLoadPokeSprite: @ 803C3B4 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _0803C4E8 @ =gMultiuseSpriteTemplate mov r8, r0 ldrb r0, [r6] @@ -3780,7 +3780,7 @@ sub_803C550: @ 803C550 lsls r1, 24 lsrs r1, 24 mov r0, r8 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _0803C6C0 @ =gMultiuseSpriteTemplate mov r9, r0 adds r0, r6, 0 diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s index 0087859c4..0398914cb 100644 --- a/asm/battle_controller_link_partner.s +++ b/asm/battle_controller_link_partner.s @@ -3370,7 +3370,7 @@ LinkPartnerHandleLoadPokeSprite: @ 80D5DB4 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _080D5EB4 @ =gMultiuseSpriteTemplate mov r8, r0 ldrb r0, [r6] @@ -3562,7 +3562,7 @@ sub_80D5F40: @ 80D5F40 lsls r1, 24 lsrs r1, 24 mov r0, r8 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _080D6098 @ =gMultiuseSpriteTemplate mov r10, r0 adds r0, r6, 0 diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s index 7ccd33f5d..cd2495a35 100644 --- a/asm/battle_controller_oak.s +++ b/asm/battle_controller_oak.s @@ -7071,7 +7071,7 @@ sub_80EAF34: @ 80EAF34 lsls r1, 24 lsrs r1, 24 mov r0, r8 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _080EB094 @ =gMultiuseSpriteTemplate mov r10, r0 adds r0, r6, 0 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index f1585b5e7..c7223984e 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -3649,7 +3649,7 @@ _080378AA: lsls r1, 24 lsrs r1, 24 mov r0, r8 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r6, _080379A0 @ =gMultiuseSpriteTemplate ldrb r0, [r7] movs r1, 0x2 @@ -3872,7 +3872,7 @@ sub_8037A28: @ 8037A28 lsls r1, 24 lsrs r1, 24 mov r0, r8 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _08037B98 @ =gMultiuseSpriteTemplate mov r9, r0 adds r0, r6, 0 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 9a2ef0f7d..370fa7ee8 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -7442,7 +7442,7 @@ sub_8031FF4: @ 8031FF4 lsls r1, 24 lsrs r1, 24 mov r0, r8 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _0803214C @ =gMultiuseSpriteTemplate mov r10, r0 adds r0, r6, 0 diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s index 37e3d688a..3eb6ecb33 100644 --- a/asm/battle_controller_pokedude.s +++ b/asm/battle_controller_pokedude.s @@ -3932,7 +3932,7 @@ sub_81580E0: @ 81580E0 lsls r1, 24 lsrs r1, 24 mov r0, r8 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _08158220 @ =gMultiuseSpriteTemplate mov r9, r0 ldrb r0, [r6] @@ -6336,7 +6336,7 @@ sub_8159478: @ 8159478 lsls r1, 24 lsrs r1, 24 mov r0, r8 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _081595D8 @ =gMultiuseSpriteTemplate mov r10, r0 adds r0, r6, 0 diff --git a/asm/battle_setup.s b/asm/battle_setup.s index 529787bf6..f4e1fdf0a 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -42,7 +42,7 @@ _0807F65E: cmp r0, 0x1 bne _0807F686 bl sub_812B484 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r0, _0807F68C @ =sub_800FD9C bl SetMainCallback2 bl sub_806D7E8 @@ -636,9 +636,9 @@ _0807FB74: .4byte 0x01000100 _0807FB78: .4byte gUnknown_2023E8A _0807FB7C: .4byte c2_whiteout _0807FB80: - ldr r0, _0807FB94 @ =c2_exit_to_overworld_2_switch + ldr r0, _0807FB94 @ =CB2_ReturnToField bl SetMainCallback2 - ldr r1, _0807FB98 @ =gUnknown_3005020 + ldr r1, _0807FB98 @ =gFieldCallback ldr r0, _0807FB9C @ =sub_807E3EC str r0, [r1] _0807FB8C: @@ -646,8 +646,8 @@ _0807FB8C: pop {r0} bx r0 .align 2, 0 -_0807FB94: .4byte c2_exit_to_overworld_2_switch -_0807FB98: .4byte gUnknown_3005020 +_0807FB94: .4byte CB2_ReturnToField +_0807FB98: .4byte gFieldCallback _0807FB9C: .4byte sub_807E3EC thumb_func_end sub_807FB40 diff --git a/asm/battle_tower.s b/asm/battle_tower.s index e4c7f17ba..0f268a320 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -2033,7 +2033,7 @@ sub_80E68C4: @ 80E68C4 ldr r0, _080E68F4 @ =gMain ldr r1, _080E68F8 @ =sub_80E6854 str r1, [r0, 0x8] - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r0, _080E68FC @ =sub_800FD9C bl SetMainCallback2 adds r0, r4, 0 diff --git a/asm/unk_814B6F0.s b/asm/berry_crush.s index 8cf90cd23..eb5e8d08d 100644 --- a/asm/unk_814B6F0.s +++ b/asm/berry_crush.s @@ -39,7 +39,7 @@ _0814B716: str r0, [r5] adds r0, r4, 0 bl SetMainCallback2 - ldr r0, _0814B748 @ =c2_exit_to_overworld_2_switch + ldr r0, _0814B748 @ =CB2_ReturnToField cmp r4, r0 bne _0814B73E ldr r0, _0814B74C @ =0x0000012f @@ -53,7 +53,7 @@ _0814B740: pop {r1} bx r1 .align 2, 0 -_0814B748: .4byte c2_exit_to_overworld_2_switch +_0814B748: .4byte CB2_ReturnToField _0814B74C: .4byte 0x0000012f _0814B750: .4byte sub_8056534 thumb_func_end sub_814B6FC diff --git a/asm/unk_814BB4C.s b/asm/berry_crush_2.s index 5ad566185..7477bbf9c 100644 --- a/asm/unk_814BB4C.s +++ b/asm/berry_crush_2.s @@ -2949,7 +2949,7 @@ _0814D1CA: bl sub_80F7858 b _0814D230 _0814D1D0: - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r4, r0, 24 movs r0, 0x2 diff --git a/asm/unk_814D5C8.s b/asm/berry_crush_3.s index 23968f655..23968f655 100644 --- a/asm/unk_814D5C8.s +++ b/asm/berry_crush_3.s diff --git a/asm/cable_club.s b/asm/cable_club.s index c7d8a86a6..91ddde46d 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -1631,7 +1631,7 @@ _08081410: _08081418: str r0, [r1] _0808141A: - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r1, _08081444 @ =gTrainerBattleOpponent_A movs r2, 0x80 lsls r2, 4 @@ -1854,7 +1854,7 @@ _080815E0: _080815E8: str r0, [r1] _080815EA: - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r1, _08081614 @ =gTrainerBattleOpponent_A movs r3, 0x80 lsls r3, 4 @@ -1905,14 +1905,14 @@ _0808164C: lsls r0, 24 cmp r0, 0 beq _0808165C - ldr r0, _08081664 @ =c2_exit_to_overworld_2_switch + ldr r0, _08081664 @ =CB2_ReturnToField bl SetMainCallback2 _0808165C: pop {r4} pop {r0} bx r0 .align 2, 0 -_08081664: .4byte c2_exit_to_overworld_2_switch +_08081664: .4byte CB2_ReturnToField thumb_func_end sub_8081624 thumb_func_start sub_8081668 diff --git a/asm/clear_save_data_screen.s b/asm/clear_save_data_screen.s index 84dd082f6..c92e072cb 100644 --- a/asm/clear_save_data_screen.s +++ b/asm/clear_save_data_screen.s @@ -152,7 +152,7 @@ _080F569C: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu movs r0, 0 bl CopyBgTilemapBufferToVram b _080F56E2 @@ -204,7 +204,7 @@ sub_80F5708: @ 80F5708 ldrb r0, [r0] cmp r0, 0 bne _080F578C - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r4, r0, 24 movs r0, 0x1 diff --git a/asm/credits.s b/asm/credits.s index 0413aac97..d6b72605b 100644 --- a/asm/credits.s +++ b/asm/credits.s @@ -177,7 +177,7 @@ sub_80F3B04: @ 80F3B04 beq _080F3B20 ldrb r0, [r1, 0xA] bl RemoveWindow - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r1, [r4] movs r0, 0 strb r0, [r1, 0xB] @@ -1279,13 +1279,13 @@ _080F4374: movs r0, 0x1 adds r2, r5, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r1, _080F44B4 @ =gUnknown_840C650 str r4, [sp] movs r0, 0x2 adds r2, r5, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r1, _080F44B8 @ =gUnknown_8EAB30C movs r2, 0xA0 lsls r2, 3 @@ -1293,14 +1293,14 @@ _080F4374: str r4, [sp] movs r0, 0x1 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r1, _080F44BC @ =gUnknown_840CA54 movs r2, 0x80 lsls r2, 3 str r4, [sp] movs r0, 0x2 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r0, [r6] ldrb r0, [r0, 0x9] lsls r0, 5 @@ -1620,7 +1620,7 @@ _080F46A0: str r5, [sp] movs r0, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r0, [r6] ldrb r1, [r0, 0x9] lsls r0, r1, 1 @@ -1635,7 +1635,7 @@ _080F46A0: str r0, [sp] movs r0, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r0, [r6] ldrb r1, [r0, 0x9] lsls r0, r1, 1 diff --git a/asm/unk_81507FC.s b/asm/dodrio_berry_picking.s index 19b2b2c43..19b2b2c43 100644 --- a/asm/unk_81507FC.s +++ b/asm/dodrio_berry_picking.s diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s index 914012da5..2428f2984 100644 --- a/asm/egg_hatch.s +++ b/asm/egg_hatch.s @@ -5,1816 +5,4 @@ .text - thumb_func_start sub_8046BFC -sub_8046BFC: @ 8046BFC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x50 - adds r6, r0, 0 - adds r5, r1, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x3C] - movs r4, 0 - add r7, sp, 0x18 - movs r0, 0x31 - add r0, sp - mov r10, r0 - mov r1, sp - adds r1, 0x32 - str r1, [sp, 0x40] - mov r0, sp - adds r0, 0x34 - str r0, [sp, 0x48] - add r1, sp, 0x30 - mov r9, r1 - subs r0, 0x1 - str r0, [sp, 0x44] - mov r1, sp - adds r1, 0x38 - str r1, [sp, 0x4C] -_08046C3C: - adds r1, r4, 0 - adds r1, 0xD - adds r0, r6, 0 - bl GetMonData - lsls r1, r4, 1 - add r1, sp - adds r1, 0x10 - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _08046C3C - adds r0, r6, 0 - movs r1, 0 - bl GetMonData - mov r8, r0 - movs r4, 0 -_08046C64: - adds r1, r4, 0 - adds r1, 0x27 - adds r0, r6, 0 - bl GetMonData - lsls r1, r4, 2 - adds r1, r7, r1 - str r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _08046C64 - adds r0, r6, 0 - movs r1, 0x25 - bl GetMonData - mov r1, r10 - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x8 - bl GetMonData - ldr r1, [sp, 0x40] - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x22 - bl GetMonData - str r0, [sp, 0x38] - adds r0, r6, 0 - movs r1, 0x50 - bl GetMonData - ldr r1, [sp, 0x48] - strb r0, [r1] - movs r0, 0x1 - str r0, [sp] - mov r0, r8 - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - str r0, [sp, 0xC] - adds r0, r5, 0 - ldr r1, [sp, 0x3C] - movs r2, 0x5 - movs r3, 0x20 - bl CreateMon - movs r4, 0 -_08046CC8: - adds r1, r4, 0 - adds r1, 0xD - lsls r0, r4, 1 - mov r2, sp - adds r2, r0 - adds r2, 0x10 - adds r0, r5, 0 - bl SetMonData - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _08046CC8 - movs r4, 0 -_08046CE6: - adds r1, r4, 0 - adds r1, 0x27 - lsls r2, r4, 2 - adds r2, r7, r2 - adds r0, r5, 0 - bl SetMonData - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _08046CE6 - movs r0, 0x2 - mov r1, r9 - strb r0, [r1] - adds r0, r5, 0 - movs r1, 0x3 - mov r2, r9 - bl SetMonData - adds r0, r5, 0 - movs r1, 0x25 - mov r2, r10 - bl SetMonData - adds r0, r5, 0 - movs r1, 0x8 - ldr r2, [sp, 0x40] - bl SetMonData - movs r0, 0x78 - ldr r1, [sp, 0x44] - strb r0, [r1] - adds r0, r5, 0 - movs r1, 0x20 - ldr r2, [sp, 0x44] - bl SetMonData - adds r0, r5, 0 - movs r1, 0x22 - ldr r2, [sp, 0x4C] - bl SetMonData - adds r0, r5, 0 - movs r1, 0x50 - ldr r2, [sp, 0x48] - bl SetMonData - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - add sp, 0x50 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8046BFC - - thumb_func_start AddHatchedMonToParty -AddHatchedMonToParty: @ 8046D60 - push {r4,r5,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - add r4, sp, 0xC - movs r1, 0x46 - strb r1, [r4] - movs r1, 0x64 - adds r5, r0, 0 - muls r5, r1 - ldr r0, _08046E14 @ =gPlayerParty - adds r5, r0 - ldr r1, _08046E18 @ =gEnemyParty - adds r0, r5, 0 - bl sub_8046BFC - adds r0, r5, 0 - movs r1, 0x2D - adds r2, r4, 0 - bl SetMonData - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, sp - adds r1, r4, 0 - bl GetSpeciesName - adds r0, r5, 0 - movs r1, 0x2 - mov r2, sp - bl SetMonData - adds r0, r4, 0 - bl SpeciesToNationalPokedexNum - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x2 - bl GetSetPokedexFlag - adds r0, r4, 0 - movs r1, 0x3 - bl GetSetPokedexFlag - ldr r1, _08046E1C @ =gStringVar1 - adds r0, r5, 0 - bl GetMonNick - mov r2, sp - adds r2, 0xE - movs r0, 0x4 - strh r0, [r2] - adds r0, r5, 0 - movs r1, 0x26 - bl SetMonData - add r2, sp, 0x10 - movs r0, 0 - strh r0, [r2] - adds r0, r5, 0 - movs r1, 0x24 - bl SetMonData - bl sav1_map_get_name - mov r2, sp - adds r2, 0x12 - strb r0, [r2] - adds r0, r5, 0 - movs r1, 0x23 - bl SetMonData - adds r0, r5, 0 - bl MonRestorePP - adds r0, r5, 0 - bl CalculateMonStats - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08046E14: .4byte gPlayerParty -_08046E18: .4byte gEnemyParty -_08046E1C: .4byte gStringVar1 - thumb_func_end AddHatchedMonToParty - - thumb_func_start ScriptHatchMon -ScriptHatchMon: @ 8046E20 - push {lr} - ldr r0, _08046E30 @ =gSpecialVar_0x8004 - ldrb r0, [r0] - bl AddHatchedMonToParty - pop {r0} - bx r0 - .align 2, 0 -_08046E30: .4byte gSpecialVar_0x8004 - thumb_func_end ScriptHatchMon - - thumb_func_start sub_8046E34 -sub_8046E34: @ 8046E34 - push {r4,r5,lr} - sub sp, 0x20 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0x8C - muls r1, r2 - adds r4, r0, r1 - adds r0, r4, 0 - mov r1, sp - bl GetBoxMonNick - adds r0, r4, 0 - adds r0, 0x70 - ldrh r0, [r0] - cmp r0, 0 - beq _08046EA0 - adds r5, r4, 0 - adds r5, 0x7C - mov r0, sp - adds r1, r5, 0 - bl StringCompare - adds r4, 0x74 - cmp r0, 0 - bne _08046E74 - ldr r0, _08046E90 @ =gSaveBlock2Ptr - ldr r0, [r0] - adds r1, r4, 0 - bl StringCompare - cmp r0, 0 - beq _08046EA0 -_08046E74: - ldr r0, _08046E94 @ =gStringVar1 - mov r1, sp - bl StringCopy - ldr r0, _08046E98 @ =gStringVar2 - adds r1, r4, 0 - bl StringCopy - ldr r0, _08046E9C @ =gStringVar3 - adds r1, r5, 0 - bl StringCopy - movs r0, 0x1 - b _08046EA2 - .align 2, 0 -_08046E90: .4byte gSaveBlock2Ptr -_08046E94: .4byte gStringVar1 -_08046E98: .4byte gStringVar2 -_08046E9C: .4byte gStringVar3 -_08046EA0: - movs r0, 0 -_08046EA2: - add sp, 0x20 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8046E34 - - thumb_func_start sub_8046EAC -sub_8046EAC: @ 8046EAC - push {lr} - ldr r0, _08046EC8 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xBE - lsls r1, 6 - adds r0, r1 - ldr r1, _08046ECC @ =gSpecialVar_0x8004 - ldrb r1, [r1] - bl sub_8046E34 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08046EC8: .4byte gSaveBlock1Ptr -_08046ECC: .4byte gSpecialVar_0x8004 - thumb_func_end sub_8046EAC - - thumb_func_start sub_8046ED0 -sub_8046ED0: @ 8046ED0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r3 - lsls r0, 24 - lsrs r3, r0, 24 - mov r8, r3 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r1, r2, 24 - adds r2, r1, 0 - movs r4, 0 - movs r7, 0 - movs r5, 0 - cmp r3, 0 - bne _08046EFE - movs r0, 0x64 - muls r1, r0 - ldr r0, _08046F18 @ =gPlayerParty - adds r5, r1, r0 - movs r4, 0x1 -_08046EFE: - cmp r3, 0x1 - bne _08046F0E - movs r0, 0x64 - adds r1, r2, 0 - muls r1, r0 - ldr r0, _08046F18 @ =gPlayerParty - adds r5, r1, r0 - movs r4, 0x3 -_08046F0E: - cmp r6, 0 - beq _08046F1C - cmp r6, 0x1 - beq _08046F6C - b _08046FA6 - .align 2, 0 -_08046F18: .4byte gPlayerParty -_08046F1C: - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0 - bl GetMonData - adds r3, r0, 0 - lsls r0, r4, 3 - ldr r1, _08046F64 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08046F68 @ =gMonSpritesGfxPtr - ldr r2, [r1] - mov r6, r8 - lsls r1, r6, 1 - adds r1, 0x1 - lsls r1, 2 - adds r2, 0x4 - adds r2, r1 - ldr r1, [r2] - adds r2, r4, 0 - bl sub_800ECC4 - adds r0, r5, 0 - bl GetMonSpritePalStruct - bl LoadCompressedObjectPalette - mov r0, r9 - strh r4, [r0] - b _08046FA6 - .align 2, 0 -_08046F64: .4byte gMonFrontPicTable -_08046F68: .4byte gMonSpritesGfxPtr -_08046F6C: - adds r0, r5, 0 - bl GetMonSpritePalStruct - ldrh r0, [r0, 0x4] - adds r1, r4, 0 - bl sub_803F7D4 - ldr r0, _08046FB4 @ =gMultiuseSpriteTemplate - movs r1, 0x78 - movs r2, 0x46 - movs r3, 0x6 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, _08046FB8 @ =gSprites - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - adds r2, r1, r4 - adds r2, 0x3E - ldrb r0, [r2] - movs r3, 0x4 - orrs r0, r3 - strb r0, [r2] - adds r4, 0x1C - adds r1, r4 - ldr r0, _08046FBC @ =SpriteCallbackDummy - str r0, [r1] -_08046FA6: - adds r0, r7, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08046FB4: .4byte gMultiuseSpriteTemplate -_08046FB8: .4byte gSprites -_08046FBC: .4byte SpriteCallbackDummy - thumb_func_end sub_8046ED0 - - thumb_func_start sub_8046FC0 -sub_8046FC0: @ 8046FC0 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_8046FC0 - - thumb_func_start sub_8046FD4 -sub_8046FD4: @ 8046FD4 - push {lr} - sub sp, 0x4 - bl ScriptContext2_Enable - ldr r0, _08047000 @ =sub_8047004 - movs r1, 0xA - bl CreateTask - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl sub_812B478 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08047000: .4byte sub_8047004 - thumb_func_end sub_8046FD4 - - thumb_func_start sub_8047004 -sub_8047004: @ 8047004 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08047034 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804702C - bl sub_80563F0 - ldr r0, _08047038 @ =CB2_EggHatch_0 - bl SetMainCallback2 - ldr r1, _0804703C @ =gUnknown_3005020 - ldr r0, _08047040 @ =sub_807DD24 - str r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_0804702C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08047034: .4byte gPaletteFade -_08047038: .4byte CB2_EggHatch_0 -_0804703C: .4byte gUnknown_3005020 -_08047040: .4byte sub_807DD24 - thumb_func_end sub_8047004 - - thumb_func_start CB2_EggHatch_0 -CB2_EggHatch_0: @ 8047044 - push {r4,lr} - sub sp, 0x4 - ldr r0, _08047064 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x8 - bls _08047058 - b _0804727A -_08047058: - lsls r0, 2 - ldr r1, _08047068 @ =_0804706C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08047064: .4byte gMain -_08047068: .4byte _0804706C - .align 2, 0 -_0804706C: - .4byte _08047090 - .4byte _0804715C - .4byte _08047174 - .4byte _080471A8 - .4byte _080471C8 - .4byte _080471E0 - .4byte _080471F8 - .4byte _08047214 - .4byte _0804726C -_08047090: - movs r0, 0 - movs r1, 0 - bl SetGpuReg - ldr r4, _08047148 @ =gUnknown_3000E74 - movs r0, 0x14 - bl Alloc - str r0, [r4] - bl AllocateMonSpritesGfx - ldr r2, [r4] - ldr r0, _0804714C @ =gSpecialVar_0x8004 - ldrh r0, [r0] - movs r1, 0 - strb r0, [r2, 0x4] - ldr r0, [r4] - strb r1, [r0, 0x7] - ldr r0, _08047150 @ =sub_8046FC0 - bl SetVBlankCallback - bl GetCurrentMapMusic - ldr r1, _08047154 @ =gSpecialVar_0x8005 - strh r0, [r1] - bl reset_temp_tile_data_buffers - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _08047158 @ =gUnknown_826019C - movs r0, 0 - movs r2, 0x2 - bl InitBgsFromTemplates - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0x7 - movs r2, 0x2 - bl SetBgAttribute - movs r0, 0x80 - lsls r0, 5 - bl Alloc - adds r1, r0, 0 - movs r0, 0x1 - bl SetBgTilemapBuffer - movs r0, 0x80 - lsls r0, 6 - bl Alloc - adds r1, r0, 0 - movs r0, 0 - bl SetBgTilemapBuffer - bl DeactivateAllTextPrinters - bl ResetPaletteFade - bl FreeAllSpritePalettes - bl ResetSpriteData - bl ResetTasks - bl ScanlineEffect_Stop - bl m4aSoundVSyncOn - b _0804724A - .align 2, 0 -_08047148: .4byte gUnknown_3000E74 -_0804714C: .4byte gSpecialVar_0x8004 -_08047150: .4byte sub_8046FC0 -_08047154: .4byte gSpecialVar_0x8005 -_08047158: .4byte gUnknown_826019C -_0804715C: - ldr r0, _0804716C @ =gUnknown_82601A4 - bl InitWindows - ldr r0, _08047170 @ =gUnknown_3000E74 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x8] - b _0804724A - .align 2, 0 -_0804716C: .4byte gUnknown_82601A4 -_08047170: .4byte gUnknown_3000E74 -_08047174: - ldr r1, _0804719C @ =gUnknown_8D00000 - movs r0, 0 - str r0, [sp] - movs r2, 0 - movs r3, 0 - bl sub_80F696C - ldr r1, _080471A0 @ =gFile_graphics_interface_menu_map_tilemap - movs r0, 0 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - ldr r0, _080471A4 @ =gUnknown_8D004D8 - movs r1, 0 - movs r2, 0x20 - bl LoadCompressedPalette - b _0804724A - .align 2, 0 -_0804719C: .4byte gUnknown_8D00000 -_080471A0: .4byte gFile_graphics_interface_menu_map_tilemap -_080471A4: .4byte gUnknown_8D004D8 -_080471A8: - ldr r0, _080471BC @ =gUnknown_826011C - bl LoadSpriteSheet - ldr r0, _080471C0 @ =gUnknown_8260124 - bl LoadSpriteSheet - ldr r0, _080471C4 @ =gUnknown_826012C - bl LoadSpritePalette - b _0804724A - .align 2, 0 -_080471BC: .4byte gUnknown_826011C -_080471C0: .4byte gUnknown_8260124 -_080471C4: .4byte gUnknown_826012C -_080471C8: - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, _080471DC @ =gUnknown_3000E74 - ldr r0, [r0] - ldrb r0, [r0, 0x4] - bl AddHatchedMonToParty - b _0804724A - .align 2, 0 -_080471DC: .4byte gUnknown_3000E74 -_080471E0: - ldr r0, _080471F4 @ =gUnknown_3000E74 - ldr r3, [r0] - ldrb r2, [r3, 0x4] - adds r3, 0xC - movs r0, 0 - movs r1, 0 - bl sub_8046ED0 - b _0804724A - .align 2, 0 -_080471F4: .4byte gUnknown_3000E74 -_080471F8: - ldr r4, _08047210 @ =gUnknown_3000E74 - ldr r3, [r4] - ldrb r2, [r3, 0x4] - adds r3, 0xC - movs r0, 0 - movs r1, 0x1 - bl sub_8046ED0 - ldr r1, [r4] - strb r0, [r1, 0x1] - b _0804724A - .align 2, 0 -_08047210: .4byte gUnknown_3000E74 -_08047214: - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r0, _0804725C @ =gUnknown_8EAEA20 - movs r1, 0x10 - movs r2, 0xA0 - bl LoadPalette - ldr r1, _08047260 @ =gUnknown_8EAEA80 - movs r2, 0xA1 - lsls r2, 5 - movs r0, 0x1 - movs r3, 0 - bl LoadBgTiles - ldr r1, _08047264 @ =gUnknown_826601C - movs r2, 0x80 - lsls r2, 5 - movs r0, 0x1 - movs r3, 0 - bl CopyToBgTilemapBuffer - movs r0, 0x1 - bl CopyBgTilemapBufferToVram -_0804724A: - ldr r1, _08047268 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804727A - .align 2, 0 -_0804725C: .4byte gUnknown_8EAEA20 -_08047260: .4byte gUnknown_8EAEA80 -_08047264: .4byte gUnknown_826601C -_08047268: .4byte gMain -_0804726C: - ldr r0, _08047298 @ =sub_8047338 - bl SetMainCallback2 - ldr r0, _0804729C @ =gUnknown_3000E74 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x2] -_0804727A: - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08047298: .4byte sub_8047338 -_0804729C: .4byte gUnknown_3000E74 - thumb_func_end CB2_EggHatch_0 - - thumb_func_start EggHatchSetMonNickname -EggHatchSetMonNickname: @ 80472A0 - push {lr} - ldr r0, _080472D0 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080472D4 @ =gPlayerParty - adds r0, r1 - ldr r2, _080472D8 @ =gStringVar3 - movs r1, 0x2 - bl SetMonData - bl FreeMonSpritesGfx - ldr r0, _080472DC @ =gUnknown_3000E74 - ldr r0, [r0] - bl Free - bl sub_812B484 - ldr r0, _080472E0 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_080472D0: .4byte gSpecialVar_0x8004 -_080472D4: .4byte gPlayerParty -_080472D8: .4byte gStringVar3 -_080472DC: .4byte gUnknown_3000E74 -_080472E0: .4byte c2_exit_to_overworld_2_switch - thumb_func_end EggHatchSetMonNickname - - thumb_func_start sub_80472E4 -sub_80472E4: @ 80472E4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08047330 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08047300 - bl StopMapMusic -_08047300: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _0804730E - ldr r0, _08047334 @ =0x00000107 - bl PlayBGM -_0804730E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x3C - ble _08047324 - movs r0, 0x84 - lsls r0, 1 - bl PlayBGM - adds r0, r5, 0 - bl DestroyTask -_08047324: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08047330: .4byte gTasks -_08047334: .4byte 0x00000107 - thumb_func_end sub_80472E4 - - thumb_func_start sub_8047338 -sub_8047338: @ 8047338 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0xC - ldr r1, _0804735C @ =gUnknown_3000E74 - ldr r0, [r1] - ldrb r0, [r0, 0x2] - adds r5, r1, 0 - cmp r0, 0xC - bls _08047352 - b _08047684 -_08047352: - lsls r0, 2 - ldr r1, _08047360 @ =_08047364 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804735C: .4byte gUnknown_3000E74 -_08047360: .4byte _08047364 - .align 2, 0 -_08047364: - .4byte _08047398 - .4byte _080473E4 - .4byte _0804740C - .4byte _08047444 - .4byte _08047474 - .4byte _08047482 - .4byte _080474E8 - .4byte _080474F6 - .4byte _08047504 - .4byte _08047548 - .4byte _08047588 - .4byte _08047634 - .4byte _08047654 -_08047398: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _080473D8 @ =gUnknown_8260134 - movs r1, 0x78 - movs r2, 0x4B - movs r3, 0x5 - bl CreateSprite - ldr r4, _080473DC @ =gUnknown_3000E74 - ldr r1, [r4] - strb r0, [r1] - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - ldr r1, [r4] - ldrb r0, [r1, 0x2] - adds r0, 0x1 - strb r0, [r1, 0x2] - ldr r0, _080473E0 @ =sub_80472E4 - movs r1, 0x5 - bl CreateTask - b _08047684 - .align 2, 0 -_080473D8: .4byte gUnknown_8260134 -_080473DC: .4byte gUnknown_3000E74 -_080473E0: .4byte sub_80472E4 -_080473E4: - ldr r0, _08047408 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080473F6 - b _08047684 -_080473F6: - ldr r0, [r5] - ldrb r0, [r0, 0x8] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, [r5] - strb r4, [r0, 0x3] - ldr r1, [r5] - b _08047648 - .align 2, 0 -_08047408: .4byte gPaletteFade -_0804740C: - ldr r1, [r5] - ldrb r0, [r1, 0x3] - adds r0, 0x1 - strb r0, [r1, 0x3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1E - bhi _0804741E - b _08047684 -_0804741E: - ldr r1, [r5] - ldrb r0, [r1, 0x2] - adds r0, 0x1 - strb r0, [r1, 0x2] - ldr r2, _0804743C @ =gSprites - ldr r0, [r5] - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _08047440 @ =SpriteCB_Egg_0 - str r1, [r0] - b _08047684 - .align 2, 0 -_0804743C: .4byte gSprites -_08047440: .4byte SpriteCB_Egg_0 -_08047444: - ldr r2, _0804746C @ =gSprites - ldr r3, [r5] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08047470 @ =SpriteCallbackDummy - cmp r1, r0 - beq _0804745E - b _08047684 -_0804745E: - ldrh r0, [r3, 0xC] - movs r1, 0 - bl PlayCry1 - ldr r1, [r5] - b _08047648 - .align 2, 0 -_0804746C: .4byte gSprites -_08047470: .4byte SpriteCallbackDummy -_08047474: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _08047480 - b _08047684 -_08047480: - b _08047644 -_08047482: - ldr r0, [r5] - ldrb r1, [r0, 0x4] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080474D4 @ =gPlayerParty - adds r0, r1 - ldr r1, _080474D8 @ =gStringVar1 - bl GetMonNick - ldr r4, _080474DC @ =gStringVar4 - ldr r1, _080474E0 @ =gUnknown_841B6FD - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, [r5] - ldrb r0, [r0, 0x8] - movs r1, 0xFF - str r1, [sp] - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x3 - bl EggHatchPrintMessage - ldr r0, _080474E4 @ =0x00000103 - bl PlayFanfare - ldr r1, [r5] - ldrb r0, [r1, 0x2] - adds r0, 0x1 - strb r0, [r1, 0x2] - ldr r0, [r5] - ldrb r0, [r0, 0x8] - bl PutWindowTilemap - ldr r0, [r5] - ldrb r0, [r0, 0x8] - movs r1, 0x3 - bl CopyWindowToVram - b _08047684 - .align 2, 0 -_080474D4: .4byte gPlayerParty -_080474D8: .4byte gStringVar1 -_080474DC: .4byte gStringVar4 -_080474E0: .4byte gUnknown_841B6FD -_080474E4: .4byte 0x00000103 -_080474E8: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - bne _080474F4 - b _08047684 -_080474F4: - b _08047644 -_080474F6: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - bne _08047502 - b _08047684 -_08047502: - b _08047644 -_08047504: - ldr r0, [r5] - ldrb r1, [r0, 0x4] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08047538 @ =gPlayerParty - adds r0, r1 - ldr r1, _0804753C @ =gStringVar1 - bl GetMonNick - ldr r4, _08047540 @ =gStringVar4 - ldr r1, _08047544 @ =gUnknown_841B716 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, [r5] - ldrb r0, [r0, 0x8] - movs r1, 0x1 - str r1, [sp] - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x2 - bl EggHatchPrintMessage - ldr r1, [r5] - b _08047648 - .align 2, 0 -_08047538: .4byte gPlayerParty -_0804753C: .4byte gStringVar1 -_08047540: .4byte gStringVar4 -_08047544: .4byte gUnknown_841B716 -_08047548: - ldr r0, [r5] - ldrb r0, [r0, 0x8] - bl IsTextPrinterActive - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0 - beq _0804755A - b _08047684 -_0804755A: - ldr r0, [r5] - ldrb r0, [r0, 0x8] - movs r4, 0xA0 - lsls r4, 1 - adds r1, r4, 0 - movs r2, 0xE0 - bl sub_814FE40 - ldr r0, _08047584 @ =gUnknown_82601B4 - str r4, [sp] - movs r1, 0xE - str r1, [sp, 0x4] - str r6, [sp, 0x8] - movs r1, 0x3 - movs r2, 0 - movs r3, 0x2 - bl sub_810FF60 - ldr r1, [r5] - b _08047648 - .align 2, 0 -_08047584: .4byte gUnknown_82601B4 -_08047588: - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _080475A8 - cmp r1, 0 - bgt _080475A2 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08047644 - b _08047684 -_080475A2: - cmp r1, 0x1 - beq _08047644 - b _08047684 -_080475A8: - ldr r0, _08047624 @ =gUnknown_3000E74 - mov r9, r0 - ldr r0, [r0] - ldrb r0, [r0, 0x4] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r6, _08047628 @ =gPlayerParty - adds r0, r6 - ldr r1, _0804762C @ =gStringVar3 - mov r10, r1 - bl GetMonNick - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x4] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x4] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - bl GetMonGender - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x4] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0 - movs r2, 0 - bl GetMonData - str r0, [sp] - ldr r0, _08047630 @ =EggHatchSetMonNickname - str r0, [sp, 0x4] - movs r0, 0x3 - mov r1, r10 - adds r2, r5, 0 - adds r3, r4, 0 - bl DoNamingScreen - b _08047684 - .align 2, 0 -_08047624: .4byte gUnknown_3000E74 -_08047628: .4byte gPlayerParty -_0804762C: .4byte gStringVar3 -_08047630: .4byte EggHatchSetMonNickname -_08047634: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_08047644: - ldr r0, _08047650 @ =gUnknown_3000E74 - ldr r1, [r0] -_08047648: - ldrb r0, [r1, 0x2] - adds r0, 0x1 - strb r0, [r1, 0x2] - b _08047684 - .align 2, 0 -_08047650: .4byte gUnknown_3000E74 -_08047654: - ldr r0, _080476A8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08047684 - ldr r0, [r5] - ldrb r0, [r0, 0x8] - bl RemoveWindow - movs r0, 0 - bl UnsetBgTilemapBuffer - movs r0, 0x1 - bl UnsetBgTilemapBuffer - ldr r0, [r5] - bl Free - ldr r0, _080476AC @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - bl sub_812B484 -_08047684: - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080476A8: .4byte gPaletteFade -_080476AC: .4byte c2_exit_to_overworld_2_switch - thumb_func_end sub_8047338 - - thumb_func_start SpriteCB_Egg_0 -SpriteCB_Egg_0: @ 80476B0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080476D0 - ldr r0, _080476CC @ =SpriteCB_Egg_1 - str r0, [r4, 0x1C] - movs r0, 0 - strh r0, [r4, 0x2E] - b _08047700 - .align 2, 0 -_080476CC: .4byte SpriteCB_Egg_1 -_080476D0: - ldrh r0, [r4, 0x30] - adds r0, 0x14 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x1 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xF - bne _08047700 - movs r0, 0x17 - bl PlaySE - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - bl CreateRandomEggShardSprite -_08047700: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_Egg_0 - - thumb_func_start SpriteCB_Egg_1 -SpriteCB_Egg_1: @ 8047708 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - ble _08047764 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _08047738 - ldr r0, _08047734 @ =SpriteCB_Egg_2 - str r0, [r4, 0x1C] - strh r1, [r4, 0x2E] - strh r1, [r4, 0x32] - b _08047764 - .align 2, 0 -_08047734: .4byte SpriteCB_Egg_2 -_08047738: - ldrh r0, [r4, 0x30] - adds r0, 0x14 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x2 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xF - bne _08047764 - movs r0, 0x17 - bl PlaySE - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim -_08047764: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_Egg_1 - - thumb_func_start SpriteCB_Egg_2 -SpriteCB_Egg_2: @ 804776C - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - movs r6, 0 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - ble _08047826 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x26 - ble _080477E4 - ldr r0, _080477D0 @ =SpriteCB_Egg_3 - str r0, [r4, 0x1C] - strh r6, [r4, 0x2E] - ldr r5, _080477D4 @ =gUnknown_3000E74 - ldr r0, [r5] - ldrb r1, [r0, 0x4] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080477D8 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - ldr r4, _080477DC @ =gSprites - ldr r3, [r5] - ldrb r2, [r3, 0x1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - strh r6, [r1, 0x24] - ldrb r2, [r3, 0x1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldr r2, _080477E0 @ =gUnknown_82349CC - lsrs r0, 14 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r1, 0x26] - b _08047826 - .align 2, 0 -_080477D0: .4byte SpriteCB_Egg_3 -_080477D4: .4byte gUnknown_3000E74 -_080477D8: .4byte gPlayerParty -_080477DC: .4byte gSprites -_080477E0: .4byte gUnknown_82349CC -_080477E4: - ldrh r0, [r4, 0x30] - adds r0, 0x14 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x2 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xF - bne _08047818 - movs r0, 0x17 - bl PlaySE - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - bl CreateRandomEggShardSprite - bl CreateRandomEggShardSprite -_08047818: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1E - bne _08047826 - movs r0, 0x17 - bl PlaySE -_08047826: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end SpriteCB_Egg_2 - - thumb_func_start SpriteCB_Egg_3 -SpriteCB_Egg_3: @ 804782C - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x32 - ble _08047846 - ldr r0, _0804784C @ =SpriteCB_Egg_4 - str r0, [r1, 0x1C] - movs r0, 0 - strh r0, [r1, 0x2E] -_08047846: - pop {r0} - bx r0 - .align 2, 0 -_0804784C: .4byte SpriteCB_Egg_4 - thumb_func_end SpriteCB_Egg_3 - - thumb_func_start SpriteCB_Egg_4 -SpriteCB_Egg_4: @ 8047850 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _08047870 - movs r1, 0x1 - negs r1, r1 - ldr r0, _080478C4 @ =0x0000ffff - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_08047870: - ldrh r0, [r5, 0x2E] - cmp r0, 0x3 - bhi _0804788C - movs r4, 0 -_08047878: - bl CreateRandomEggShardSprite - lsls r0, r4, 16 - movs r1, 0x80 - lsls r1, 9 - adds r0, r1 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _08047878 -_0804788C: - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - ldr r0, _080478C8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080478BA - movs r0, 0x6A - bl PlaySE - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080478CC @ =SpriteCB_Egg_5 - str r0, [r5, 0x1C] - strh r4, [r5, 0x2E] -_080478BA: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080478C4: .4byte 0x0000ffff -_080478C8: .4byte gPaletteFade -_080478CC: .4byte SpriteCB_Egg_5 - thumb_func_end SpriteCB_Egg_4 - - thumb_func_start SpriteCB_Egg_5 -SpriteCB_Egg_5: @ 80478D0 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0804790C - ldr r4, _08047960 @ =gSprites - ldr r3, _08047964 @ =gUnknown_3000E74 - ldr r0, [r3] - ldrb r1, [r0, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r0, [r3] - ldrb r1, [r0, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAffineAnim -_0804790C: - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0x8 - bne _08047926 - movs r1, 0x1 - negs r1, r1 - ldr r0, _08047968 @ =0x0000ffff - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_08047926: - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x9 - bgt _08047944 - ldr r2, _08047960 @ =gSprites - ldr r0, _08047964 @ =gUnknown_3000E74 - ldr r0, [r0] - ldrb r1, [r0, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - subs r1, 0x1 - strh r1, [r0, 0x22] -_08047944: - ldrh r1, [r5, 0x2E] - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0x28 - ble _08047952 - ldr r0, _0804796C @ =SpriteCallbackDummy - str r0, [r5, 0x1C] -_08047952: - adds r0, r1, 0x1 - strh r0, [r5, 0x2E] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08047960: .4byte gSprites -_08047964: .4byte gUnknown_3000E74 -_08047968: .4byte 0x0000ffff -_0804796C: .4byte SpriteCallbackDummy - thumb_func_end SpriteCB_Egg_5 - - thumb_func_start SpriteCB_EggShard -SpriteCB_EggShard: @ 8047970 - push {r4,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x36] - adds r0, r1 - strh r0, [r2, 0x36] - ldrh r1, [r2, 0x32] - ldrh r3, [r2, 0x38] - adds r0, r1, r3 - strh r0, [r2, 0x38] - movs r4, 0x36 - ldrsh r0, [r2, r4] - cmp r0, 0 - bge _0804798E - adds r0, 0xFF -_0804798E: - asrs r0, 8 - strh r0, [r2, 0x24] - movs r3, 0x38 - ldrsh r0, [r2, r3] - cmp r0, 0 - bge _0804799C - adds r0, 0xFF -_0804799C: - asrs r0, 8 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x34] - adds r3, r1, r0 - strh r3, [r2, 0x32] - movs r4, 0x22 - ldrsh r1, [r2, r4] - movs r4, 0x26 - ldrsh r0, [r2, r4] - adds r0, r1, r0 - adds r1, 0x14 - cmp r0, r1 - ble _080479C2 - lsls r0, r3, 16 - cmp r0, 0 - ble _080479C2 - adds r0, r2, 0 - bl DestroySprite -_080479C2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_EggShard - - thumb_func_start CreateRandomEggShardSprite -CreateRandomEggShardSprite: @ 80479C8 - push {r4-r6,lr} - sub sp, 0x8 - ldr r2, _08047A14 @ =gUnknown_82601BC - ldr r0, _08047A18 @ =gUnknown_3000E74 - ldr r6, [r0] - ldrb r3, [r6, 0x7] - lsls r0, r3, 2 - adds r1, r0, r2 - ldrh r5, [r1] - adds r2, 0x2 - adds r0, r2 - ldrh r4, [r0] - adds r3, 0x1 - strb r3, [r6, 0x7] - bl Random - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - lsls r5, 16 - asrs r5, 16 - lsls r4, 16 - asrs r4, 16 - movs r0, 0x64 - str r0, [sp] - lsrs r1, 16 - str r1, [sp, 0x4] - movs r0, 0x78 - movs r1, 0x3C - adds r2, r5, 0 - adds r3, r4, 0 - bl CreateEggShardSprite - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08047A14: .4byte gUnknown_82601BC -_08047A18: .4byte gUnknown_3000E74 - thumb_func_end CreateRandomEggShardSprite - - thumb_func_start CreateEggShardSprite -CreateEggShardSprite: @ 8047A1C - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - mov r8, r3 - ldr r0, [sp, 0x1C] - mov r9, r0 - ldr r1, [sp, 0x20] - mov r10, r1 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 16 - lsrs r6, 16 - mov r0, r8 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - mov r1, r9 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _08047A94 @ =gUnknown_8260184 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0x4 - bl CreateSprite - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08047A98 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r6, [r0, 0x30] - mov r1, r8 - strh r1, [r0, 0x32] - mov r1, r9 - strh r1, [r0, 0x34] - mov r1, r10 - bl StartSpriteAnim - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08047A94: .4byte gUnknown_8260184 -_08047A98: .4byte gSprites - thumb_func_end CreateEggShardSprite - - thumb_func_start EggHatchPrintMessage -EggHatchPrintMessage: @ 8047A9C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x18 - adds r5, r0, 0 - mov r8, r1 - adds r6, r2, 0 - ldr r4, [sp, 0x2C] - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0xFF - str r3, [sp, 0x14] - bl FillWindowPixelBuffer - ldr r2, _08047B08 @ =gUnknown_3000E74 - ldr r1, [r2] - movs r0, 0 - strb r0, [r1, 0xE] - ldr r1, [r2] - movs r0, 0x5 - strb r0, [r1, 0xF] - ldr r1, [r2] - movs r0, 0x6 - strb r0, [r1, 0x10] - movs r0, 0x1 - str r0, [sp] - str r0, [sp, 0x4] - ldr r0, [r2] - adds r0, 0xE - str r0, [sp, 0x8] - lsls r4, 24 - asrs r4, 24 - str r4, [sp, 0xC] - mov r0, r8 - str r0, [sp, 0x10] - adds r0, r5, 0 - movs r1, 0x3 - adds r2, r6, 0 - ldr r3, [sp, 0x14] - bl AddTextPrinterParametrized2 - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08047B08: .4byte gUnknown_3000E74 - thumb_func_end EggHatchPrintMessage - .align 2, 0 @ Don't pad with nop. diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index db6f44919..08aa16703 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -257,7 +257,7 @@ EvolutionScene: @ 80CDDF4 bl LoadCompressedPalette adds r0, r5, 0 movs r1, 0x1 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _080CE0C0 @ =gMultiuseSpriteTemplate mov r8, r0 ldr r1, _080CE0C4 @ =gDummySpriteAffineAnimTable @@ -313,7 +313,7 @@ EvolutionScene: @ 80CDDF4 bl LoadCompressedPalette mov r0, r10 movs r1, 0x3 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _080CE0C4 @ =gDummySpriteAffineAnimTable mov r1, r8 str r0, [r1, 0x10] @@ -542,7 +542,7 @@ CB2_EvolutionSceneLoadGraphics: @ 80CE0E8 bl LoadCompressedPalette adds r0, r5, 0 movs r1, 0x3 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _080CE2C0 @ =gMultiuseSpriteTemplate ldr r1, _080CE2C4 @ =gDummySpriteAffineAnimTable str r1, [r0, 0x10] @@ -793,7 +793,7 @@ _080CE458: .4byte gMonSpritesGfxPtr _080CE45C: adds r0, r6, 0 movs r1, 0x1 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _080CE4B4 @ =gMultiuseSpriteTemplate ldr r1, _080CE4B8 @ =gDummySpriteAffineAnimTable str r1, [r0, 0x10] @@ -969,7 +969,7 @@ TradeEvolutionScene: @ 80CE540 bl LoadCompressedPalette adds r0, r5, 0 movs r1, 0x1 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _080CE6CC @ =gMultiuseSpriteTemplate ldr r1, _080CE6D0 @ =gDummySpriteAffineAnimTable str r1, [r0, 0x10] @@ -3567,7 +3567,7 @@ _080CFCAE: movs r0, 0 movs r1, 0xA8 movs r2, 0xE0 - bl sub_814FE40 + bl LoadUserWindowBorderGfx ldr r0, _080CFCF4 @ =gUnknown_826D1CC movs r1, 0xA8 str r1, [sp] @@ -3577,7 +3577,7 @@ _080CFCAE: movs r1, 0x3 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu ldr r3, _080CFCF8 @ =gUnknown_2023E82 strb r4, [r3, 0x1] ldr r0, _080CFCF0 @ =gTasks @@ -3597,7 +3597,7 @@ _080CFCF0: .4byte gTasks _080CFCF4: .4byte gUnknown_826D1CC _080CFCF8: .4byte gUnknown_2023E82 _080CFCFC: - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r4, r0, 24 cmp r4, 0 @@ -4388,7 +4388,7 @@ _080D03A0: movs r0, 0x1 movs r2, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r1, _080D0428 @ =gUnknown_83F73A8 movs r0, 0x1 movs r2, 0 diff --git a/asm/field_effect.s b/asm/field_effect.s index 3686eec3b..0fa36ce46 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -1968,16 +1968,16 @@ _080842C2: thumb_func_start sub_80842C8 sub_80842C8: @ 80842C8 push {lr} - ldr r0, _080842DC @ =c2_exit_to_overworld_2_switch + ldr r0, _080842DC @ =CB2_ReturnToField bl SetMainCallback2 - ldr r1, _080842E0 @ =gUnknown_3005020 + ldr r1, _080842E0 @ =gFieldCallback ldr r0, _080842E4 @ =mapldr_080842E8 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_080842DC: .4byte c2_exit_to_overworld_2_switch -_080842E0: .4byte gUnknown_3005020 +_080842DC: .4byte CB2_ReturnToField +_080842E0: .4byte gFieldCallback _080842E4: .4byte mapldr_080842E8 thumb_func_end sub_80842C8 @@ -1990,14 +1990,14 @@ mapldr_080842E8: @ 80842E8 bl CreateTask bl ScriptContext2_Enable bl player_bitmagic - ldr r1, _0808430C @ =gUnknown_3005020 + ldr r1, _0808430C @ =gFieldCallback movs r0, 0 str r0, [r1] pop {r0} bx r0 .align 2, 0 _08084308: .4byte task00_8084310 -_0808430C: .4byte gUnknown_3005020 +_0808430C: .4byte gFieldCallback thumb_func_end mapldr_080842E8 thumb_func_start task00_8084310 @@ -2042,7 +2042,7 @@ _08084350: bl warp_in ldr r0, _08084384 @ =sub_805671C bl SetMainCallback2 - ldr r1, _08084388 @ =gUnknown_3005020 + ldr r1, _08084388 @ =gFieldCallback ldr r0, _0808438C @ =mapldr_08084390 str r0, [r1] adds r0, r5, 0 @@ -2055,7 +2055,7 @@ _08084376: _0808437C: .4byte gTasks _08084380: .4byte gFieldEffectArguments _08084384: .4byte sub_805671C -_08084388: .4byte gUnknown_3005020 +_08084388: .4byte gFieldCallback _0808438C: .4byte mapldr_08084390 thumb_func_end task00_8084310 @@ -2093,7 +2093,7 @@ mapldr_08084390: @ 8084390 _080843D2: bl ScriptContext2_Enable bl player_bitmagic - ldr r1, _080843F4 @ =gUnknown_3005020 + ldr r1, _080843F4 @ =gFieldCallback movs r0, 0 str r0, [r1] pop {r4} @@ -2103,7 +2103,7 @@ _080843D2: _080843E8: .4byte c3_080843F8 _080843EC: .4byte gMapObjects _080843F0: .4byte gPlayerAvatar -_080843F4: .4byte gUnknown_3005020 +_080843F4: .4byte gFieldCallback thumb_func_end mapldr_08084390 thumb_func_start c3_080843F8 @@ -2162,14 +2162,14 @@ sub_8084454: @ 8084454 ldr r0, _0808447C @ =sub_8084484 movs r1, 0 bl CreateTask - ldr r1, _08084480 @ =gUnknown_3005020 + ldr r1, _08084480 @ =gFieldCallback movs r0, 0 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0808447C: .4byte sub_8084484 -_08084480: .4byte gUnknown_3005020 +_08084480: .4byte gFieldCallback thumb_func_end sub_8084454 thumb_func_start sub_8084484 @@ -2861,7 +2861,7 @@ sub_80849A0: @ 80849A0 bne _080849DC bl sub_809C460 bl warp_in - ldr r1, _080849E4 @ =gUnknown_3005020 + ldr r1, _080849E4 @ =gFieldCallback ldr r0, _080849E8 @ =sub_80849F4 str r0, [r1] ldr r0, _080849EC @ =sub_805671C @@ -2876,7 +2876,7 @@ _080849DC: bx r0 .align 2, 0 _080849E0: .4byte gPaletteFade -_080849E4: .4byte gUnknown_3005020 +_080849E4: .4byte gFieldCallback _080849E8: .4byte sub_80849F4 _080849EC: .4byte sub_805671C _080849F0: .4byte sub_80847C0 @@ -2893,14 +2893,14 @@ sub_80849F4: @ 80849F4 ldr r0, _08084A1C @ =sub_8084A24 movs r1, 0 bl CreateTask - ldr r1, _08084A20 @ =gUnknown_3005020 + ldr r1, _08084A20 @ =gFieldCallback movs r0, 0 str r0, [r1] pop {r0} bx r0 .align 2, 0 _08084A1C: .4byte sub_8084A24 -_08084A20: .4byte gUnknown_3005020 +_08084A20: .4byte gFieldCallback thumb_func_end sub_80849F4 thumb_func_start sub_8084A24 @@ -3884,7 +3884,7 @@ sub_8085168: @ 8085168 cmp r0, 0x1 bne _080851A0 bl warp_in - ldr r1, _080851AC @ =gUnknown_3005020 + ldr r1, _080851AC @ =gFieldCallback ldr r0, _080851B0 @ =mapldr_080851BC str r0, [r1] ldr r0, _080851B4 @ =sub_805671C @@ -3900,7 +3900,7 @@ _080851A0: bx r1 .align 2, 0 _080851A8: .4byte gPaletteFade -_080851AC: .4byte gUnknown_3005020 +_080851AC: .4byte gFieldCallback _080851B0: .4byte mapldr_080851BC _080851B4: .4byte sub_805671C _080851B8: .4byte sub_8084F44 @@ -3913,7 +3913,7 @@ mapldr_080851BC: @ 80851BC bl pal_fill_for_maplights bl sub_8111CF0 bl ScriptContext2_Enable - ldr r0, _080851E0 @ =gUnknown_3005020 + ldr r0, _080851E0 @ =gFieldCallback movs r1, 0 str r1, [r0] ldr r0, _080851E4 @ =sub_80851E8 @@ -3921,7 +3921,7 @@ mapldr_080851BC: @ 80851BC pop {r0} bx r0 .align 2, 0 -_080851E0: .4byte gUnknown_3005020 +_080851E0: .4byte gFieldCallback _080851E4: .4byte sub_80851E8 thumb_func_end mapldr_080851BC @@ -4389,7 +4389,7 @@ sub_808554C: @ 808554C cmp r0, 0x1 bne _08085584 bl warp_in - ldr r1, _08085590 @ =gUnknown_3005020 + ldr r1, _08085590 @ =gFieldCallback ldr r0, _08085594 @ =sub_8084454 str r0, [r1] ldr r0, _08085598 @ =sub_805671C @@ -4405,7 +4405,7 @@ _08085584: bx r1 .align 2, 0 _0808558C: .4byte gPaletteFade -_08085590: .4byte gUnknown_3005020 +_08085590: .4byte gFieldCallback _08085594: .4byte sub_8084454 _08085598: .4byte sub_805671C _0808559C: .4byte sub_80853E4 @@ -4613,7 +4613,7 @@ _08085702: bl FieldObjectSetDirection bl sub_80555E0 bl warp_in - ldr r1, _0808575C @ =gUnknown_3005020 + ldr r1, _0808575C @ =gFieldCallback ldr r0, _08085760 @ =sub_80859D4 str r0, [r1] ldr r0, _08085764 @ =sub_805671C @@ -4629,7 +4629,7 @@ _08085750: bx r0 .align 2, 0 _08085758: .4byte gPaletteFade -_0808575C: .4byte gUnknown_3005020 +_0808575C: .4byte gFieldCallback _08085760: .4byte sub_80859D4 _08085764: .4byte sub_805671C _08085768: .4byte sub_808563C @@ -4970,7 +4970,7 @@ sub_80859D4: @ 80859D4 bl sub_8111CF0 bl ScriptContext2_Enable bl player_bitmagic - ldr r1, _08085A14 @ =gUnknown_3005020 + ldr r1, _08085A14 @ =gFieldCallback movs r0, 0 str r0, [r1] ldr r2, _08085A18 @ =gMapObjects @@ -4990,7 +4990,7 @@ sub_80859D4: @ 80859D4 pop {r0} bx r0 .align 2, 0 -_08085A14: .4byte gUnknown_3005020 +_08085A14: .4byte gFieldCallback _08085A18: .4byte gMapObjects _08085A1C: .4byte gPlayerAvatar _08085A20: .4byte sub_8085A24 @@ -5409,7 +5409,7 @@ sub_8085D34: @ 8085D34 bl warp_in ldr r0, _08085D78 @ =sub_805671C bl SetMainCallback2 - ldr r1, _08085D7C @ =gUnknown_3005020 + ldr r1, _08085D7C @ =gFieldCallback ldr r0, _08085D80 @ =mapldr_08085D88 str r0, [r1] ldr r0, _08085D84 @ =sub_8085B78 @@ -5423,7 +5423,7 @@ _08085D70: .align 2, 0 _08085D74: .4byte gPaletteFade _08085D78: .4byte sub_805671C -_08085D7C: .4byte gUnknown_3005020 +_08085D7C: .4byte gFieldCallback _08085D80: .4byte mapldr_08085D88 _08085D84: .4byte sub_8085B78 thumb_func_end sub_8085D34 @@ -5436,7 +5436,7 @@ mapldr_08085D88: @ 8085D88 bl sub_8111CF0 bl ScriptContext2_Enable bl player_bitmagic - ldr r1, _08085DCC @ =gUnknown_3005020 + ldr r1, _08085DCC @ =gFieldCallback movs r0, 0 str r0, [r1] ldr r2, _08085DD0 @ =gMapObjects @@ -5457,7 +5457,7 @@ mapldr_08085D88: @ 8085D88 pop {r0} bx r0 .align 2, 0 -_08085DCC: .4byte gUnknown_3005020 +_08085DCC: .4byte gFieldCallback _08085DD0: .4byte gMapObjects _08085DD4: .4byte gPlayerAvatar _08085DD8: .4byte sub_8085DDC diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s index 4039c4009..ceaaaf7a6 100644 --- a/asm/field_fadetransition.s +++ b/asm/field_fadetransition.s @@ -273,8 +273,8 @@ _0807DD1C: bx r0 thumb_func_end task0A_asap_script_env_2_enable_and_set_ctx_running - thumb_func_start sub_807DD24 -sub_807DD24: @ 807DD24 + thumb_func_start FieldCallback_ReturnToEventScript2 +FieldCallback_ReturnToEventScript2: @ 807DD24 push {lr} bl ScriptContext2_Enable bl sub_8055DC4 @@ -286,7 +286,7 @@ sub_807DD24: @ 807DD24 bx r0 .align 2, 0 _0807DD40: .4byte task0A_asap_script_env_2_enable_and_set_ctx_running - thumb_func_end sub_807DD24 + thumb_func_end FieldCallback_ReturnToEventScript2 thumb_func_start sub_807DD44 sub_807DD44: @ 807DD44 @@ -1162,7 +1162,7 @@ DoWarp: @ 807E438 bl PlayRainStoppingSoundEffect movs r0, 0x9 bl PlaySE - ldr r0, _0807E464 @ =gUnknown_3005020 + ldr r0, _0807E464 @ =gFieldCallback ldr r1, _0807E468 @ =sub_807DF64 str r1, [r0] ldr r0, _0807E46C @ =sub_807E718 @@ -1171,7 +1171,7 @@ DoWarp: @ 807E438 pop {r0} bx r0 .align 2, 0 -_0807E464: .4byte gUnknown_3005020 +_0807E464: .4byte gFieldCallback _0807E468: .4byte sub_807DF64 _0807E46C: .4byte sub_807E718 thumb_func_end DoWarp @@ -1183,7 +1183,7 @@ DoDiveWarp: @ 807E470 bl sub_8055F88 bl sub_807DC18 bl PlayRainStoppingSoundEffect - ldr r0, _0807E494 @ =gUnknown_3005020 + ldr r0, _0807E494 @ =gFieldCallback ldr r1, _0807E498 @ =sub_807DF64 str r1, [r0] ldr r0, _0807E49C @ =sub_807E718 @@ -1192,7 +1192,7 @@ DoDiveWarp: @ 807E470 pop {r0} bx r0 .align 2, 0 -_0807E494: .4byte gUnknown_3005020 +_0807E494: .4byte gFieldCallback _0807E498: .4byte sub_807DF64 _0807E49C: .4byte sub_807E718 thumb_func_end DoDiveWarp @@ -1232,7 +1232,7 @@ _0807E4D8: .4byte gTasks DoDoorWarp: @ 807E4DC push {lr} bl ScriptContext2_Enable - ldr r0, _0807E4F4 @ =gUnknown_3005020 + ldr r0, _0807E4F4 @ =gFieldCallback ldr r1, _0807E4F8 @ =sub_807DF64 str r1, [r0] ldr r0, _0807E4FC @ =sub_807E80C @@ -1241,7 +1241,7 @@ DoDoorWarp: @ 807E4DC pop {r0} bx r0 .align 2, 0 -_0807E4F4: .4byte gUnknown_3005020 +_0807E4F4: .4byte gFieldCallback _0807E4F8: .4byte sub_807DF64 _0807E4FC: .4byte sub_807E80C thumb_func_end DoDoorWarp @@ -1253,14 +1253,14 @@ sub_807E500: @ 807E500 ldr r0, _0807E518 @ =sub_807E718 movs r1, 0xA bl CreateTask - ldr r1, _0807E51C @ =gUnknown_3005020 + ldr r1, _0807E51C @ =gFieldCallback ldr r0, _0807E520 @ =sub_807DF94 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0807E518: .4byte sub_807E718 -_0807E51C: .4byte gUnknown_3005020 +_0807E51C: .4byte gFieldCallback _0807E520: .4byte sub_807DF94 thumb_func_end sub_807E500 @@ -1268,7 +1268,7 @@ _0807E520: .4byte sub_807DF94 sub_807E524: @ 807E524 push {lr} bl ScriptContext2_Enable - ldr r0, _0807E53C @ =gUnknown_3005020 + ldr r0, _0807E53C @ =gFieldCallback ldr r1, _0807E540 @ =sub_807DF64 str r1, [r0] ldr r0, _0807E544 @ =sub_807E784 @@ -1277,7 +1277,7 @@ sub_807E524: @ 807E524 pop {r0} bx r0 .align 2, 0 -_0807E53C: .4byte gUnknown_3005020 +_0807E53C: .4byte gFieldCallback _0807E540: .4byte sub_807DF64 _0807E544: .4byte sub_807E784 thumb_func_end sub_807E524 @@ -1286,13 +1286,13 @@ _0807E544: .4byte sub_807E784 DoFallWarp: @ 807E548 push {lr} bl DoDiveWarp - ldr r1, _0807E558 @ =gUnknown_3005020 + ldr r1, _0807E558 @ =gFieldCallback ldr r0, _0807E55C @ =sub_8084454 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_0807E558: .4byte gUnknown_3005020 +_0807E558: .4byte gFieldCallback _0807E55C: .4byte sub_8084454 thumb_func_end DoFallWarp @@ -1339,14 +1339,14 @@ sub_807E59C: @ 807E59C ldr r0, _0807E5B8 @ =sub_807E784 movs r1, 0xA bl CreateTask - ldr r1, _0807E5BC @ =gUnknown_3005020 + ldr r1, _0807E5BC @ =gFieldCallback ldr r0, _0807E5C0 @ =sub_807DF94 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0807E5B8: .4byte sub_807E784 -_0807E5BC: .4byte gUnknown_3005020 +_0807E5BC: .4byte gFieldCallback _0807E5C0: .4byte sub_807DF94 thumb_func_end sub_807E59C @@ -1358,14 +1358,14 @@ sub_807E5C4: @ 807E5C4 ldr r0, _0807E5E0 @ =sub_807E718 movs r1, 0xA bl CreateTask - ldr r1, _0807E5E4 @ =gUnknown_3005020 + ldr r1, _0807E5E4 @ =gFieldCallback ldr r0, _0807E5E8 @ =nullsub_60 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0807E5E0: .4byte sub_807E718 -_0807E5E4: .4byte gUnknown_3005020 +_0807E5E4: .4byte gFieldCallback _0807E5E8: .4byte nullsub_60 thumb_func_end sub_807E5C4 @@ -1954,7 +1954,7 @@ _0807EA92: strh r0, [r5] b _0807EAB0 _0807EA9A: - ldr r0, _0807EAB8 @ =gUnknown_3005020 + ldr r0, _0807EAB8 @ =gFieldCallback ldr r1, _0807EABC @ =sub_807DF64 str r1, [r0] bl warp_in @@ -1968,7 +1968,7 @@ _0807EAB0: pop {r0} bx r0 .align 2, 0 -_0807EAB8: .4byte gUnknown_3005020 +_0807EAB8: .4byte gFieldCallback _0807EABC: .4byte sub_807DF64 _0807EAC0: .4byte sub_805671C thumb_func_end sub_807E980 diff --git a/asm/hof_pc.s b/asm/hof_pc.s index b5a437662..80f7fc3f9 100644 --- a/asm/hof_pc.s +++ b/asm/hof_pc.s @@ -57,16 +57,16 @@ _080CA59C: .4byte sub_80CA53C thumb_func_start sub_80CA5A0 sub_80CA5A0: @ 80CA5A0 push {lr} - ldr r0, _080CA5B4 @ =c2_exit_to_overworld_2_switch + ldr r0, _080CA5B4 @ =CB2_ReturnToField bl SetMainCallback2 - ldr r1, _080CA5B8 @ =gUnknown_3005020 + ldr r1, _080CA5B8 @ =gFieldCallback ldr r0, _080CA5BC @ =sub_80CA5C0 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_080CA5B4: .4byte c2_exit_to_overworld_2_switch -_080CA5B8: .4byte gUnknown_3005020 +_080CA5B4: .4byte CB2_ReturnToField +_080CA5B8: .4byte gFieldCallback _080CA5BC: .4byte sub_80CA5C0 thumb_func_end sub_80CA5A0 diff --git a/asm/item_menu.s b/asm/item_menu.s index 01c5f6e4c..46891fe94 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -5060,14 +5060,14 @@ _0810A678: .4byte sub_810A67C thumb_func_start sub_810A67C sub_810A67C: @ 810A67C push {lr} - ldr r2, _0810A68C @ =c2_exit_to_overworld_2_switch + ldr r2, _0810A68C @ =CB2_ReturnToField movs r0, 0x2 movs r1, 0x3 bl sub_8107DB4 pop {r0} bx r0 .align 2, 0 -_0810A68C: .4byte c2_exit_to_overworld_2_switch +_0810A68C: .4byte CB2_ReturnToField thumb_func_end sub_810A67C thumb_func_start sub_810A690 diff --git a/asm/item_use.s b/asm/item_use.s index b05f5be82..67da30cf6 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -83,7 +83,7 @@ sub_80A103C: @ 80A103C ldrsh r0, [r0, r1] cmp r0, 0x1 beq _080A1070 - ldr r1, _080A1068 @ =gUnknown_3005020 + ldr r1, _080A1068 @ =gFieldCallback ldr r0, _080A106C @ =sub_80A1084 str r0, [r1] adds r0, r2, 0 @@ -91,7 +91,7 @@ sub_80A103C: @ 80A103C b _080A107A .align 2, 0 _080A1064: .4byte gTasks -_080A1068: .4byte gUnknown_3005020 +_080A1068: .4byte gFieldCallback _080A106C: .4byte sub_80A1084 _080A1070: ldr r0, _080A1080 @ =gUnknown_2039998 @@ -1066,9 +1066,9 @@ sub_80A17E8: @ 80A17E8 ands r0, r1 cmp r0, 0 bne _080A1812 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps bl sub_80A1184 - ldr r1, _080A181C @ =c2_exit_to_overworld_2_switch + ldr r1, _080A181C @ =CB2_ReturnToField movs r0, 0 movs r2, 0x1 bl InitTMCase @@ -1080,7 +1080,7 @@ _080A1812: bx r0 .align 2, 0 _080A1818: .4byte gPaletteFade -_080A181C: .4byte c2_exit_to_overworld_2_switch +_080A181C: .4byte CB2_ReturnToField thumb_func_end sub_80A17E8 thumb_func_start sub_80A1820 @@ -1144,9 +1144,9 @@ sub_80A1880: @ 80A1880 ands r0, r1 cmp r0, 0 bne _080A18AA - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps bl sub_80A1184 - ldr r1, _080A18B4 @ =c2_exit_to_overworld_2_switch + ldr r1, _080A18B4 @ =CB2_ReturnToField movs r0, 0 movs r2, 0x1 bl sub_813CD50 @@ -1158,7 +1158,7 @@ _080A18AA: bx r0 .align 2, 0 _080A18B0: .4byte gPaletteFade -_080A18B4: .4byte c2_exit_to_overworld_2_switch +_080A18B4: .4byte CB2_ReturnToField thumb_func_end sub_80A1880 thumb_func_start sub_80A18B8 @@ -1259,9 +1259,9 @@ sub_80A1960: @ 80A1960 ands r0, r1 cmp r0, 0 bne _080A1988 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps bl sub_80A1184 - ldr r1, _080A1994 @ =c2_exit_to_overworld_2_switch + ldr r1, _080A1994 @ =CB2_ReturnToField movs r0, 0 bl sub_815ABC4 adds r0, r4, 0 @@ -1272,7 +1272,7 @@ _080A1988: bx r0 .align 2, 0 _080A1990: .4byte gPaletteFade -_080A1994: .4byte c2_exit_to_overworld_2_switch +_080A1994: .4byte CB2_ReturnToField thumb_func_end sub_80A1960 thumb_func_start sub_80A1998 @@ -1666,9 +1666,9 @@ sub_80A1CC0: @ 80A1CC0 ands r0, r1 cmp r0, 0 bne _080A1CE8 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps bl sub_80A1184 - ldr r1, _080A1CF4 @ =c2_exit_to_overworld_2_switch + ldr r1, _080A1CF4 @ =CB2_ReturnToField movs r0, 0 bl sub_80BFF50 adds r0, r4, 0 @@ -1679,7 +1679,7 @@ _080A1CE8: bx r0 .align 2, 0 _080A1CF0: .4byte gPaletteFade -_080A1CF4: .4byte c2_exit_to_overworld_2_switch +_080A1CF4: .4byte CB2_ReturnToField thumb_func_end sub_80A1CC0 thumb_func_start sub_80A1CF8 @@ -1749,9 +1749,9 @@ sub_80A1D68: @ 80A1D68 ands r0, r1 cmp r0, 0 bne _080A1D8E - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps bl sub_80A1184 - ldr r0, _080A1D98 @ =c2_exit_to_overworld_2_switch + ldr r0, _080A1D98 @ =CB2_ReturnToField bl UseFameChecker adds r0, r4, 0 bl DestroyTask @@ -1761,7 +1761,7 @@ _080A1D8E: bx r0 .align 2, 0 _080A1D94: .4byte gPaletteFade -_080A1D98: .4byte c2_exit_to_overworld_2_switch +_080A1D98: .4byte CB2_ReturnToField thumb_func_end sub_80A1D68 thumb_func_start sub_80A1D9C diff --git a/asm/learn_move.s b/asm/learn_move.s index 3db64a899..92f6abfea 100644 --- a/asm/learn_move.s +++ b/asm/learn_move.s @@ -50,8 +50,8 @@ sub_80E4660: @ 80E4660 bne _080E4684 ldr r0, _080E4690 @ =sub_80E478C bl SetMainCallback2 - ldr r1, _080E4694 @ =gUnknown_3005020 - ldr r0, _080E4698 @ =sub_807DD24 + ldr r1, _080E4694 @ =gFieldCallback + ldr r0, _080E4698 @ =FieldCallback_ReturnToEventScript2 str r0, [r1] adds r0, r4, 0 bl DestroyTask @@ -62,8 +62,8 @@ _080E4684: .align 2, 0 _080E468C: .4byte gPaletteFade _080E4690: .4byte sub_80E478C -_080E4694: .4byte gUnknown_3005020 -_080E4698: .4byte sub_807DD24 +_080E4694: .4byte gFieldCallback +_080E4698: .4byte FieldCallback_ReturnToEventScript2 thumb_func_end sub_80E4660 thumb_func_start sub_80E469C @@ -133,7 +133,7 @@ _080E46C6: movs r0, 0x1 movs r2, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r1, _080E4788 @ =gUnknown_8E97EC4 movs r0, 0x1 movs r2, 0 @@ -454,7 +454,7 @@ _080E4A3E: movs r1, 0x3 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu ldr r0, _080E4A64 @ =gUnknown_203AAB4 ldr r1, [r0] ldrb r0, [r1] @@ -540,7 +540,7 @@ _080E4AF4: movs r1, 0x3 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu ldr r0, _080E4B1C @ =gUnknown_203AAB4 ldr r1, [r0] ldrb r0, [r1] @@ -601,7 +601,7 @@ _080E4B70: movs r1, 0x3 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu ldr r0, _080E4B94 @ =gUnknown_203AAB4 ldr r1, [r0] movs r0, 0x12 @@ -665,7 +665,7 @@ _080E4BF4: movs r1, 0x3 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu ldr r0, _080E4C18 @ =gUnknown_203AAB4 ldr r1, [r0] movs r0, 0x1A @@ -810,13 +810,13 @@ _080E4D26: ldr r0, _080E4D40 @ =gUnknown_203AAB4 ldr r0, [r0] bl Free - ldr r0, _080E4D44 @ =c2_exit_to_overworld_2_switch + ldr r0, _080E4D44 @ =CB2_ReturnToField bl SetMainCallback2 b _080E4EDA .align 2, 0 _080E4D3C: .4byte gPaletteFade _080E4D40: .4byte gUnknown_203AAB4 -_080E4D44: .4byte c2_exit_to_overworld_2_switch +_080E4D44: .4byte CB2_ReturnToField _080E4D48: movs r0, 0x1 negs r0, r0 @@ -1814,7 +1814,7 @@ _080E5570: .4byte 0x00000a67 thumb_func_start sub_80E5574 sub_80E5574: @ 80E5574 push {r4,lr} - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r4, r0, 24 movs r0, 0x2 diff --git a/asm/link.s b/asm/link.s index 4dd79efe1..d2fabbd0c 100644 --- a/asm/link.s +++ b/asm/link.s @@ -3360,7 +3360,7 @@ sub_800AE1C: @ 800AE1C movs r0, 0x1 movs r2, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r1, _0800AEBC @ =gWirelessLinkDisplayBin movs r0, 0x1 movs r2, 0 diff --git a/asm/link_rfu.s b/asm/link_rfu.s index 3638e9e0a..0e1a79b65 100644 --- a/asm/link_rfu.s +++ b/asm/link_rfu.s @@ -4359,7 +4359,7 @@ _080FF4A2: thumb_func_start sub_80FF4A8 sub_80FF4A8: @ 80FF4A8 push {lr} - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -4400,7 +4400,7 @@ _080FF4EA: thumb_func_start sub_80FF4F0 sub_80FF4F0: @ 80FF4F0 push {r4,lr} - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -4446,7 +4446,7 @@ _080FF53E: thumb_func_start sub_80FF544 sub_80FF544: @ 80FF544 push {lr} - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -6079,7 +6079,7 @@ _08100038: movs r0, 0x3 movs r2, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r1, _08100068 @ =gUnknown_8E99E74 movs r0, 0x3 movs r2, 0 @@ -6106,7 +6106,7 @@ _0810006C: movs r0, 0x1 movs r2, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap movs r0, 0x1 bl CopyBgTilemapBufferToVram b _08100104 @@ -7964,7 +7964,7 @@ sub_8100F18: @ 8100F18 movs r1, 0x1 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu add sp, 0xC pop {r0} bx r0 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 7e3718d18..388c871d9 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -3088,7 +3088,7 @@ _08117210: movs r0, 0x6 strb r0, [r1, 0x1] ldr r1, _08117274 @ =gMain - ldr r0, _08117278 @ =c2_exit_to_overworld_2_switch + ldr r0, _08117278 @ =CB2_ReturnToField str r0, [r1, 0x8] ldr r0, _0811727C @ =sub_8050138 bl SetMainCallback2 @@ -3107,7 +3107,7 @@ _08117268: .4byte gUnknown_2031CCC _0811726C: .4byte gBlockRecvBuffer _08117270: .4byte gUnknown_2031DA4 _08117274: .4byte gMain -_08117278: .4byte c2_exit_to_overworld_2_switch +_08117278: .4byte CB2_ReturnToField _0811727C: .4byte sub_8050138 thumb_func_end sub_8117130 @@ -3251,7 +3251,7 @@ _08117384: eors r0, r1 lsls r0, 24 lsrs r0, 24 - ldr r1, _081173BC @ =c2_exit_to_overworld_2_switch + ldr r1, _081173BC @ =CB2_ReturnToField bl sub_808B700 _081173A2: bl RunTasks @@ -3263,7 +3263,7 @@ _081173A2: bx r0 .align 2, 0 _081173B8: .4byte sub_8117280 -_081173BC: .4byte c2_exit_to_overworld_2_switch +_081173BC: .4byte CB2_ReturnToField thumb_func_end sub_8117354 thumb_func_start sub_81173C0 @@ -3645,7 +3645,7 @@ _08117640: .4byte _081178E0 .4byte _08117784 _08117784: - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r1, _08117798 @ =gMain ldr r0, _0811779C @ =sub_811C1C8 str r0, [r1, 0x8] @@ -3656,7 +3656,7 @@ _08117784: _08117798: .4byte gMain _0811779C: .4byte sub_811C1C8 _081177A0: - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r0, _081177C4 @ =gBlockSendBuffer movs r1, 0x1 bl sub_8117594 @@ -3672,7 +3672,7 @@ _081177A0: .align 2, 0 _081177C4: .4byte gBlockSendBuffer _081177C8: - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps bl sp000_heal_pokemon bl SavePlayerParty bl LoadPlayerBag @@ -3688,7 +3688,7 @@ _081177C8: .align 2, 0 _081177EC: .4byte gBlockSendBuffer _081177F0: - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps bl sp000_heal_pokemon bl SavePlayerParty bl LoadPlayerBag @@ -3706,7 +3706,7 @@ _08117818: ldr r0, _0811783C @ =gBlockSendBuffer movs r1, 0x1 bl sub_8117594 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps movs r0, 0x3 str r0, [sp] movs r0, 0 @@ -7001,19 +7001,19 @@ _08119512: ldr r1, _0811952C @ =gUnknown_203B06C movs r0, 0x1 strh r0, [r1] - ldr r1, _08119530 @ =gUnknown_3005020 + ldr r1, _08119530 @ =gFieldCallback ldr r0, _08119534 @ =sub_807DCE4 str r0, [r1] - ldr r1, _08119538 @ =c2_exit_to_overworld_2_switch + ldr r1, _08119538 @ =CB2_ReturnToField movs r0, 0x8 bl sub_81277F4 b _081198DC .align 2, 0 _08119528: .4byte gPaletteFade _0811952C: .4byte gUnknown_203B06C -_08119530: .4byte gUnknown_3005020 +_08119530: .4byte gFieldCallback _08119534: .4byte sub_807DCE4 -_08119538: .4byte c2_exit_to_overworld_2_switch +_08119538: .4byte CB2_ReturnToField _0811953C: adds r0, r6, 0 adds r0, 0x16 @@ -7354,10 +7354,10 @@ _081197CA: lsls r0, 22 lsrs r0, 22 strh r0, [r2] - ldr r1, _08119834 @ =gUnknown_3005020 + ldr r1, _08119834 @ =gFieldCallback ldr r0, _08119838 @ =sub_807DCE4 str r0, [r1] - ldr r1, _0811983C @ =c2_exit_to_overworld_2_switch + ldr r1, _0811983C @ =CB2_ReturnToField movs r0, 0x9 bl sub_81277F4 adds r0, r6, 0 @@ -7371,9 +7371,9 @@ _08119824: .4byte gUnknown_203B06C _08119828: .4byte gUnknown_203B064 _0811982C: .4byte gUnknown_203B06A _08119830: .4byte gUnknown_203B068 -_08119834: .4byte gUnknown_3005020 +_08119834: .4byte gFieldCallback _08119838: .4byte sub_807DCE4 -_0811983C: .4byte c2_exit_to_overworld_2_switch +_0811983C: .4byte CB2_ReturnToField _08119840: ldr r1, _08119890 @ =gUnknown_203B058 movs r0, 0x44 @@ -8593,7 +8593,7 @@ _0811A174: negs r0, r0 b _0811A1A4 _0811A186: - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 movs r2, 0x80 @@ -13151,13 +13151,13 @@ _0811C4C0: bl sub_811C150 cmp r0, 0 beq _0811C516 - ldr r0, _0811C4E0 @ =c2_exit_to_overworld_2_switch + ldr r0, _0811C4E0 @ =CB2_ReturnToField bl SetMainCallback2 b _0811C516 .align 2, 0 _0811C4D8: .4byte gUnknown_203B08C _0811C4DC: .4byte gUnknown_841E58D -_0811C4E0: .4byte c2_exit_to_overworld_2_switch +_0811C4E0: .4byte CB2_ReturnToField _0811C4E4: ldr r0, _0811C4FC @ =gReceivedRemoteLinkPlayers ldrb r0, [r0] @@ -13181,7 +13181,7 @@ _0811C500: bl sub_811C150 cmp r0, 0 beq _0811C516 - ldr r0, _0811C53C @ =c2_exit_to_overworld_2_switch + ldr r0, _0811C53C @ =CB2_ReturnToField bl SetMainCallback2 _0811C516: bl RunTasks @@ -13197,7 +13197,7 @@ _0811C52A: .align 2, 0 _0811C534: .4byte gUnknown_203B08C _0811C538: .4byte gUnknown_841E572 -_0811C53C: .4byte c2_exit_to_overworld_2_switch +_0811C53C: .4byte CB2_ReturnToField thumb_func_end sub_811C1C8 .align 2, 0 @ Don't pad with nop. diff --git a/asm/menu.s b/asm/menu.s index a6d3d183b..6341c2c32 100644 --- a/asm/menu.s +++ b/asm/menu.s @@ -2272,8 +2272,8 @@ sub_810FF04: @ 810FF04 bx r1 thumb_func_end sub_810FF04 - thumb_func_start sub_810FF60 -sub_810FF60: @ 810FF60 + thumb_func_start CreateYesNoMenu +CreateYesNoMenu: @ 810FF60 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -2422,7 +2422,7 @@ sub_810FF60: @ 810FF60 .align 2, 0 _0811009C: .4byte gUnknown_203ADF3 _081100A0: .4byte gUnknown_841623D - thumb_func_end sub_810FF60 + thumb_func_end CreateYesNoMenu thumb_func_start sub_81100A4 sub_81100A4: @ 81100A4 @@ -2439,14 +2439,14 @@ sub_81100A4: @ 81100A4 movs r2, 0 str r2, [sp, 0x8] movs r3, 0 - bl sub_810FF60 + bl CreateYesNoMenu add sp, 0xC pop {r0} bx r0 thumb_func_end sub_81100A4 - thumb_func_start ProcessMenuInputNoWrap_ -ProcessMenuInputNoWrap_: @ 81100C8 + thumb_func_start Menu_ProcessInputNoWrapClearOnChoose +Menu_ProcessInputNoWrapClearOnChoose: @ 81100C8 push {r4,lr} bl ProcessMenuInputNoWrapAround lsls r0, 24 @@ -2461,7 +2461,7 @@ _081100DE: pop {r4} pop {r1} bx r1 - thumb_func_end ProcessMenuInputNoWrap_ + thumb_func_end Menu_ProcessInputNoWrapClearOnChoose thumb_func_start sub_81100E8 sub_81100E8: @ 81100E8 diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s index e576313f4..792bed5cf 100644 --- a/asm/menu_helpers.s +++ b/asm/menu_helpers.s @@ -129,7 +129,7 @@ sub_80BF560: @ 80BF560 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -210,7 +210,7 @@ CreateYesNoMenuWithCallbacks: @ 80BF5D0 str r5, [sp, 0x4] movs r4, 0 str r4, [sp, 0x8] - bl sub_810FF60 + bl CreateYesNoMenu ldr r0, _080BF624 @ =gUnknown_20399C8 str r7, [r0] ldr r1, _080BF628 @ =gTasks diff --git a/asm/new_menu_helpers.s b/asm/new_menu_helpers.s index 2e4e1a2c9..7401398af 100644 --- a/asm/new_menu_helpers.s +++ b/asm/new_menu_helpers.s @@ -272,8 +272,8 @@ _080F695E: bx r1 thumb_func_end sub_80F68F0 - thumb_func_start sub_80F696C -sub_80F696C: @ 80F696C + thumb_func_start DecompressAndLoadBgGfxUsingHeap +DecompressAndLoadBgGfxUsingHeap: @ 80F696C push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -333,7 +333,7 @@ _080F69D2: .align 2, 0 _080F69E0: .4byte task_free_buf_after_copying_tile_data_to_vram _080F69E4: .4byte gTasks - thumb_func_end sub_80F696C + thumb_func_end DecompressAndLoadBgGfxUsingHeap thumb_func_start sub_80F69E8 sub_80F69E8: @ 80F69E8 @@ -2156,7 +2156,7 @@ sub_80F7858: @ 80F7858 movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu add sp, 0xC pop {r0} bx r0 @@ -2179,7 +2179,7 @@ sub_80F7880: @ 80F7880 movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu add sp, 0xC pop {r0} bx r0 diff --git a/asm/option_menu.s b/asm/option_menu.s index cff6f1f25..84cb85e6b 100644 --- a/asm/option_menu.s +++ b/asm/option_menu.s @@ -967,7 +967,7 @@ sub_8088B00: @ 8088B00 lsls r0, 24 lsrs r0, 24 mov r8, r0 - ldr r1, _08088BBC @ =gUnknown_3005020 + ldr r1, _08088BBC @ =gFieldCallback ldr r0, _08088BC0 @ =sub_807DF64 str r0, [r1] ldr r0, _08088BC4 @ =gMain @@ -1050,7 +1050,7 @@ sub_8088B00: @ 8088B00 pop {r0} bx r0 .align 2, 0 -_08088BBC: .4byte gUnknown_3005020 +_08088BBC: .4byte gFieldCallback _08088BC0: .4byte sub_807DF64 _08088BC4: .4byte gMain _08088BC8: .4byte gSaveBlock2Ptr diff --git a/asm/overworld.s b/asm/overworld.s index e7121d398..4210aaa9d 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -3022,8 +3022,8 @@ sav1_saved_warp2_map_get_name: @ 8056238 _0805625C: .4byte gSaveBlock1Ptr thumb_func_end sav1_saved_warp2_map_get_name - thumb_func_start sav1_map_get_name -sav1_map_get_name: @ 8056260 + thumb_func_start GetCurrentRegionMapSectionId +GetCurrentRegionMapSectionId: @ 8056260 push {lr} ldr r0, _08056284 @ =gSaveBlock1Ptr ldr r1, [r0] @@ -3042,7 +3042,7 @@ sav1_map_get_name: @ 8056260 bx r1 .align 2, 0 _08056284: .4byte gSaveBlock1Ptr - thumb_func_end sav1_map_get_name + thumb_func_end GetCurrentRegionMapSectionId thumb_func_start sav1_map_get_battletype sav1_map_get_battletype: @ 8056288 @@ -3196,8 +3196,8 @@ _080563E8: .4byte gUnknown_3005014 _080563EC: .4byte gUnknown_300501C thumb_func_end sub_8056354 - thumb_func_start sub_80563F0 -sub_80563F0: @ 80563F0 + thumb_func_start CleanupOverworldWindowsAndTilemaps +CleanupOverworldWindowsAndTilemaps: @ 80563F0 push {lr} bl sub_80F6C8C ldr r0, _08056414 @ =gUnknown_300501C @@ -3215,7 +3215,7 @@ sub_80563F0: @ 80563F0 _08056414: .4byte gUnknown_300501C _08056418: .4byte gUnknown_3005014 _0805641C: .4byte gUnknown_3005018 - thumb_func_end sub_80563F0 + thumb_func_end CleanupOverworldWindowsAndTilemaps thumb_func_start sub_8056420 sub_8056420: @ 8056420 @@ -3457,24 +3457,24 @@ _08056604: .4byte gFieldCallback2 _08056608: movs r1, 0 str r1, [r4] - ldr r0, _08056614 @ =gUnknown_3005020 + ldr r0, _08056614 @ =gFieldCallback str r1, [r0] b _08056636 .align 2, 0 -_08056614: .4byte gUnknown_3005020 +_08056614: .4byte gFieldCallback _08056618: - ldr r0, _08056628 @ =gUnknown_3005020 + ldr r0, _08056628 @ =gFieldCallback ldr r0, [r0] cmp r0, 0 beq _0805662C bl _call_via_r0 b _08056630 .align 2, 0 -_08056628: .4byte gUnknown_3005020 +_08056628: .4byte gFieldCallback _0805662C: bl sub_807DF64 _08056630: - ldr r1, _08056640 @ =gUnknown_3005020 + ldr r1, _08056640 @ =gFieldCallback movs r0, 0 str r0, [r1] _08056636: @@ -3484,7 +3484,7 @@ _08056638: pop {r1} bx r1 .align 2, 0 -_08056640: .4byte gUnknown_3005020 +_08056640: .4byte gFieldCallback thumb_func_end map_post_load_hook_exec thumb_func_start CB2_NewGame @@ -3498,7 +3498,7 @@ CB2_NewGame: @ 8056644 bl PlayTimeCounter_Start bl ScriptContext1_Init bl ScriptContext2_Disable - ldr r1, _0805668C @ =gUnknown_3005020 + ldr r1, _0805668C @ =gFieldCallback ldr r0, _08056690 @ =sub_807DF7C str r0, [r1] ldr r1, _08056694 @ =gFieldCallback2 @@ -3514,7 +3514,7 @@ CB2_NewGame: @ 8056644 pop {r0} bx r0 .align 2, 0 -_0805668C: .4byte gUnknown_3005020 +_0805668C: .4byte gFieldCallback _08056690: .4byte sub_807DF7C _08056694: .4byte gFieldCallback2 _08056698: .4byte gMain + 0x438 @@ -3545,7 +3545,7 @@ c2_whiteout: @ 80566A4 bl sub_80559F8 bl ScriptContext1_Init bl ScriptContext2_Disable - ldr r1, _0805670C @ =gUnknown_3005020 + ldr r1, _0805670C @ =gFieldCallback ldr r0, _08056710 @ =sub_807F5F0 str r0, [r1] mov r1, sp @@ -3565,7 +3565,7 @@ _08056702: bx r0 .align 2, 0 _08056708: .4byte gMain -_0805670C: .4byte gUnknown_3005020 +_0805670C: .4byte gFieldCallback _08056710: .4byte sub_807F5F0 _08056714: .4byte sub_8056534 _08056718: .4byte sub_80565B4 @@ -3624,7 +3624,7 @@ _08056784: .4byte sub_80565B4 sub_8056788: @ 8056788 push {lr} bl sub_80569BC - ldr r0, _080567A0 @ =gUnknown_3005020 + ldr r0, _080567A0 @ =gFieldCallback ldr r1, _080567A4 @ =sub_807DE58 str r1, [r0] ldr r0, _080567A8 @ =c2_80567AC @@ -3632,7 +3632,7 @@ sub_8056788: @ 8056788 pop {r0} bx r0 .align 2, 0 -_080567A0: .4byte gUnknown_3005020 +_080567A0: .4byte gFieldCallback _080567A4: .4byte sub_807DE58 _080567A8: .4byte c2_80567AC thumb_func_end sub_8056788 @@ -3659,8 +3659,8 @@ _080567D4: .4byte c1_link_related _080567D8: .4byte sub_80565B4 thumb_func_end c2_80567AC - thumb_func_start c2_exit_to_overworld_2_switch -c2_exit_to_overworld_2_switch: @ 80567DC + thumb_func_start CB2_ReturnToField +CB2_ReturnToField: @ 80567DC push {lr} bl is_c1_link_related_active cmp r0, 0x1 @@ -3679,7 +3679,7 @@ _080567FE: bx r0 .align 2, 0 _08056804: .4byte c2_exit_to_overworld_2_local - thumb_func_end c2_exit_to_overworld_2_switch + thumb_func_end CB2_ReturnToField thumb_func_start c2_exit_to_overworld_2_local c2_exit_to_overworld_2_local: @ 8056808 @@ -3731,26 +3731,26 @@ c2_8056854: @ 8056854 ldrb r0, [r0] cmp r0, 0 beq _08056888 - ldr r1, _08056880 @ =gUnknown_3005020 + ldr r1, _08056880 @ =gFieldCallback ldr r0, _08056884 @ =sub_807DE58 b _0805688C .align 2, 0 _08056878: .4byte c1_link_related _0805687C: .4byte gWirelessCommType -_08056880: .4byte gUnknown_3005020 +_08056880: .4byte gFieldCallback _08056884: .4byte sub_807DE58 _08056888: - ldr r1, _080568A0 @ =gUnknown_3005020 + ldr r1, _080568A0 @ =gFieldCallback ldr r0, _080568A4 @ =sub_807DDD0 _0805688C: str r0, [r1] bl ScriptContext1_Init bl ScriptContext2_Disable - bl c2_exit_to_overworld_2_switch + bl CB2_ReturnToField pop {r0} bx r0 .align 2, 0 -_080568A0: .4byte gUnknown_3005020 +_080568A0: .4byte gFieldCallback _080568A4: .4byte sub_807DDD0 thumb_func_end c2_8056854 @@ -3761,7 +3761,7 @@ sub_80568A8: @ 80568A8 ldr r1, _080568BC @ =gFieldCallback2 ldr r0, _080568C0 @ =sub_807E3BC str r0, [r1] - bl c2_exit_to_overworld_2_switch + bl CB2_ReturnToField pop {r0} bx r0 .align 2, 0 @@ -3773,14 +3773,14 @@ _080568C0: .4byte sub_807E3BC sub_80568C4: @ 80568C4 push {lr} bl sub_80569BC - ldr r1, _080568D8 @ =gUnknown_3005020 + ldr r1, _080568D8 @ =gFieldCallback ldr r0, _080568DC @ =sub_807DD44 str r0, [r1] - bl c2_exit_to_overworld_2_switch + bl CB2_ReturnToField pop {r0} bx r0 .align 2, 0 -_080568D8: .4byte gUnknown_3005020 +_080568D8: .4byte gFieldCallback _080568DC: .4byte sub_807DD44 thumb_func_end sub_80568C4 @@ -3788,29 +3788,29 @@ _080568DC: .4byte sub_807DD44 c2_exit_to_overworld_1_continue_scripts_restart_music: @ 80568E0 push {lr} bl sub_80569BC - ldr r1, _080568F4 @ =gUnknown_3005020 - ldr r0, _080568F8 @ =sub_807DD24 + ldr r1, _080568F4 @ =gFieldCallback + ldr r0, _080568F8 @ =FieldCallback_ReturnToEventScript2 str r0, [r1] - bl c2_exit_to_overworld_2_switch + bl CB2_ReturnToField pop {r0} bx r0 .align 2, 0 -_080568F4: .4byte gUnknown_3005020 -_080568F8: .4byte sub_807DD24 +_080568F4: .4byte gFieldCallback +_080568F8: .4byte FieldCallback_ReturnToEventScript2 thumb_func_end c2_exit_to_overworld_1_continue_scripts_restart_music thumb_func_start sub_80568FC sub_80568FC: @ 80568FC push {lr} bl sub_80569BC - ldr r1, _08056910 @ =gUnknown_3005020 + ldr r1, _08056910 @ =gFieldCallback ldr r0, _08056914 @ =sub_807DF7C str r0, [r1] - bl c2_exit_to_overworld_2_switch + bl CB2_ReturnToField pop {r0} bx r0 .align 2, 0 -_08056910: .4byte gUnknown_3005020 +_08056910: .4byte gFieldCallback _08056914: .4byte sub_807DF7C thumb_func_end sub_80568FC @@ -3867,17 +3867,17 @@ _08056990: .4byte gFieldCallback2 _08056994: .4byte gUnknown_2031DE0 _08056998: .4byte sub_805671C _0805699C: - ldr r0, _080569B0 @ =gUnknown_3005020 + ldr r0, _080569B0 @ =gFieldCallback ldr r1, _080569B4 @ =sub_8056918 str r1, [r0] ldr r0, _080569B8 @ =sub_8056534 bl sub_80565E0 - bl c2_exit_to_overworld_2_switch + bl CB2_ReturnToField _080569AC: pop {r0} bx r0 .align 2, 0 -_080569B0: .4byte gUnknown_3005020 +_080569B0: .4byte gFieldCallback _080569B4: .4byte sub_8056918 _080569B8: .4byte sub_8056534 thumb_func_end sub_8056938 @@ -5150,7 +5150,7 @@ _0805748C: .4byte sub_805671C _08057490: ldr r0, _080574A0 @ =sub_8056534 bl sub_80565E0 - bl c2_exit_to_overworld_2_switch + bl CB2_ReturnToField _0805749A: pop {r0} bx r0 @@ -5619,7 +5619,7 @@ sub_8057854: @ 8057854 ands r0, r1 cmp r0, 0 bne _08057876 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r0, _08057880 @ =sub_805671C bl SetMainCallback2 adds r0, r4, 0 diff --git a/asm/party_menu.s b/asm/party_menu.s index 385279a57..2aaa52985 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -2585,7 +2585,7 @@ sub_811FEA4: @ 811FEA4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -4198,7 +4198,7 @@ sub_8120AC4: @ 8120AC4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -6926,7 +6926,7 @@ sub_812200C: @ 812200C movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu add sp, 0xC pop {r0} bx r0 @@ -10113,7 +10113,7 @@ sub_8123930: @ 8123930 push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -10752,7 +10752,7 @@ sub_8123E8C: @ 8123E8C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -10871,7 +10871,7 @@ sub_8123F80: @ 8123F80 push {r7} lsls r0, 24 lsrs r5, r0, 24 - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -11790,7 +11790,7 @@ _08124754: .4byte gUnknown_203B0A0 _08124758: .4byte sub_80C4EF8 _0812475C: ldr r1, _08124780 @ =gUnknown_203B0A0 - ldr r0, _08124784 @ =c2_exit_to_overworld_2_switch + ldr r0, _08124784 @ =CB2_ReturnToField str r0, [r1] bl GetCursorSelectionMonId lsls r0, 24 @@ -11807,7 +11807,7 @@ _08124778: b _081247B4 .align 2, 0 _08124780: .4byte gUnknown_203B0A0 -_08124784: .4byte c2_exit_to_overworld_2_switch +_08124784: .4byte CB2_ReturnToField _08124788: .4byte gPlayerParty _0812478C: cmp r4, 0 @@ -11897,7 +11897,7 @@ sub_8124828: @ 8124828 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -11915,7 +11915,7 @@ _08124848: b _081248A2 _0812484E: ldr r1, _0812487C @ =gUnknown_203B0A0 - ldr r0, _08124880 @ =c2_exit_to_overworld_2_switch + ldr r0, _08124880 @ =CB2_ReturnToField str r0, [r1] bl GetCursorSelectionMonId lsls r0, 24 @@ -11936,7 +11936,7 @@ _0812484E: b _081248A2 .align 2, 0 _0812487C: .4byte gUnknown_203B0A0 -_08124880: .4byte c2_exit_to_overworld_2_switch +_08124880: .4byte CB2_ReturnToField _08124884: .4byte gPlayerParty _08124888: .4byte gUnknown_203B09C _0812488C: @@ -14561,7 +14561,7 @@ sub_8125DBC: @ 8125DBC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -15016,7 +15016,7 @@ sub_8126170: @ 8126170 muls r1, r0 ldr r0, _081261A4 @ =gPlayerParty adds r4, r1, r0 - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r5, r0, 24 cmp r5, 0 @@ -17093,7 +17093,7 @@ sub_8127268: @ 8127268 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -19308,7 +19308,7 @@ sub_8128370: @ 8128370 str r0, [sp] ldr r0, _081283A0 @ =sub_811FB28 str r0, [sp, 0x4] - ldr r0, _081283A4 @ =c2_exit_to_overworld_2_switch + ldr r0, _081283A4 @ =CB2_ReturnToField str r0, [sp, 0x8] movs r0, 0x6 movs r1, 0 @@ -19322,7 +19322,7 @@ sub_8128370: @ 8128370 _08128398: .4byte gFieldCallback2 _0812839C: .4byte hm_add_c3_without_phase_2 _081283A0: .4byte sub_811FB28 -_081283A4: .4byte c2_exit_to_overworld_2_switch +_081283A4: .4byte CB2_ReturnToField thumb_func_end sub_8128370 thumb_func_start sub_81283A8 @@ -19338,7 +19338,7 @@ sub_81283A8: @ 81283A8 str r1, [sp] ldr r1, _081283DC @ =sub_811FB28 str r1, [sp, 0x4] - ldr r1, _081283E0 @ =c2_exit_to_overworld_2_switch + ldr r1, _081283E0 @ =CB2_ReturnToField str r1, [sp, 0x8] movs r1, 0 movs r2, 0xB @@ -19351,7 +19351,7 @@ sub_81283A8: @ 81283A8 _081283D4: .4byte gFieldCallback2 _081283D8: .4byte hm_add_c3_without_phase_2 _081283DC: .4byte sub_811FB28 -_081283E0: .4byte c2_exit_to_overworld_2_switch +_081283E0: .4byte CB2_ReturnToField thumb_func_end sub_81283A8 thumb_func_start hm_add_c3_without_phase_2 diff --git a/asm/player_pc.s b/asm/player_pc.s index f847db1e6..b5149a435 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -627,12 +627,12 @@ sub_80EBB70: @ 80EBB70 ands r0, r1 cmp r0, 0 bne _080EBB9C - bl sub_80563F0 - ldr r2, _080EBBA8 @ =c2_exit_to_overworld_2_switch + bl CleanupOverworldWindowsAndTilemaps + ldr r2, _080EBBA8 @ =CB2_ReturnToField movs r0, 0x3 movs r1, 0 bl sub_8107DB4 - ldr r1, _080EBBAC @ =gUnknown_3005020 + ldr r1, _080EBBAC @ =gFieldCallback ldr r0, _080EBBB0 @ =sub_80EBC0C str r0, [r1] adds r0, r4, 0 @@ -643,8 +643,8 @@ _080EBB9C: bx r0 .align 2, 0 _080EBBA4: .4byte gPaletteFade -_080EBBA8: .4byte c2_exit_to_overworld_2_switch -_080EBBAC: .4byte gUnknown_3005020 +_080EBBA8: .4byte CB2_ReturnToField +_080EBBAC: .4byte gFieldCallback _080EBBB0: .4byte sub_80EBC0C thumb_func_end sub_80EBB70 @@ -740,14 +740,14 @@ sub_80EBC38: @ 80EBC38 adds r0, r6, r0 ldr r1, _080EBC70 @ =sub_80EBD18 str r1, [r0] - ldr r1, _080EBC74 @ =gUnknown_3005020 + ldr r1, _080EBC74 @ =gFieldCallback ldr r0, _080EBC78 @ =sub_80EBCAC str r0, [r1] b _080EBC9C .align 2, 0 _080EBC6C: .4byte gTasks+0x8 _080EBC70: .4byte sub_80EBD18 -_080EBC74: .4byte gUnknown_3005020 +_080EBC74: .4byte gFieldCallback _080EBC78: .4byte sub_80EBCAC _080EBC7C: ldrb r0, [r4, 0x14] @@ -808,9 +808,9 @@ sub_80EBCD8: @ 80EBCD8 ands r0, r1 cmp r0, 0 bne _080EBD06 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldrb r0, [r5, 0xC] - ldr r1, _080EBD14 @ =c2_exit_to_overworld_2_switch + ldr r1, _080EBD14 @ =CB2_ReturnToField bl sub_810D3F4 adds r0, r4, 0 bl DestroyTask @@ -821,7 +821,7 @@ _080EBD06: .align 2, 0 _080EBD0C: .4byte gTasks+0x8 _080EBD10: .4byte gPaletteFade -_080EBD14: .4byte c2_exit_to_overworld_2_switch +_080EBD14: .4byte CB2_ReturnToField thumb_func_end sub_80EBCD8 thumb_func_start sub_80EBD18 @@ -1438,7 +1438,7 @@ sub_80EC1D4: @ 80EC1D4 cmp r0, 0 bne _080EC216 bl sub_810EDB0 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r2, _080EC220 @ =gSaveBlock1Ptr ldr r1, _080EC224 @ =gUnknown_203AAC4 ldrh r0, [r1] @@ -1543,17 +1543,17 @@ _080EC2B6: thumb_func_start sub_80EC2C0 sub_80EC2C0: @ 80EC2C0 push {lr} - ldr r0, _080EC2D4 @ =gUnknown_3005020 + ldr r0, _080EC2D4 @ =gFieldCallback ldr r1, _080EC2D8 @ =sub_80EC260 str r1, [r0] - ldr r0, _080EC2DC @ =c2_exit_to_overworld_2_switch + ldr r0, _080EC2DC @ =CB2_ReturnToField bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 -_080EC2D4: .4byte gUnknown_3005020 +_080EC2D4: .4byte gFieldCallback _080EC2D8: .4byte sub_80EC260 -_080EC2DC: .4byte c2_exit_to_overworld_2_switch +_080EC2DC: .4byte CB2_ReturnToField thumb_func_end sub_80EC2C0 thumb_func_start sub_80EC2E0 @@ -1599,7 +1599,7 @@ sub_80EC324: @ 80EC324 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r0, 24 movs r1, 0x1 @@ -1753,7 +1753,7 @@ sub_80EC444: @ 80EC444 cmp r0, 0 bne _080EC468 bl sub_810EDB0 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps bl sub_81273D8 adds r0, r4, 0 bl DestroyTask @@ -1834,17 +1834,17 @@ _080EC4F6: thumb_func_start sub_80EC500 sub_80EC500: @ 80EC500 push {lr} - ldr r0, _080EC514 @ =gUnknown_3005020 + ldr r0, _080EC514 @ =gFieldCallback ldr r1, _080EC518 @ =sub_80EC474 str r1, [r0] - ldr r0, _080EC51C @ =c2_exit_to_overworld_2_switch + ldr r0, _080EC51C @ =CB2_ReturnToField bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 -_080EC514: .4byte gUnknown_3005020 +_080EC514: .4byte gFieldCallback _080EC518: .4byte sub_80EC474 -_080EC51C: .4byte c2_exit_to_overworld_2_switch +_080EC51C: .4byte CB2_ReturnToField thumb_func_end sub_80EC500 thumb_func_start sub_80EC520 diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index 33c3c0851..24094d9af 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -95,7 +95,7 @@ sub_810250C: @ 810250C movs r0, 0x3 adds r2, r4, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap b _081025AE .align 2, 0 _08102598: .4byte gUnknown_8451EBC @@ -106,7 +106,7 @@ _081025A0: movs r0, 0x3 adds r2, r4, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap _081025AE: ldr r0, _081026A8 @ =gUnknown_8451ECC bl InitWindows diff --git a/asm/unk_8147500.s b/asm/pokemon_jump.s index 53fc6a8a0..1af1fd10b 100644 --- a/asm/unk_8147500.s +++ b/asm/pokemon_jump.s @@ -5,118 +5,6 @@ .text - thumb_func_start sub_8147500 -sub_8147500: @ 8147500 - push {lr} - ldr r0, _08147518 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - ldr r0, _0814751C @ =gSpecialVar_0x8006 - ldrh r2, [r0] - cmp r1, 0x8 - beq _08147512 - cmp r2, 0x8 - bne _08147520 -_08147512: - movs r0, 0x1 - b _0814758E - .align 2, 0 -_08147518: .4byte gSpecialVar_0x8004 -_0814751C: .4byte gSpecialVar_0x8006 -_08147520: - cmp r1, 0 - beq _08147528 - cmp r2, 0 - bne _0814752C -_08147528: - movs r0, 0x7 - b _0814758E -_0814752C: - cmp r1, 0x9 - beq _08147534 - cmp r2, 0x9 - bne _08147538 -_08147534: - movs r0, 0xA - b _0814758E -_08147538: - cmp r1, 0xA - beq _08147540 - cmp r2, 0xA - bne _08147544 -_08147540: - movs r0, 0xC - b _0814758E -_08147544: - subs r0, r1, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bhi _0814755C - subs r0, r2, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bhi _0814755C - movs r0, 0x2 - b _0814758E -_0814755C: - subs r0, r1, 0x4 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _08147574 - subs r0, r2, 0x4 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _08147574 - movs r0, 0x3 - b _0814758E -_08147574: - subs r0, r1, 0x6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0814758C - subs r0, r2, 0x6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0814758C - movs r0, 0x5 - b _0814758E -_0814758C: - movs r0, 0x6 -_0814758E: - pop {r1} - bx r1 - thumb_func_end sub_8147500 - - thumb_func_start sub_8147594 -sub_8147594: @ 8147594 - push {lr} - ldr r0, _081475B0 @ =gSaveBlock1Ptr - ldr r2, [r0] - ldrh r1, [r2, 0x4] - ldr r0, _081475B4 @ =0x00000503 - cmp r1, r0 - bne _081475B8 - movs r1, 0 - ldrsh r0, [r2, r1] - cmp r0, 0x17 - bgt _081475B8 - movs r0, 0x1 - b _081475BA - .align 2, 0 -_081475B0: .4byte gSaveBlock1Ptr -_081475B4: .4byte 0x00000503 -_081475B8: - movs r0, 0 -_081475BA: - pop {r1} - bx r1 - thumb_func_end sub_8147594 - thumb_func_start sub_81475C0 sub_81475C0: @ 81475C0 push {r4,r5,lr} diff --git a/asm/unk_8147AA8.s b/asm/pokemon_jump_2.s index d430d7624..f47e312ff 100644 --- a/asm/unk_8147AA8.s +++ b/asm/pokemon_jump_2.s @@ -4875,7 +4875,7 @@ _08149DF0: movs r0, 0 movs r1, 0xA movs r2, 0xD0 - bl sub_814FE40 + bl LoadUserWindowBorderGfx movs r0, 0 bl CopyBgTilemapBufferToVram movs r0, 0x2 @@ -5961,7 +5961,7 @@ _0814A73C: thumb_func_start sub_814A744 sub_814A744: @ 814A744 push {lr} - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r0, 24 pop {r1} @@ -6075,7 +6075,7 @@ sub_814A7D0: @ 814A7D0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu add sp, 0x14 pop {r4,r5} pop {r0} diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index dada77eb3..848434a55 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1737,7 +1737,7 @@ _0808C680: ands r0, r1 cmp r0, 0 bne _0808C69C - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldrb r0, [r5, 0xC] bl sub_808CDE4 adds r0, r4, 0 @@ -1883,18 +1883,18 @@ sub_808C7B4: @ 808C7B4 bl sub_808FDF0 ldr r1, _0808C7D0 @ =gUnknown_20397A8 strb r0, [r1] - ldr r1, _0808C7D4 @ =gUnknown_3005020 + ldr r1, _0808C7D4 @ =gFieldCallback ldr r0, _0808C7D8 @ =mapldr_0808C6D8 str r0, [r1] - ldr r0, _0808C7DC @ =c2_exit_to_overworld_2_switch + ldr r0, _0808C7DC @ =CB2_ReturnToField bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 _0808C7D0: .4byte gUnknown_20397A8 -_0808C7D4: .4byte gUnknown_3005020 +_0808C7D4: .4byte gFieldCallback _0808C7D8: .4byte mapldr_0808C6D8 -_0808C7DC: .4byte c2_exit_to_overworld_2_switch +_0808C7DC: .4byte CB2_ReturnToField thumb_func_end sub_808C7B4 thumb_func_start sub_808C7E0 @@ -4700,7 +4700,7 @@ _0808DF24: adds r0, 0x1 strb r0, [r1] _0808DF3A: - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -5479,7 +5479,7 @@ _0808E59C: .align 2, 0 _0808E5B8: .4byte gUnknown_20397B0 _0808E5BC: - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -6284,7 +6284,7 @@ _0808EC40: .align 2, 0 _0808EC50: .4byte gMain _0808EC54: - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -6426,7 +6426,7 @@ _0808ED74: .align 2, 0 _0808ED84: .4byte gMain _0808ED88: - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -6681,7 +6681,7 @@ sub_808EF8C: @ 808EF8C movs r0, 0x3 movs r2, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r0, _0808EFC0 @ =gUnknown_83CE4D0 ldr r1, _0808EFC4 @ =0x0600f800 bl LZ77UnCompVram @@ -6724,7 +6724,7 @@ sub_808EFE4: @ 808EFE4 movs r0, 0x1 movs r2, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r0, _0808F038 @ =gUnknown_83CE5FC ldr r5, _0808F03C @ =gUnknown_20397B0 ldr r1, [r5] @@ -8345,7 +8345,7 @@ sub_808FCE8: @ 808FCE8 str r1, [sp, 0x8] movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu lsls r4, 24 asrs r4, 24 adds r0, r4, 0 @@ -12046,7 +12046,7 @@ _08091938: str r0, [sp] movs r0, 0x2 movs r2, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap movs r0, 0x2 bl CopyBgTilemapBufferToVram add sp, 0x4 diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 8cc6afe0f..7f5e31b7c 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -14088,7 +14088,7 @@ _0813B84E: sub_813B854: @ 813B854 push {lr} sub sp, 0x4 - ldr r3, _0813B86C @ =c2_exit_to_overworld_2_switch + ldr r3, _0813B86C @ =CB2_ReturnToField movs r0, 0 str r0, [sp] movs r1, 0 @@ -14098,7 +14098,7 @@ sub_813B854: @ 813B854 pop {r0} bx r0 .align 2, 0 -_0813B86C: .4byte c2_exit_to_overworld_2_switch +_0813B86C: .4byte CB2_ReturnToField thumb_func_end sub_813B854 .align 2, 0 @ Don't pad with nop. diff --git a/asm/region_map.s b/asm/region_map.s index 1072e3068..187da882f 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -118,13 +118,13 @@ sub_80BFEDC: @ 80BFEDC str r2, [r4] cmp r2, 0 bne _080BFF08 - ldr r0, _080BFF04 @ =c2_exit_to_overworld_2_switch + ldr r0, _080BFF04 @ =CB2_ReturnToField bl SetMainCallback2 b _080BFF38 .align 2, 0 _080BFEFC: .4byte gUnknown_20399D4 _080BFF00: .4byte 0x000047c0 -_080BFF04: .4byte c2_exit_to_overworld_2_switch +_080BFF04: .4byte CB2_ReturnToField _080BFF08: ldr r1, _080BFF40 @ =gUnknown_2031DE0 movs r0, 0x1 @@ -172,13 +172,13 @@ sub_80BFF50: @ 80BFF50 str r2, [r4] cmp r2, 0 bne _080BFF7C - ldr r0, _080BFF78 @ =c2_exit_to_overworld_2_switch + ldr r0, _080BFF78 @ =CB2_ReturnToField bl SetMainCallback2 b _080BFFB4 .align 2, 0 _080BFF70: .4byte gUnknown_20399D4 _080BFF74: .4byte 0x000047c0 -_080BFF78: .4byte c2_exit_to_overworld_2_switch +_080BFF78: .4byte CB2_ReturnToField _080BFF7C: ldr r1, _080BFFBC @ =gUnknown_2031DE0 movs r0, 0x1 @@ -6451,7 +6451,7 @@ _080C3300: ldr r1, _080C3338 @ =0x000047bc adds r0, r1 ldr r1, [r0] - ldr r0, _080C333C @ =c2_exit_to_overworld_2_switch + ldr r0, _080C333C @ =CB2_ReturnToField cmp r1, r0 bne _080C331A _080C3318: @@ -6474,7 +6474,7 @@ _080C332C: .align 2, 0 _080C3334: .4byte gUnknown_20399D4 _080C3338: .4byte 0x000047bc -_080C333C: .4byte c2_exit_to_overworld_2_switch +_080C333C: .4byte CB2_ReturnToField _080C3340: .4byte gUnknown_20399E4 _080C3344: .4byte sub_80C3348 thumb_func_end sub_80C31C0 @@ -10276,12 +10276,12 @@ _080C5220: ldrb r0, [r0, 0x2] cmp r0, 0x1 bne _080C5258 - ldr r0, _080C5254 @ =c2_exit_to_overworld_2_switch + ldr r0, _080C5254 @ =CB2_ReturnToField bl SetMainCallback2 b _080C525E .align 2, 0 _080C5250: .4byte gUnknown_20399FC -_080C5254: .4byte c2_exit_to_overworld_2_switch +_080C5254: .4byte CB2_ReturnToField _080C5258: ldr r0, _080C5274 @ =sub_8124AB0 bl SetMainCallback2 diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index d88ecf578..a9f23d1d4 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -661,7 +661,7 @@ _08077CD2: lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r5, _08077D98 @ =gMultiuseSpriteTemplate adds r0, r7, 0 movs r1, 0x2 @@ -887,7 +887,7 @@ _08077EA8: lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r5, _08077FCC @ =gMultiuseSpriteTemplate adds r0, r7, 0 movs r1, 0x2 diff --git a/asm/safari_zone.s b/asm/safari_zone.s index b29c36739..48103dc9c 100644 --- a/asm/safari_zone.s +++ b/asm/safari_zone.s @@ -122,12 +122,12 @@ sub_80A0F4C: @ 80A0F4C ldrb r0, [r0] cmp r0, 0 beq _080A0F68 - ldr r0, _080A0F64 @ =c2_exit_to_overworld_2_switch + ldr r0, _080A0F64 @ =CB2_ReturnToField bl SetMainCallback2 b _080A0FB0 .align 2, 0 _080A0F60: .4byte gUnknown_2039994 -_080A0F64: .4byte c2_exit_to_overworld_2_switch +_080A0F64: .4byte CB2_ReturnToField _080A0F68: ldr r0, _080A0F88 @ =gUnknown_2023E8A ldrb r0, [r0] @@ -136,7 +136,7 @@ _080A0F68: ldr r0, _080A0F8C @ =gUnknown_81BFB87 bl ScriptContext2_RunNewScript bl warp_in - ldr r1, _080A0F90 @ =gUnknown_3005020 + ldr r1, _080A0F90 @ =gFieldCallback ldr r0, _080A0F94 @ =sub_807E3EC str r0, [r1] ldr r0, _080A0F98 @ =sub_805671C @@ -145,7 +145,7 @@ _080A0F68: .align 2, 0 _080A0F88: .4byte gUnknown_2023E8A _080A0F8C: .4byte gUnknown_81BFB87 -_080A0F90: .4byte gUnknown_3005020 +_080A0F90: .4byte gFieldCallback _080A0F94: .4byte sub_807E3EC _080A0F98: .4byte sub_805671C _080A0F9C: diff --git a/asm/script_menu.s b/asm/script_menu.s index 63caa179f..d917b5d5b 100644 --- a/asm/script_menu.s +++ b/asm/script_menu.s @@ -690,7 +690,7 @@ task_yes_no_maybe: @ 809CE54 .align 2, 0 _0809CE74: .4byte gTasks _0809CE78: - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 movs r0, 0x1 diff --git a/asm/script_pokemon_util_80BF8FC.s b/asm/script_pokemon_util_80BF8FC.s index eec41cf11..26c113dfd 100644 --- a/asm/script_pokemon_util_80BF8FC.s +++ b/asm/script_pokemon_util_80BF8FC.s @@ -112,14 +112,14 @@ sub_80BF9BC: @ 80BF9BC subs r2, 0x1 lsls r2, 24 lsrs r2, 24 - ldr r3, _080BF9FC @ =c2_exit_to_overworld_2_switch + ldr r3, _080BF9FC @ =CB2_ReturnToField movs r4, 0 str r4, [sp] bl sub_8134738 movs r0, 0x3 bl sub_8138B38 - ldr r1, _080BFA00 @ =gUnknown_3005020 - ldr r0, _080BFA04 @ =sub_807DD24 + ldr r1, _080BFA00 @ =gFieldCallback + ldr r0, _080BFA04 @ =FieldCallback_ReturnToEventScript2 str r0, [r1] add sp, 0x4 pop {r4} @@ -129,9 +129,9 @@ sub_80BF9BC: @ 80BF9BC _080BF9F0: .4byte gPlayerParty _080BF9F4: .4byte gSpecialVar_0x8004 _080BF9F8: .4byte gPlayerPartyCount -_080BF9FC: .4byte c2_exit_to_overworld_2_switch -_080BFA00: .4byte gUnknown_3005020 -_080BFA04: .4byte sub_807DD24 +_080BF9FC: .4byte CB2_ReturnToField +_080BFA00: .4byte gFieldCallback +_080BFA04: .4byte FieldCallback_ReturnToEventScript2 thumb_func_end sub_80BF9BC thumb_func_start ScrSpecial_CountPokemonMoves diff --git a/asm/shop.s b/asm/shop.s index bdb2f8e9e..525fbbc45 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -288,18 +288,18 @@ _0809ACD0: .4byte sub_809AD40 thumb_func_start sub_809ACD4 sub_809ACD4: @ 809ACD4 push {lr} - ldr r2, _0809ACEC @ =c2_exit_to_overworld_2_switch + ldr r2, _0809ACEC @ =CB2_ReturnToField movs r0, 0x2 movs r1, 0x3 bl sub_8107DB4 - ldr r1, _0809ACF0 @ =gUnknown_3005020 + ldr r1, _0809ACF0 @ =gFieldCallback ldr r0, _0809ACF4 @ =sub_809AD74 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_0809ACEC: .4byte c2_exit_to_overworld_2_switch -_0809ACF0: .4byte gUnknown_3005020 +_0809ACEC: .4byte CB2_ReturnToField +_0809ACF0: .4byte gFieldCallback _0809ACF4: .4byte sub_809AD74 thumb_func_end sub_809ACD4 @@ -1452,17 +1452,17 @@ _0809B66C: .4byte gUnknown_2039968 thumb_func_start sub_809B670 sub_809B670: @ 809B670 push {lr} - ldr r0, _0809B684 @ =gUnknown_3005020 + ldr r0, _0809B684 @ =gFieldCallback ldr r1, _0809B688 @ =sub_809AD74 str r1, [r0] - ldr r0, _0809B68C @ =c2_exit_to_overworld_2_switch + ldr r0, _0809B68C @ =CB2_ReturnToField bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 -_0809B684: .4byte gUnknown_3005020 +_0809B684: .4byte gFieldCallback _0809B688: .4byte sub_809AD74 -_0809B68C: .4byte c2_exit_to_overworld_2_switch +_0809B68C: .4byte CB2_ReturnToField thumb_func_end sub_809B670 thumb_func_start sub_809B690 @@ -2644,7 +2644,7 @@ sub_809C004: @ 809C004 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r1, _0809C03C @ =gUnknown_3005020 + ldr r1, _0809C03C @ =gFieldCallback ldr r0, _0809C040 @ =sub_809AD74 str r0, [r1] movs r0, 0x1 @@ -2666,7 +2666,7 @@ sub_809C004: @ 809C004 pop {r0} bx r0 .align 2, 0 -_0809C03C: .4byte gUnknown_3005020 +_0809C03C: .4byte gFieldCallback _0809C040: .4byte sub_809AD74 _0809C044: .4byte gTasks _0809C048: .4byte sub_809C04C @@ -2693,7 +2693,7 @@ sub_809C04C: @ 809C04C movs r2, 0 bl DestroyListMenu bl sub_809B604 - ldr r0, _0809C090 @ =c2_exit_to_overworld_2_switch + ldr r0, _0809C090 @ =CB2_ReturnToField bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask @@ -2704,7 +2704,7 @@ _0809C082: .align 2, 0 _0809C088: .4byte gTasks+0x8 _0809C08C: .4byte gPaletteFade -_0809C090: .4byte c2_exit_to_overworld_2_switch +_0809C090: .4byte CB2_ReturnToField thumb_func_end sub_809C04C thumb_func_start nullsub_52 diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 8d4b0cd9e..02e17cbb0 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -629,7 +629,7 @@ _0813FD00: strh r0, [r4] b _0813FD78 _0813FD08: - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -3541,7 +3541,7 @@ _081411D0: movs r0, 0 movs r1, 0xA movs r2, 0xD0 - bl sub_814FE40 + bl LoadUserWindowBorderGfx movs r0, 0 movs r1, 0x1 movs r2, 0xF0 @@ -4603,7 +4603,7 @@ sub_8141AD8: @ 8141AD8 movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu lsls r4, 24 asrs r4, 24 adds r0, r4, 0 diff --git a/asm/start_menu.s b/asm/start_menu.s index d165dbc36..3fc08e41a 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -856,7 +856,7 @@ _0806F428: bl IncrementGameStat bl PlayRainStoppingSoundEffect bl sub_806EF18 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r0, _0806F448 @ =sub_810275C bl SetMainCallback2 movs r0, 0x1 @@ -883,7 +883,7 @@ _0806F460: .4byte gPaletteFade _0806F464: bl PlayRainStoppingSoundEffect bl sub_806EF18 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r0, _0806F47C @ =CB2_PartyMenuFromStartMenu bl SetMainCallback2 movs r0, 0x1 @@ -910,7 +910,7 @@ _0806F494: .4byte gPaletteFade _0806F498: bl PlayRainStoppingSoundEffect bl sub_806EF18 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r0, _0806F4B0 @ =UseFameCheckerFromMenu bl SetMainCallback2 movs r0, 0x1 @@ -937,7 +937,7 @@ _0806F4C8: .4byte gPaletteFade _0806F4CC: bl PlayRainStoppingSoundEffect bl sub_806EF18 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r0, _0806F4E4 @ =sub_80568A8 bl sub_808B698 movs r0, 0x1 @@ -976,7 +976,7 @@ _0806F510: .4byte gPaletteFade _0806F514: bl PlayRainStoppingSoundEffect bl sub_806EF18 - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r0, _0806F534 @ =sub_8088388 bl SetMainCallback2 ldr r1, _0806F538 @ =gMain @@ -1030,7 +1030,7 @@ sub_806F56C: @ 806F56C _0806F580: .4byte gPaletteFade _0806F584: bl PlayRainStoppingSoundEffect - bl sub_80563F0 + bl CleanupOverworldWindowsAndTilemaps ldr r0, _0806F59C @ =gUnknown_300502C ldrb r0, [r0] ldr r1, _0806F5A0 @ =sub_80568A8 @@ -1362,7 +1362,7 @@ _0806F7F4: .4byte sub_806F7F8 thumb_func_start sub_806F7F8 sub_806F7F8: @ 806F7F8 push {lr} - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -1481,7 +1481,7 @@ _0806F8D8: .4byte sub_806F8DC thumb_func_start sub_806F8DC sub_806F8DC: @ 806F8DC push {lr} - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 diff --git a/asm/text_window.s b/asm/text_window.s index 02a6efcfe..0b1a7a570 100644 --- a/asm/text_window.s +++ b/asm/text_window.s @@ -171,8 +171,8 @@ sub_814FDF4: @ 814FDF4 _0814FE3C: .4byte gUnknown_8471E8C thumb_func_end sub_814FDF4 - thumb_func_start sub_814FE40 -sub_814FE40: @ 814FE40 + thumb_func_start LoadUserWindowBorderGfx +LoadUserWindowBorderGfx: @ 814FE40 push {r4,lr} adds r4, r1, 0 adds r3, r2, 0 @@ -193,7 +193,7 @@ sub_814FE40: @ 814FE40 bx r0 .align 2, 0 _0814FE68: .4byte gSaveBlock2Ptr - thumb_func_end sub_814FE40 + thumb_func_end LoadUserWindowBorderGfx thumb_func_start sub_814FE6C sub_814FE6C: @ 814FE6C diff --git a/asm/trade.s b/asm/trade.s index d26aed7d8..1c6dd00a8 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -3432,7 +3432,7 @@ _0804E2A6: movs r1, 0x3 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu ldr r0, [r4] adds r0, 0x6F movs r1, 0x4 @@ -3912,7 +3912,7 @@ _0804E670: .4byte 0x0000bbcc thumb_func_start sub_804E674 sub_804E674: @ 804E674 push {r4,lr} - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -4019,7 +4019,7 @@ _0804E740: .4byte gUnknown_2031DA8 thumb_func_start sub_804E744 sub_804E744: @ 804E744 push {r4,r5,lr} - bl ProcessMenuInputNoWrap_ + bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 asrs r5, r0, 24 cmp r5, 0 @@ -4162,7 +4162,7 @@ sub_804E830: @ 804E830 movs r1, 0x3 movs r2, 0 movs r3, 0x2 - bl sub_810FF60 + bl CreateYesNoMenu ldr r0, [r4] adds r0, 0xA8 strb r5, [r0] @@ -7337,7 +7337,7 @@ _080500C8: bl GetMonSpritePalStruct ldrh r0, [r0, 0x4] adds r1, r4, 0 - bl sub_803F7D4 + bl SetMultiuseSpriteTemplateToPokemon ldr r0, _08050128 @ =gMultiuseSpriteTemplate movs r1, 0x78 movs r2, 0x3C @@ -7841,7 +7841,7 @@ sub_80504CC: @ 80504CC movs r0, 0x3 bl SetBgTilemapBuffer bl DeactivateAllTextPrinters - ldr r0, _080505B8 @ =gUnknown_8D00000 + ldr r0, _080505B8 @ =gBattleTextboxTiles mov r10, r0 movs r0, 0 mov r9, r0 @@ -7849,7 +7849,7 @@ sub_80504CC: @ 80504CC mov r1, r10 movs r2, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r0, _080505BC @ =gFile_graphics_interface_menu_map_tilemap mov r8, r0 ldr r4, _080505C0 @ =gDecompressionBuffer @@ -7860,7 +7860,7 @@ sub_80504CC: @ 80504CC adds r2, r5, 0 movs r3, 0 bl CopyToBgTilemapBuffer - ldr r6, _080505C4 @ =gUnknown_8D004D8 + ldr r6, _080505C4 @ =gBattleTextboxPalette adds r0, r6, 0 movs r1, 0 movs r2, 0x20 @@ -7873,7 +7873,7 @@ sub_80504CC: @ 80504CC mov r1, r10 movs r2, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap mov r0, r8 adds r1, r4, 0 bl LZDecompressWram @@ -7896,10 +7896,10 @@ sub_80504CC: @ 80504CC bx r0 .align 2, 0 _080505B4: .4byte gUnknown_826D1D4 -_080505B8: .4byte gUnknown_8D00000 +_080505B8: .4byte gBattleTextboxTiles _080505BC: .4byte gFile_graphics_interface_menu_map_tilemap _080505C0: .4byte gDecompressionBuffer -_080505C4: .4byte gUnknown_8D004D8 +_080505C4: .4byte gBattleTextboxPalette _080505C8: .4byte gUnknown_826D1BC thumb_func_end sub_80504CC @@ -8360,11 +8360,11 @@ _080509A4: ldr r1, _08050A00 @ =0x00005206 movs r0, 0xC bl SetGpuReg - ldr r0, _08050A04 @ =gUnknown_8EAEA20 + ldr r0, _08050A04 @ =gTradeGba2_Pal movs r1, 0x10 movs r2, 0x60 bl LoadPalette - ldr r3, _08050A08 @ =gUnknown_8EAEA80 + ldr r3, _08050A08 @ =gTradeGba_Gfx ldr r4, _08050A0C @ =0x06004000 movs r5, 0xA1 lsls r5, 5 @@ -8388,8 +8388,8 @@ _080509E6: .align 2, 0 _080509FC: .4byte gUnknown_2031DAC _08050A00: .4byte 0x00005206 -_08050A04: .4byte gUnknown_8EAEA20 -_08050A08: .4byte gUnknown_8EAEA80 +_08050A04: .4byte gTradeGba2_Pal +_08050A08: .4byte gTradeGba_Gfx _08050A0C: .4byte 0x06004000 _08050A10: .4byte 0x040000d4 _08050A14: .4byte 0x80000800 @@ -8436,7 +8436,7 @@ _08050A66: ldr r1, _08050ABC @ =0x80000800 str r1, [r0, 0x8] ldr r0, [r0, 0x8] - ldr r3, _08050AC0 @ =gUnknown_8EAEA80 + ldr r3, _08050AC0 @ =gTradeGba_Gfx movs r4, 0xC0 lsls r4, 19 movs r5, 0xA1 @@ -8471,7 +8471,7 @@ _08050AB0: .4byte gUnknown_8269A5C _08050AB4: .4byte 0x06002800 _08050AB8: .4byte 0x040000d4 _08050ABC: .4byte 0x80000800 -_08050AC0: .4byte gUnknown_8EAEA80 +_08050AC0: .4byte gTradeGba_Gfx _08050AC4: ldr r0, _08050AF4 @ =gUnknown_2031DAC ldr r2, [r0] @@ -8769,11 +8769,11 @@ _08050D48: ldr r1, _08050DC0 @ =0x00005206 movs r0, 0xC bl SetGpuReg - ldr r0, _08050DC4 @ =gUnknown_8EAEA20 + ldr r0, _08050DC4 @ =gTradeGba2_Pal movs r1, 0x10 movs r2, 0x60 bl LoadPalette - ldr r3, _08050DC8 @ =gUnknown_8EAEA80 + ldr r3, _08050DC8 @ =gTradeGba_Gfx ldr r4, _08050DCC @ =0x06004000 movs r5, 0xA1 lsls r5, 5 @@ -8800,7 +8800,7 @@ _08050D98: orrs r0, r7 str r0, [r1, 0x8] ldr r0, [r1, 0x8] - ldr r1, _08050DD8 @ =gUnknown_826601C + ldr r1, _08050DD8 @ =gUnknown_08331F60 ldr r2, _08050DDC @ =0x06009000 ldr r0, _08050DD0 @ =0x040000d4 str r1, [r0] @@ -8816,12 +8816,12 @@ _08050DB4: .align 2, 0 _08050DBC: .4byte gUnknown_2031DAC _08050DC0: .4byte 0x00005206 -_08050DC4: .4byte gUnknown_8EAEA20 -_08050DC8: .4byte gUnknown_8EAEA80 +_08050DC4: .4byte gTradeGba2_Pal +_08050DC8: .4byte gTradeGba_Gfx _08050DCC: .4byte 0x06004000 _08050DD0: .4byte 0x040000d4 _08050DD4: .4byte 0x80000800 -_08050DD8: .4byte gUnknown_826601C +_08050DD8: .4byte gUnknown_08331F60 _08050DDC: .4byte 0x06009000 thumb_func_end sub_8050968 @@ -11137,7 +11137,7 @@ _080522BC: bl Free str r4, [r7] _0805230A: - ldr r0, _08052328 @ =c2_exit_to_overworld_2_switch + ldr r0, _08052328 @ =CB2_ReturnToField bl SetMainCallback2 bl sub_8053AE4 bl sub_812B484 @@ -11150,7 +11150,7 @@ _0805231A: bx r1 .align 2, 0 _08052324: .4byte gPaletteFade -_08052328: .4byte c2_exit_to_overworld_2_switch +_08052328: .4byte CB2_ReturnToField thumb_func_end sub_8050F3C thumb_func_start sub_805232C @@ -13362,7 +13362,7 @@ _08053718: bl Free str r4, [r7] _08053766: - ldr r0, _08053784 @ =c2_exit_to_overworld_2_switch + ldr r0, _08053784 @ =CB2_ReturnToField bl SetMainCallback2 bl sub_8053AE4 bl sub_812B484 @@ -13375,7 +13375,7 @@ _08053776: bx r1 .align 2, 0 _08053780: .4byte gPaletteFade -_08053784: .4byte c2_exit_to_overworld_2_switch +_08053784: .4byte CB2_ReturnToField thumb_func_end sub_805232C thumb_func_start sub_8053788 @@ -14875,8 +14875,8 @@ sub_8054470: @ 8054470 bne _08054494 ldr r0, _080544A0 @ =sub_80505CC bl SetMainCallback2 - ldr r1, _080544A4 @ =gUnknown_3005020 - ldr r0, _080544A8 @ =sub_807DD24 + ldr r1, _080544A4 @ =gFieldCallback + ldr r0, _080544A8 @ =FieldCallback_ReturnToEventScript2 str r0, [r1] adds r0, r4, 0 bl DestroyTask @@ -14887,8 +14887,8 @@ _08054494: .align 2, 0 _0805449C: .4byte gPaletteFade _080544A0: .4byte sub_80505CC -_080544A4: .4byte gUnknown_3005020 -_080544A8: .4byte sub_807DD24 +_080544A4: .4byte gFieldCallback +_080544A8: .4byte FieldCallback_ReturnToEventScript2 thumb_func_end sub_8054470 thumb_func_start sub_80544AC diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s index 6826bdb77..1a9681b3b 100644 --- a/asm/union_room_chat.s +++ b/asm/union_room_chat.s @@ -1720,7 +1720,7 @@ _081291E8: bl sub_812B4B8 bl sub_8129B88 bl sub_81284BC - ldr r0, _08129214 @ =c2_exit_to_overworld_2_switch + ldr r0, _08129214 @ =CB2_ReturnToField bl SetMainCallback2 _08129206: add sp, 0x4 @@ -1729,7 +1729,7 @@ _08129206: bx r0 .align 2, 0 _08129210: .4byte gPaletteFade -_08129214: .4byte c2_exit_to_overworld_2_switch +_08129214: .4byte CB2_ReturnToField thumb_func_end sub_8128FB8 thumb_func_start sub_8129218 diff --git a/asm/unk_810C3A4.s b/asm/unk_810C3A4.s deleted file mode 100644 index cabaac727..000000000 --- a/asm/unk_810C3A4.s +++ /dev/null @@ -1,389 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_810C3A4 -sub_810C3A4: @ 810C3A4 - push {lr} - ldr r0, _0810C3B4 @ =sub_810C3B8 - movs r1, 0x50 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0810C3B4: .4byte sub_810C3B8 - thumb_func_end sub_810C3A4 - - thumb_func_start sub_810C3B8 -sub_810C3B8: @ 810C3B8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _0810C43C @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0810C3E2 - bl walkrun_is_standing_still - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bne _0810C3E2 - bl sub_805C270 - strh r4, [r5, 0x8] -_0810C3E2: - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0810C41C - movs r4, 0 - ldr r7, _0810C440 @ =gMapObjects -_0810C3EE: - adds r0, r4, 0 - bl sub_810CF04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0810C412 - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - adds r1, r0, r7 - ldrb r0, [r1] - lsls r0, 30 - cmp r0, 0 - blt _0810C436 - adds r0, r1, 0 - bl FreezeMapObject -_0810C412: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _0810C3EE -_0810C41C: - movs r0, 0x1 - strh r0, [r5, 0xA] - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _0810C436 - adds r0, r6, 0 - bl DestroyTask - bl sub_805C780 - bl EnableBothScriptContexts -_0810C436: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0810C43C: .4byte gTasks -_0810C440: .4byte gMapObjects - thumb_func_end sub_810C3B8 - - thumb_func_start sub_810C444 -sub_810C444: @ 810C444 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r0, _0810C4E0 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x8E - lsls r1, 4 - adds r1, r0 - mov r8, r1 - movs r7, 0 - ldr r0, _0810C4E4 @ =gMapHeader - ldr r1, [r0, 0x4] - adds r2, r0, 0 - ldrb r1, [r1] - cmp r7, r1 - bcs _0810C4D2 -_0810C466: - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 3 - mov r1, r8 - adds r5, r0, r1 - ldrh r0, [r5, 0xC] - cmp r0, 0x1 - beq _0810C47A - cmp r0, 0x3 - bne _0810C4C4 -_0810C47A: - ldrb r0, [r5, 0x9] - subs r0, 0x4D - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bhi _0810C4C4 - bl sub_810CF54 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r5] - ldr r1, _0810C4E0 @ =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - mov r0, sp - ldrb r0, [r0] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r2, _0810C4E8 @ =gMapObjects - adds r4, r1, r2 - bl sub_810CF04 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0810C4C0 - adds r0, r4, 0 - adds r1, r6, 0 - bl npc_set_running_behaviour_etc -_0810C4C0: - strb r6, [r5, 0x9] - ldr r2, _0810C4E4 @ =gMapHeader -_0810C4C4: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, [r2, 0x4] - ldrb r0, [r0] - cmp r7, r0 - bcc _0810C466 -_0810C4D2: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0810C4E0: .4byte gSaveBlock1Ptr -_0810C4E4: .4byte gMapHeader -_0810C4E8: .4byte gMapObjects - thumb_func_end sub_810C444 - - thumb_func_start sub_810C4EC -sub_810C4EC: @ 810C4EC - push {r4-r7,lr} - movs r0, 0xB5 - lsls r0, 1 - movs r1, 0x1 - bl CheckBagHasItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0810C516 - ldr r0, _0810C568 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r2, 0xC7 - lsls r2, 3 - adds r1, r0, r2 - ldrh r2, [r1] - ldrb r0, [r1] - cmp r0, 0x63 - bhi _0810C516 - adds r0, r2, 0x1 - strh r0, [r1] -_0810C516: - ldr r7, _0810C56C @ =0x00000801 - adds r0, r7, 0 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0810C570 - ldr r6, _0810C568 @ =gSaveBlock1Ptr - ldr r0, [r6] - movs r5, 0xC7 - lsls r5, 3 - adds r3, r0, r5 - ldrh r2, [r3] - lsrs r1, r2, 8 - movs r4, 0xFF - cmp r1, 0x63 - bhi _0810C548 - adds r1, 0x1 - lsls r1, 24 - movs r0, 0xFF - ands r0, r2 - lsrs r1, 16 - orrs r0, r1 - strh r0, [r3] -_0810C548: - ldr r0, [r6] - adds r0, r5 - ldrh r0, [r0] - lsrs r0, 8 - ands r0, r4 - cmp r0, 0x64 - bne _0810C570 - adds r0, r7, 0 - bl FlagClear - bl sub_810C640 - bl sub_810D0D0 - movs r0, 0x1 - b _0810C572 - .align 2, 0 -_0810C568: .4byte gSaveBlock1Ptr -_0810C56C: .4byte 0x00000801 -_0810C570: - movs r0, 0 -_0810C572: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_810C4EC - - thumb_func_start sub_810C578 -sub_810C578: @ 810C578 - push {lr} - ldr r0, _0810C590 @ =0x00000801 - bl FlagClear - bl sub_810C640 - bl sub_810D0D0 - bl sub_810C594 - pop {r0} - bx r0 - .align 2, 0 -_0810C590: .4byte 0x00000801 - thumb_func_end sub_810C578 - - thumb_func_start sub_810C594 -sub_810C594: @ 810C594 - push {r4-r7,lr} - movs r5, 0 - movs r6, 0 -_0810C59A: - lsls r0, r5, 3 - adds r0, r5 - lsls r0, 2 - ldr r1, _0810C5FC @ =gMapObjects - adds r4, r0, r1 - ldrb r0, [r4, 0x6] - subs r0, 0x4D - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bhi _0810C5EA - bl sub_810CF54 - lsls r0, 24 - lsrs r3, r0, 24 - ldrb r0, [r4] - lsls r0, 31 - cmp r0, 0 - beq _0810C5EA - ldr r2, _0810C600 @ =gSprites - ldrb r0, [r4, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r7, 0x2E - ldrsh r0, [r1, r7] - cmp r0, r5 - bne _0810C5EA - strh r6, [r1, 0x24] - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r6, [r0, 0x26] - adds r0, r4, 0 - adds r1, r3, 0 - bl npc_set_running_behaviour_etc -_0810C5EA: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _0810C59A - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0810C5FC: .4byte gMapObjects -_0810C600: .4byte gSprites - thumb_func_end sub_810C594 - - thumb_func_start sub_810C604 -sub_810C604: @ 810C604 - ldr r0, _0810C61C @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0xC7 - lsls r0, 3 - adds r1, r0 - ldrh r2, [r1] - movs r0, 0xFF - lsls r0, 8 - ands r0, r2 - strh r0, [r1] - bx lr - .align 2, 0 -_0810C61C: .4byte gSaveBlock1Ptr - thumb_func_end sub_810C604 - - thumb_func_start sub_810C620 -sub_810C620: @ 810C620 - ldr r0, _0810C63C @ =gSaveBlock1Ptr - ldr r2, [r0] - movs r0, 0xC7 - lsls r0, 3 - adds r2, r0 - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - movs r1, 0x64 - orrs r0, r1 - strh r0, [r2] - bx lr - .align 2, 0 -_0810C63C: .4byte gSaveBlock1Ptr - thumb_func_end sub_810C620 - - thumb_func_start sub_810C640 -sub_810C640: @ 810C640 - ldr r0, _0810C650 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xC7 - lsls r1, 3 - adds r0, r1 - ldrb r1, [r0] - strh r1, [r0] - bx lr - .align 2, 0 -_0810C650: .4byte gSaveBlock1Ptr - thumb_func_end sub_810C640 - - thumb_func_start sub_810C654 -sub_810C654: @ 810C654 - ldr r0, _0810C66C @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0xC7 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - movs r3, 0xC8 - lsls r3, 7 - adds r2, r3, 0 - orrs r0, r2 - strh r0, [r1] - bx lr - .align 2, 0 -_0810C66C: .4byte gSaveBlock1Ptr - thumb_func_end sub_810C654 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/wireless_communication_status_screen.s b/asm/wireless_communication_status_screen.s index 72368171f..451ab60b9 100644 --- a/asm/wireless_communication_status_screen.s +++ b/asm/wireless_communication_status_screen.s @@ -80,7 +80,7 @@ sub_814F1E4: @ 814F1E4 movs r0, 0x1 movs r2, 0 movs r3, 0 - bl sub_80F696C + bl DecompressAndLoadBgGfxUsingHeap ldr r1, _0814F314 @ =gUnknown_846F8E0 movs r0, 0x1 movs r2, 0 diff --git a/data/data.s b/data/data.s index 1106adee3..499e3c9db 100644 --- a/data/data.s +++ b/data/data.s @@ -550,36 +550,6 @@ gUnknown_825E05C:: @ 825E05C .section .rodata.825EF0C .align 2 -gUnknown_825F844:: @ 825F842 - .incbin "baserom.gba", 0x25f844, 0x8d8 - -gUnknown_826011C:: @ 826011C - .incbin "baserom.gba", 0x26011C, 0x8 - -gUnknown_8260124:: @ 8260124 - .incbin "baserom.gba", 0x260124, 0x8 - -gUnknown_826012C:: @ 826012C - .incbin "baserom.gba", 0x26012C, 0x8 - -gUnknown_8260134:: @ 8260134 - .incbin "baserom.gba", 0x260134, 0x50 - -gUnknown_8260184:: @ 8260184 - .incbin "baserom.gba", 0x260184, 0x18 - -gUnknown_826019C:: @ 826019C - .incbin "baserom.gba", 0x26019C, 0x8 - -gUnknown_82601A4:: @ 82601A4 - .incbin "baserom.gba", 0x2601A4, 0x10 - -gUnknown_82601B4:: @ 82601B4 - .incbin "baserom.gba", 0x2601B4, 0x8 - -gUnknown_82601BC:: @ 82601BC - .incbin "baserom.gba", 0x2601BC, 0x4C - gUnknown_8260208:: @ 8260208 .incbin "baserom.gba", 0x260208, 0x8 @@ -763,7 +733,7 @@ gUnknown_8262055:: @ 8262055 gUnknown_826407C:: @ 826407C .incbin "baserom.gba", 0x26407C, 0x1FA0 -gUnknown_826601C:: @ 826601C +gUnknown_08331F60:: @ 826601C .incbin "baserom.gba", 0x26601C, 0x1000 gUnknown_826701C:: @ 826701C diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index f911f30ec..bcf6b8516 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -1888,10 +1888,10 @@ gUnknown_841B6EC:: @ 841B6EC gUnknown_841B6F3:: @ 841B6F3 .incbin "baserom.gba", 0x41B6F3, 0xA -gUnknown_841B6FD:: @ 841B6FD +gText_HatchedFromEgg:: @ 841B6FD .incbin "baserom.gba", 0x41B6FD, 0x19 -gUnknown_841B716:: @ 841B716 +gText_NickHatchPrompt:: @ 841B716 .incbin "baserom.gba", 0x41B716, 0x31 gUnknown_841B747:: @ 841B747 diff --git a/data/data_8468C98.s b/data/data_8468C98.s index 828932cc6..0f3b039c1 100644 --- a/data/data_8468C98.s +++ b/data/data_8468C98.s @@ -5,19 +5,59 @@ .align 2 gUnknown_846AFE8:: @ 846AFE8 - .incbin "baserom.gba", 0x46AFE8, 0x444 + .incbin "graphics/misc/unk_846B008.gbapal" + +gUnknown_846B008:: @ 846B008 + .incbin "graphics/misc/unk_846B008.4bpp.lz" gUnknown_846B42C:: @ 846B42C - .incbin "baserom.gba", 0x46B42C, 0x10 + obj_tiles gUnknown_846B008, 0x0c00, 0x2000 + null_obj_tiles gUnknown_846B43C:: @ 846B43C - .incbin "baserom.gba", 0x46B43C, 0x58 + obj_pal gUnknown_846AFE8, 0x2000 + null_obj_pal + +gUnknown_846B44C:: @ 846B44C + obj_image_anim_frame 0x00, 0 + obj_image_anim_end + +gUnknown_846B454:: @ 846B454 + obj_image_anim_frame 0x10, 0 + obj_image_anim_end + +gUnknown_846B45C:: @ 846B45C + obj_image_anim_frame 0x20, 0 + obj_image_anim_end + +gUnknown_846B464:: @ 846B464 + obj_image_anim_frame 0x40, 0 + obj_image_anim_end + +gUnknown_846B46C:: @ 846B46C + obj_image_anim_frame 0x30, 0 + obj_image_anim_end + +gUnknown_846B474:: @ 846B474 + obj_image_anim_frame 0x50, 0 + obj_image_anim_end + +gUnknown_846B47C:: + .4byte gUnknown_846B44C + .4byte gUnknown_846B454 + .4byte gUnknown_846B45C + .4byte gUnknown_846B464 + .4byte gUnknown_846B46C + .4byte gUnknown_846B474 gUnknown_846B494:: @ 846B494 - .incbin "baserom.gba", 0x46B494, 0x18 + spr_template 0x2000, 0x2000, gOamData_83AC9D8, gUnknown_846B47C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_846B4AC:: @ 846B4AC - .incbin "baserom.gba", 0x46B4AC, 0x10 + @ This is a 2D array with one row. + @ Why this was done this way is beyond me. + @ The data that follow this row are not at all function pointers. + .4byte sub_81477C0, sub_814784C, sub_81479D4, sub_8147A34 gUnknown_846B4BC:: @ 846B4BC .incbin "baserom.gba", 0x46B4BC, 0x190 diff --git a/data/graphics.s b/data/graphics.s index 242dd149e..ff9ed3d7e 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -1,9 +1,9 @@ .section gfx_data, "aw", %progbits -gUnknown_8D00000:: @ 8D00000 +gBattleTextboxTiles:: @ 8D00000 .incbin "baserom.gba", 0xD00000, 0x4D8 -gUnknown_8D004D8:: @ 8D004D8 +gBattleTextboxPalette:: @ 8D004D8 .incbin "baserom.gba", 0xD004D8, 0x44 .align 2 @@ -16397,10 +16397,10 @@ gUnknown_8EAE900:: @ 8EAE900 gUnknown_8EAEA00:: @ 8EAEA00 .incbin "baserom.gba", 0xEAEA00, 0x20 @UNKNOWN -gUnknown_8EAEA20:: @ 8EAEA20 +gTradeGba2_Pal:: @ 8EAEA20 .incbin "baserom.gba", 0xEAEA20, 0x60 @UNKNOWN -gUnknown_8EAEA80:: @ 8EAEA80 +gTradeGba_Gfx:: @ 8EAEA80 .incbin "baserom.gba", 0xEAEA80, 0x1420 @UNKNOWN gUnknown_8EAFEA0:: @ 8EAFEA0 diff --git a/data/specials.inc b/data/specials.inc index dba67f852..501ca0457 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -203,7 +203,7 @@ gSpecials:: @ 815FD60 def_special GetDaycareCost def_special TakePokemonFromDaycare def_special ScriptHatchMon - def_special sub_8046FD4 + def_special EggHatch def_special sub_8046EAC def_special sub_80CD228 def_special IsEnoughForCostInVar0x8005 diff --git a/graphics/misc/egg_hatch.png b/graphics/misc/egg_hatch.png Binary files differnew file mode 100644 index 000000000..d8a3e432c --- /dev/null +++ b/graphics/misc/egg_hatch.png diff --git a/graphics/misc/egg_shard.png b/graphics/misc/egg_shard.png Binary files differnew file mode 100644 index 000000000..0d88590dc --- /dev/null +++ b/graphics/misc/egg_shard.png diff --git a/graphics/misc/unk_846B008.png b/graphics/misc/unk_846B008.png Binary files differnew file mode 100644 index 000000000..4fed89d24 --- /dev/null +++ b/graphics/misc/unk_846B008.png diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index a04858121..f0094f070 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -473,3 +473,6 @@ $(GLOBALGFXDIR)/fame_checker_bg.4bpp: %.4bpp: %.png data/seagallop/water.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 41 + +$(MISCGFXDIR)/unk_846B008.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 diff --git a/include/constants/songs.h b/include/constants/songs.h index fc42af3fc..dd9335761 100644 --- a/include/constants/songs.h +++ b/include/constants/songs.h @@ -257,7 +257,9 @@ #define MUS_ME_BACHI 260 #define MUS_ME_WAZA 261 #define MUS_ME_KINOMI 262 +#define MUS_ME_SHINKA 263 #define BGM_FRLG_SAFARI_ZONE 264 +#define MUS_SHINKA BGM_FRLG_SAFARI_ZONE #define MUS_ME_B_BIG 268 #define MUS_ME_B_SMALL 269 #define MUS_ME_WASURE 270 diff --git a/include/daycare.h b/include/daycare.h index 6544ba21a..08ca11187 100644 --- a/include/daycare.h +++ b/include/daycare.h @@ -26,4 +26,10 @@ bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio); void ShowDaycareLevelMenu(void); void ChooseSendDaycareMon(void); +void ScriptHatchMon(void); +bool8 sub_8071614(void); +void EggHatch(void); +u8 GetEggStepsToSubtract(void); +u16 sub_80722E0(void); + #endif // GUARD_DAYCARE_H diff --git a/include/decompress.h b/include/decompress.h index c2c4f0e1c..9a2093b9f 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -27,6 +27,7 @@ void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); void HandleLoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); void HandleLoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); +void sub_800ECC4(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h index 228ff3bfb..d0856c84c 100644 --- a/include/field_fadetransition.h +++ b/include/field_fadetransition.h @@ -13,5 +13,6 @@ void sub_807E59C(void); void sub_807E500(void); void sub_807DF64(void); void sub_807DC18(void); +void FieldCallback_ReturnToEventScript2(void); #endif // GUARD_FIELD_FADETRANSITION_H diff --git a/include/global.h b/include/global.h index 60185af00..461402f1f 100644 --- a/include/global.h +++ b/include/global.h @@ -692,6 +692,12 @@ struct TrainerTowerLog u8 unkA_6:2; }; +struct TrainerRematchState +{ + u16 stepCounter; + u8 rematches[100]; +}; + struct SaveBlock1 { /*0x0000*/ struct Coords16 pos; @@ -719,7 +725,7 @@ struct SaveBlock1 /*0x05F8*/ u8 seen1[DEX_FLAGS_NO]; /*0x062C*/ u16 berryBlenderRecords[3]; // unused /*0x0632*/ u8 field_632[6]; // unused? - /*0x0638*/ u8 trainerRematchStepCounter; + /*0x0638*/ u16 trainerRematchStepCounter; /*0x063A*/ u8 ALIGNED(2) trainerRematches[100]; /*0x06A0*/ struct MapObject mapObjects[MAP_OBJECTS_COUNT]; /*0x08E0*/ struct MapObjectTemplate mapObjectTemplates[64]; diff --git a/include/graphics.h b/include/graphics.h index 83cc19bb3..04d05da2b 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -161,4 +161,11 @@ extern const u32 gUnknown_8E84F20[]; extern const u32 gUnknown_8E85068[]; extern const u8 gUnknown_8E99118[]; +// egg_hatch +extern const u32 gBattleTextboxTiles[]; +extern const u32 gFile_graphics_interface_menu_map_tilemap[]; +extern const u32 gBattleTextboxPalette[]; +extern const u32 gTradeGba2_Pal[]; +extern const u32 gTradeGba_Gfx[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/map_obj_80688E4.h b/include/map_obj_80688E4.h index 9ab76646d..de871fd64 100644 --- a/include/map_obj_80688E4.h +++ b/include/map_obj_80688E4.h @@ -4,5 +4,6 @@ #include "global.h" void player_bitmagic(void); +void FreezeMapObject(struct MapObject *); #endif //GUARD_MAP_OBJ_80688E4_H diff --git a/include/map_obj_lock.h b/include/map_obj_lock.h index 2927ca26d..0d130973b 100644 --- a/include/map_obj_lock.h +++ b/include/map_obj_lock.h @@ -10,5 +10,6 @@ void LockSelectedMapObject(void); void sub_8098630(void); bool8 sub_8098734(void); void sub_80696C0(void); +bool8 walkrun_is_standing_still(void); #endif // GUARD_MAP_OBJ_LOCK_H diff --git a/include/menu.h b/include/menu.h index 4a5bd8a2c..40c7ffc12 100644 --- a/include/menu.h +++ b/include/menu.h @@ -30,8 +30,8 @@ void reset_temp_tile_data_buffers(void); int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode); bool8 free_temp_tile_data_buffers_if_possible(void); u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd -void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); -s8 ProcessMenuInputNoWrap_(void); +//void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); +s8 Menu_ProcessInputNoWrapClearOnChoose(void); void do_scheduled_bg_tilemap_copies_to_vram(void); void clear_scheduled_bg_copies_to_vram(void); void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str); @@ -44,7 +44,7 @@ void PrintTextOnRightSnappedWindow(const u8 *, u32, u8); void sub_810F71C(void); void sub_810F740(void); u8 ProgramAndPlaceMenuCursorOnWindow(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPosition); -void sub_810FF60(const struct WindowTemplate *, u8, u8, u8, u16, u8, u8); +void CreateYesNoMenu(const struct WindowTemplate *, u8, u8, u8, u16, u8, u8); void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority); bool8 IsBlendTaskActive(void); diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index d24b7e3e5..b3daf43c6 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -30,7 +30,7 @@ void Menu_LoadStdPalAt(u16); void * malloc_and_decompress(const void * src, u32 * size); u16 sub_80F796C(void); void sub_80F6B08(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); -void sub_80F696C(u8 bgId, const void * gfx, u32 size, u16 a3, u8 a4); +void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void * gfx, u32 size, u16 a3, u8 a4); void ClearStdWindowAndFrame(u8 taskId, bool8 copyNow); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/overworld.h b/include/overworld.h index ac3d5283f..f03db2a3a 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -63,7 +63,7 @@ void strange_npc_table_clear(void); const struct MapHeader *get_mapheader_by_bank_and_number(u16, u16); void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *); void sub_8086230(void); -void c2_exit_to_overworld_2_switch(void); +void CB2_ReturnToField(void); bool32 sub_8087598(void); void c2_exit_to_overworld_1_continue_scripts_restart_music(void); void warp_in(void); @@ -84,19 +84,19 @@ void sub_805726C(void); void sub_8057430(void); void sub_8055DC4(void); -u8 sav1_map_get_name(void); +u8 GetCurrentRegionMapSectionId(void); void SetCurrentMapLayout(u16 mapDataId); void SetWarpDestinationToFixedHoleWarp(s16 x, s16 y); void ResetInitialPlayerAvatarState(void); void sub_8055D40(u16 mapDataId); -void sub_80563F0(void); +void CleanupOverworldWindowsAndTilemaps(void); extern u8 gUnknown_2031DD8; extern u8 gUnknown_2036E28; -extern void (*gUnknown_3005020)(void); +extern void (*gFieldCallback)(void); extern bool8 (* gFieldCallback2)(void); void SetLastHealLocationWarp(u8 healLocaionId); diff --git a/include/pokemon.h b/include/pokemon.h index bf2326ff8..a6dd9931b 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -633,6 +633,7 @@ void SetWildMonHeldItem(void); u16 GetMonEVCount(struct Pokemon *); const struct CompressedSpritePalette *sub_806E794(struct Pokemon *mon); +const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon); const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality); bool32 IsHMMove2(u16 move); bool8 IsPokeSpriteNotFlipped(u16 species); @@ -675,6 +676,6 @@ void BattleAnimateBackSprite(struct Sprite* sprite, u16 species); void PlayMapChosenOrBattleBGM(u16 songId); u8 GetMonsStateToDoubles(void); void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src); -void sub_803F7D4(u16 trainerSpriteId, u8 battlerPosition); +void SetMultiuseSpriteTemplateToPokemon(u16 trainerSpriteId, u8 battlerPosition); #endif // GUARD_POKEMON_H diff --git a/include/text_window.h b/include/text_window.h index 9fbc90799..c384ca1bb 100644 --- a/include/text_window.h +++ b/include/text_window.h @@ -23,7 +23,7 @@ void sub_8098C6C(u8 bg, u16 destOffset, u8 palOffset); void sub_814FEAC(u8 windowId, u16 tileStart, u8 palette); void sub_814FF2C(u8 windowId, u16 tileStart, u8 palette); void sub_815001C(u8 windowId, u16 tileStart, u8 palette); -void sub_814FE40(u8 windowId, u16 tileStart, u8 palette); +void LoadUserWindowBorderGfx(u8 windowId, u16 tileStart, u8 palette); void sub_814FDA0(u8 windowId, u16 tileStart, u8 palette); void DrawTextBorderOuter(u8 windowId, u16 tileStart, u8 palette); diff --git a/include/unk_810c3a4.h b/include/unk_810c3a4.h index 3f85ab00f..11a91b5ef 100644 --- a/include/unk_810c3a4.h +++ b/include/unk_810c3a4.h @@ -1,6 +1,25 @@ #ifndef GUARD_UNK_810C3A4_H #define GUARD_UNK_810C3A4_H +#define GET_VS_SEEKER_COUNTER_0() (gSaveBlock1Ptr->trainerRematch.stepCounter & 0xFF) +#define GET_VS_SEEKER_COUNTER_1() (gSaveBlock1Ptr->trainerRematch.stepCounter >> 8) +#define SET_VS_SEEKER_COUNTER_0(x) ({\ + gSaveBlock1Ptr->trainerRematch.stepCounter &= 0xFF00;\ + gSaveBlock1Ptr->trainerRematch.stepCounter |= (x);\ +}) +#define SET_VS_SEEKER_COUNTER_1(x) ({\ + gSaveBlock1Ptr->trainerRematch.stepCounter &= 0x00FF;\ + gSaveBlock1Ptr->trainerRematch.stepCounter |= ((x) << 8);\ +}) +#define INC_VS_SEEKER_COUNTER_0() ({\ + u8 x = GET_VS_SEEKER_COUNTER_0();\ + if (x < 100) gSaveBlock1Ptr->trainerRematch.stepCounter++;\ +}) +#define INC_VS_SEEKER_COUNTER_1() ({\ + u8 x = GET_VS_SEEKER_COUNTER_1();\ + if (x < 100) {x++; SET_VS_SEEKER_COUNTER_1(x);}\ +}) + void sub_810C604(void); void sub_810C640(void); diff --git a/ld_script.txt b/ld_script.txt index 6b9452054..9b056bf84 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -82,7 +82,6 @@ SECTIONS { src/util.o(.text); src/blend_palette.o(.text); src/daycare.o(.text); - asm/egg_hatch.o(.text); asm/battle_interface.o(.text); asm/smokescreen.o(.text); asm/pokeball.o(.text); @@ -214,7 +213,6 @@ SECTIONS { asm/save_location.o(.text); src/bag.o(.text); src/trainer_pokemon_sprites.o(.text); - asm/unk_810C3A4.o(.text); src/vs_seeker.o(.text); asm/item_pc.o(.text); asm/mailbox_pc.o(.text); @@ -248,16 +246,16 @@ SECTIONS { src/mevent_8145654.o(.text); src/menews_jisan.o(.text); src/seagallop.o(.text); - asm/unk_8147500.o(.text); - asm/unk_8147AA8.o(.text); - asm/unk_814B6F0.o(.text); - asm/unk_814BB4C.o(.text); - asm/unk_814D5C8.o(.text); + asm/pokemon_jump.o(.text); + asm/pokemon_jump_2.o(.text); + asm/berry_crush.o(.text); + asm/berry_crush_2.o(.text); + asm/berry_crush_3.o(.text); asm/wireless_communication_status_screen.o(.text); asm/braille_text.o(.text); asm/text_window.o(.text); src/quest_log_8150454.o(.text); - asm/unk_81507FC.o(.text); + asm/dodrio_berry_picking.o(.text); asm/battle_controller_pokedude.o(.text); asm/unk_8159F40.o(.text); asm/teachy_tv.o(.text); diff --git a/src/daycare.c b/src/daycare.c index 208db4a27..66e5c3f32 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -11,7 +11,6 @@ #include "random.h" #include "main.h" #include "constants/moves.h" -#include "egg_hatch.h" #include "text.h" #include "menu.h" #include "new_menu_helpers.h" @@ -23,10 +22,50 @@ #include "party_menu.h" #include "list_menu.h" #include "overworld.h" +#include "pokedex.h" +#include "decompress.h" +#include "task.h" +#include "palette.h" +#include "main.h" +#include "sound.h" +#include "constants/songs.h" +#include "text_window.h" +#include "trig.h" +#include "malloc.h" +#include "dma3.h" +#include "gpu_regs.h" +#include "bg.h" +#include "m4a.h" +#include "graphics.h" +#include "constants/abilities.h" +#include "constants/species.h" +#include "scanline_effect.h" +#include "field_weather.h" +#include "naming_screen.h" +#include "field_screen_effect.h" +#include "help_system.h" +#include "field_fadetransition.h" #define EGG_MOVES_ARRAY_COUNT 10 #define EGG_LVL_UP_MOVES_ARRAY_COUNT 50 +struct EggHatchData +{ + u8 eggSpriteID; + u8 pokeSpriteID; + u8 CB2_state; + u8 CB2_PalCounter; + u8 eggPartyID; + u8 unused_5; + u8 unused_6; + u8 eggShardVelocityID; + u8 windowId; + u8 unused_9; + u8 unused_A; + u16 species; + struct TextColor textColor; +}; + extern const u8 gText_MaleSymbol4[]; extern const u8 gText_FemaleSymbol4[]; extern const u8 gText_GenderlessSymbol[]; @@ -37,12 +76,33 @@ extern const u8 gDaycareText_DontLikeOther[]; extern const u8 gDaycareText_PlayOther[]; extern const u8 gExpandedPlaceholder_Empty[]; +extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle +extern const u8 gText_HatchedFromEgg[]; +extern const u8 gText_NickHatchPrompt[]; + // this file's functions static void ClearDaycareMonMail(struct DayCareMail *mail); static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare); static u8 GetDaycareCompatibilityScore(struct DayCare *daycare); static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y); +static void Task_EggHatch(u8 taskID); +static void CB2_EggHatch_0(void); +static void CB2_EggHatch_1(void); +static void SpriteCB_Egg_0(struct Sprite* sprite); +static void SpriteCB_Egg_1(struct Sprite* sprite); +static void SpriteCB_Egg_2(struct Sprite* sprite); +static void SpriteCB_Egg_3(struct Sprite* sprite); +static void SpriteCB_Egg_4(struct Sprite* sprite); +static void SpriteCB_Egg_5(struct Sprite* sprite); +static void SpriteCB_EggShard(struct Sprite* sprite); +static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed); +static void CreateRandomEggShardSprite(void); +static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex); + +// IWRAM bss +static IWRAM_DATA struct EggHatchData *sEggHatchData; + // RAM buffers used to assist with BuildEggMoveset() EWRAM_DATA static u16 sHatchedEggLevelUpMoves[EGG_LVL_UP_MOVES_ARRAY_COUNT] = {0}; EWRAM_DATA static u16 sHatchedEggFatherMoves[4] = {0}; @@ -103,8 +163,222 @@ static const u8 *const sCompatibilityMessages[] = static const u8 sNewLineText[] = _("\n"); static const u8 sJapaneseEggNickname[] = _("タマゴ"); // "tamago" ("egg" in Japanese) -// ??? -const u8 sGarbageData[] = {0xF4, 0x4B}; +static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/palettes/egg_palette.gbapal"); +static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp"); +static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp"); + +static const struct OamData sOamData_EggHatch = + { + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, + }; + +static const union AnimCmd sSpriteAnim_EggHatch0[] = + { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END + }; + +static const union AnimCmd sSpriteAnim_EggHatch1[] = + { + ANIMCMD_FRAME(16, 5), + ANIMCMD_END + }; + +static const union AnimCmd sSpriteAnim_EggHatch2[] = + { + ANIMCMD_FRAME(32, 5), + ANIMCMD_END + }; + +static const union AnimCmd sSpriteAnim_EggHatch3[] = + { + ANIMCMD_FRAME(48, 5), + ANIMCMD_END + }; + +static const union AnimCmd *const sSpriteAnimTable_EggHatch[] = + { + sSpriteAnim_EggHatch0, + sSpriteAnim_EggHatch1, + sSpriteAnim_EggHatch2, + sSpriteAnim_EggHatch3, + }; + +static const struct SpriteSheet sEggHatch_Sheet = + { + .data = sEggHatchTiles, + .size = 2048, + .tag = 12345, + }; + +static const struct SpriteSheet sEggShards_Sheet = + { + .data = sEggShardTiles, + .size = 128, + .tag = 23456, + }; + +static const struct SpritePalette sEgg_SpritePalette = + { + .data = sEggPalette, + .tag = 54321 + }; + +static const struct SpriteTemplate sSpriteTemplate_EggHatch = + { + .tileTag = 12345, + .paletteTag = 54321, + .oam = &sOamData_EggHatch, + .anims = sSpriteAnimTable_EggHatch, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy + }; + +static const struct OamData sOamData_EggShard = + { + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, + }; + +static const union AnimCmd sSpriteAnim_EggShard0[] = + { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END + }; + +static const union AnimCmd sSpriteAnim_EggShard1[] = + { + ANIMCMD_FRAME(1, 5), + ANIMCMD_END + }; + +static const union AnimCmd sSpriteAnim_EggShard2[] = + { + ANIMCMD_FRAME(2, 5), + ANIMCMD_END + }; + +static const union AnimCmd sSpriteAnim_EggShard3[] = + { + ANIMCMD_FRAME(3, 5), + ANIMCMD_END + }; + +static const union AnimCmd *const sSpriteAnimTable_EggShard[] = + { + sSpriteAnim_EggShard0, + sSpriteAnim_EggShard1, + sSpriteAnim_EggShard2, + sSpriteAnim_EggShard3, + }; + +static const struct SpriteTemplate sSpriteTemplate_EggShard = + { + .tileTag = 23456, + .paletteTag = 54321, + .oam = &sOamData_EggShard, + .anims = sSpriteAnimTable_EggShard, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_EggShard + }; + +static const struct BgTemplate sBgTemplates_EggHatch[2] = + { + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 24, + .screenSize = 3, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 8, + .screenSize = 1, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, + }; + +static const struct WindowTemplate sWinTemplates_EggHatch[2] = + { + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 26, + .height = 4, + .paletteNum = 0, + .baseBlock = 64 + }, + DUMMY_WIN_TEMPLATE + }; + +static const struct WindowTemplate sYesNoWinTemplate = + { + .priority = 0, + .tilemapLeft = 21, + .tilemapTop = 9, + .width = 6, + .height = 4, + .paletteNum = 15, + .baseBlock = 424 + }; + +static const s16 sEggShardVelocities[][2] = + { + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(-5), Q_8_8(-3)}, + {Q_8_8(3.5), Q_8_8(-3)}, + {Q_8_8(-4), Q_8_8(-3.75)}, + {Q_8_8(2), Q_8_8(-1.5)}, + {Q_8_8(-0.5), Q_8_8(-6.75)}, + {Q_8_8(5), Q_8_8(-2.25)}, + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(4.5), Q_8_8(-1.5)}, + {Q_8_8(-1), Q_8_8(-6.75)}, + {Q_8_8(4), Q_8_8(-2.25)}, + {Q_8_8(-3.5), Q_8_8(-3.75)}, + {Q_8_8(1), Q_8_8(-1.5)}, + {Q_8_8(-3.515625), Q_8_8(-6.75)}, + {Q_8_8(4.5), Q_8_8(-2.25)}, + {Q_8_8(-0.5), Q_8_8(-7.5)}, + {Q_8_8(1), Q_8_8(-4.5)}, + {Q_8_8(-2.5), Q_8_8(-2.25)}, + {Q_8_8(2.5), Q_8_8(-7.5)}, + }; + +// code u8 *GetMonNick(struct Pokemon *mon, u8 *dest) { @@ -1317,7 +1591,7 @@ void ShowDaycareLevelMenu(void) void ChooseSendDaycareMon(void) { sub_8128370(); - gMain.savedCallback = c2_exit_to_overworld_2_switch; + gMain.savedCallback = CB2_ReturnToField; } // Route 5 Daycare @@ -1351,3 +1625,585 @@ u16 TakePokemonFromRoute5Daycare(void) { return TakeSelectedPokemonFromDaycare(&gSaveBlock1Ptr->route5DayCareMon); } + +static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) +{ + u16 species; + u32 personality, pokerus; + u8 i, friendship, language, gameMet, markings, obedience; + u16 moves[4]; + u32 ivs[NUM_STATS]; + + + species = GetMonData(egg, MON_DATA_SPECIES); + + for (i = 0; i < 4; i++) + { + moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i); + } + + personality = GetMonData(egg, MON_DATA_PERSONALITY); + + for (i = 0; i < NUM_STATS; i++) + { + ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i); + } + +// language = GetMonData(egg, MON_DATA_LANGUAGE); + gameMet = GetMonData(egg, MON_DATA_MET_GAME); + markings = GetMonData(egg, MON_DATA_MARKINGS); + pokerus = GetMonData(egg, MON_DATA_POKERUS); + obedience = GetMonData(egg, MON_DATA_OBEDIENCE); + + CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, 0, 0); + + for (i = 0; i < 4; i++) + { + SetMonData(temp, MON_DATA_MOVE1 + i, &moves[i]); + } + + for (i = 0; i < NUM_STATS; i++) + { + SetMonData(temp, MON_DATA_HP_IV + i, &ivs[i]); + } + + language = GAME_LANGUAGE; + SetMonData(temp, MON_DATA_LANGUAGE, &language); + SetMonData(temp, MON_DATA_MET_GAME, &gameMet); + SetMonData(temp, MON_DATA_MARKINGS, &markings); + + friendship = 120; + SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship); + SetMonData(temp, MON_DATA_POKERUS, &pokerus); + SetMonData(temp, MON_DATA_OBEDIENCE, &obedience); + + *egg = *temp; +} + +static void AddHatchedMonToParty(u8 id) +{ + u8 isEgg = 0x46; // ? + u16 pokeNum; + u8 name[12]; + u16 ball; + u16 caughtLvl; + u8 mapNameID; + struct Pokemon* mon = &gPlayerParty[id]; + + CreatedHatchedMon(mon, &gEnemyParty[0]); + SetMonData(mon, MON_DATA_IS_EGG, &isEgg); + + pokeNum = GetMonData(mon, MON_DATA_SPECIES); + GetSpeciesName(name, pokeNum); + SetMonData(mon, MON_DATA_NICKNAME, name); + + pokeNum = SpeciesToNationalPokedexNum(pokeNum); + GetSetPokedexFlag(pokeNum, FLAG_SET_SEEN); + GetSetPokedexFlag(pokeNum, FLAG_SET_CAUGHT); + + GetMonNick(mon, gStringVar1); + + ball = ITEM_POKE_BALL; + SetMonData(mon, MON_DATA_POKEBALL, &ball); + + caughtLvl = 0; + SetMonData(mon, MON_DATA_MET_LEVEL, &caughtLvl); + + mapNameID = GetCurrentRegionMapSectionId(); + SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID); + + MonRestorePP(mon); + CalculateMonStats(mon); +} + +void ScriptHatchMon(void) +{ + AddHatchedMonToParty(gSpecialVar_0x8004); +} + +static bool8 sub_8046E34(struct DayCare *daycare, u8 daycareId) +{ + u8 nick[0x20]; + struct DaycareMon *daycareMon = &daycare->mons[daycareId]; + + GetBoxMonNick(&daycareMon->mon, nick); + if (daycareMon->mail.message.itemId != 0 + && (StringCompare(nick, daycareMon->mail.monName) != 0 + || StringCompare(gSaveBlock2Ptr->playerName, daycareMon->mail.OT_name) != 0)) + { + StringCopy(gStringVar1, nick); + StringCopy(gStringVar2, daycareMon->mail.OT_name); + StringCopy(gStringVar3, daycareMon->mail.monName); + return TRUE; + } + return FALSE; +} + +bool8 sub_8046EAC(void) +{ + return sub_8046E34(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004); +} + +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; + +static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc) +{ + u8 r4 = 0; + u8 spriteID = 0; // r7 + struct Pokemon* mon = NULL; // r5 + + if (a0 == 0) + { + mon = &gPlayerParty[pokeID]; + r4 = 1; + } + if (a0 == 1) + { + mon = &gPlayerParty[pokeID]; + r4 = 3; + } + switch (switchID) + { + case 0: + { + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u32 pid = GetMonData(mon, MON_DATA_PERSONALITY); + sub_800ECC4(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[(a0 * 2) + 1], species, pid); + LoadCompressedObjectPalette(GetMonSpritePalStruct(mon)); + *speciesLoc = species; + } + break; + case 1: + SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, r4); + spriteID = CreateSprite(&gMultiuseSpriteTemplate, 120, 70, 6); + gSprites[spriteID].invisible = TRUE; + gSprites[spriteID].callback = SpriteCallbackDummy; + break; + } + return spriteID; +} + +static void VBlankCB_EggHatch(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void EggHatch(void) +{ + ScriptContext2_Enable(); + CreateTask(Task_EggHatch, 10); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + sub_812B478(); +} + +static void Task_EggHatch(u8 taskID) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + SetMainCallback2(CB2_EggHatch_0); + gFieldCallback = FieldCallback_ReturnToEventScript2; + DestroyTask(taskID); + } +} + +static void CB2_EggHatch_0(void) +{ + switch (gMain.state) + { + case 0: + SetGpuReg(REG_OFFSET_DISPCNT, 0); + + sEggHatchData = Alloc(sizeof(struct EggHatchData)); + AllocateMonSpritesGfx(); + sEggHatchData->eggPartyID = gSpecialVar_0x8004; + sEggHatchData->eggShardVelocityID = 0; + + SetVBlankCallback(VBlankCB_EggHatch); + gSpecialVar_0x8005 = GetCurrentMapMusic(); + + reset_temp_tile_data_buffers(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, sBgTemplates_EggHatch, ARRAY_COUNT(sBgTemplates_EggHatch)); + + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + + SetBgAttribute(1, 7, 2); + SetBgTilemapBuffer(1, Alloc(0x1000)); + SetBgTilemapBuffer(0, Alloc(0x2000)); + + DeactivateAllTextPrinters(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + ResetSpriteData(); + ResetTasks(); + ScanlineEffect_Stop(); + m4aSoundVSyncOn(); + gMain.state++; + break; + case 1: + InitWindows(sWinTemplates_EggHatch); + sEggHatchData->windowId = 0; + gMain.state++; + break; + case 2: + DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); + CopyToBgTilemapBuffer(0, gFile_graphics_interface_menu_map_tilemap, 0, 0); + LoadCompressedPalette(gBattleTextboxPalette, 0, 0x20); + gMain.state++; + break; + case 3: + LoadSpriteSheet(&sEggHatch_Sheet); + LoadSpriteSheet(&sEggShards_Sheet); + LoadSpritePalette(&sEgg_SpritePalette); + gMain.state++; + break; + case 4: + CopyBgTilemapBufferToVram(0); + AddHatchedMonToParty(sEggHatchData->eggPartyID); + gMain.state++; + break; + case 5: + EggHatchCreateMonSprite(0, 0, sEggHatchData->eggPartyID, &sEggHatchData->species); + gMain.state++; + break; + case 6: + sEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, sEggHatchData->eggPartyID, &sEggHatchData->species); + gMain.state++; + break; + case 7: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + LoadPalette(gTradeGba2_Pal, 0x10, 0xA0); + LoadBgTiles(1, gTradeGba_Gfx, 0x1420, 0); + CopyToBgTilemapBuffer(1, gUnknown_08331F60, 0x1000, 0); + CopyBgTilemapBufferToVram(1); + gMain.state++; + break; + case 8: + SetMainCallback2(CB2_EggHatch_1); + sEggHatchData->CB2_state = 0; + break; + } + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void EggHatchSetMonNickname(void) +{ + SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3); + FreeMonSpritesGfx(); + Free(sEggHatchData); + sub_812B484(); + SetMainCallback2(CB2_ReturnToField); +} + +static void Task_EggHatchPlayBGM(u8 taskID) +{ + if (gTasks[taskID].data[0] == 0) + { + StopMapMusic(); + } + if (gTasks[taskID].data[0] == 1) + PlayBGM(MUS_ME_SHINKA); + if (gTasks[taskID].data[0] > 60) + { + PlayBGM(MUS_SHINKA); + DestroyTask(taskID); + // UB: task is destroyed, yet the value is incremented + } + gTasks[taskID].data[0]++; +} + +static void CB2_EggHatch_1(void) +{ + u16 species; + u8 gender; + u32 personality; + + switch (sEggHatchData->CB2_state) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + sEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_EggHatch, 120, 75, 5); + ShowBg(0); + ShowBg(1); + sEggHatchData->CB2_state++; + CreateTask(Task_EggHatchPlayBGM, 5); + break; + case 1: + if (!gPaletteFade.active) + { + FillWindowPixelBuffer(sEggHatchData->windowId, 0x00); + sEggHatchData->CB2_PalCounter = 0; + sEggHatchData->CB2_state++; + } + break; + case 2: + if (++sEggHatchData->CB2_PalCounter > 30) + { + sEggHatchData->CB2_state++; + gSprites[sEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0; + } + break; + case 3: + if (gSprites[sEggHatchData->eggSpriteID].callback == SpriteCallbackDummy) + { + PlayCry1(sEggHatchData->species, 0); + sEggHatchData->CB2_state++; + } + break; + case 4: + if (IsCryFinished()) + { + sEggHatchData->CB2_state++; + } + break; + case 5: + GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_HatchedFromEgg); + EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 3, 0xFF); + PlayFanfare(MUS_FANFA5); + sEggHatchData->CB2_state++; + PutWindowTilemap(sEggHatchData->windowId); + CopyWindowToVram(sEggHatchData->windowId, 3); + break; + case 6: + if (IsFanfareTaskInactive()) + sEggHatchData->CB2_state++; + break; + case 7: + if (IsFanfareTaskInactive()) + sEggHatchData->CB2_state++; + break; + case 8: + GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_NickHatchPrompt); + EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 2, 1); + sEggHatchData->CB2_state++; + break; + case 9: + if (!IsTextPrinterActive(sEggHatchData->windowId)) + { + LoadUserWindowBorderGfx(sEggHatchData->windowId, 0x140, 0xE0); + CreateYesNoMenu(&sYesNoWinTemplate, 3, 0, 2, 0x140, 0xE, 0); + sEggHatchData->CB2_state++; + } + break; + case 10: + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3); + species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); + gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]); + personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0); + DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname); + break; + case 1: + case -1: + sEggHatchData->CB2_state++; + } + break; + case 11: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + sEggHatchData->CB2_state++; + break; + case 12: + if (!gPaletteFade.active) + { + RemoveWindow(sEggHatchData->windowId); + UnsetBgTilemapBuffer(0); + UnsetBgTilemapBuffer(1); + Free(sEggHatchData); + SetMainCallback2(CB2_ReturnToField); + sub_812B484(); + } + break; + } + + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void SpriteCB_Egg_0(struct Sprite* sprite) +{ + if (++sprite->data[0] > 20) + { + sprite->callback = SpriteCB_Egg_1; + sprite->data[0] = 0; + } + else + { + sprite->data[1] = (sprite->data[1] + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], 1); + if (sprite->data[0] == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 1); + CreateRandomEggShardSprite(); + } + } +} + +static void SpriteCB_Egg_1(struct Sprite* sprite) +{ + if (++sprite->data[2] > 30) + { + if (++sprite->data[0] > 20) + { + sprite->callback = SpriteCB_Egg_2; + sprite->data[0] = 0; + sprite->data[2] = 0; + } + else + { + sprite->data[1] = (sprite->data[1] + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], 2); + if (sprite->data[0] == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 2); + } + } + } +} + +struct UnkStruct_82349CC +{ + u8 field_0; + u8 field_1; + u8 field_2; + u8 field_3; +}; + +extern const struct UnkStruct_82349CC gUnknown_82349CC[NUM_SPECIES]; + +static void SpriteCB_Egg_2(struct Sprite* sprite) +{ + if (++sprite->data[2] > 30) + { + if (++sprite->data[0] > 38) + { + u16 species; + + sprite->callback = SpriteCB_Egg_3; + sprite->data[0] = 0; + species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); + gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0; + gSprites[sEggHatchData->pokeSpriteID].pos2.y = gUnknown_82349CC[species].field_1; + } + else + { + sprite->data[1] = (sprite->data[1] + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], 2); + if (sprite->data[0] == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 2); + CreateRandomEggShardSprite(); + CreateRandomEggShardSprite(); + } + if (sprite->data[0] == 30) + PlaySE(SE_BOWA); + } + } +} + +static void SpriteCB_Egg_3(struct Sprite* sprite) +{ + if (++sprite->data[0] > 50) + { + sprite->callback = SpriteCB_Egg_4; + sprite->data[0] = 0; + } +} + +static void SpriteCB_Egg_4(struct Sprite* sprite) +{ + s16 i; + if (sprite->data[0] == 0) + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, 0xFFFF); + if (sprite->data[0] < 4u) + { + for (i = 0; i <= 3; i++) + CreateRandomEggShardSprite(); + } + sprite->data[0]++; + if (!gPaletteFade.active) + { + PlaySE(SE_JIHANKI); + sprite->invisible = TRUE; + sprite->callback = SpriteCB_Egg_5; + sprite->data[0] = 0; + } +} + +static void SpriteCB_Egg_5(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + gSprites[sEggHatchData->pokeSpriteID].invisible = FALSE; + StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1); + } + if (sprite->data[0] == 8) + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0x10, 0, 0xFFFF); + if (sprite->data[0] <= 9) + gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1; + if (sprite->data[0] > 40) + sprite->callback = SpriteCallbackDummy; + sprite->data[0]++; +} + +static void SpriteCB_EggShard(struct Sprite* sprite) +{ + sprite->data[4] += sprite->data[1]; + sprite->data[5] += sprite->data[2]; + + sprite->pos2.x = sprite->data[4] / 256; + sprite->pos2.y = sprite->data[5] / 256; + + sprite->data[2] += sprite->data[3]; + + if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data[2] > 0) + DestroySprite(sprite); +} + +static void CreateRandomEggShardSprite(void) +{ + u16 spriteAnimIndex; + + s16 velocity1 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][0]; + s16 velocity2 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][1]; + sEggHatchData->eggShardVelocityID++; + spriteAnimIndex = Random() % 4; + CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex); +} + +static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex) +{ + u8 spriteID = CreateSprite(&sSpriteTemplate_EggShard, x, y, 4); + gSprites[spriteID].data[1] = data1; + gSprites[spriteID].data[2] = data2; + gSprites[spriteID].data[3] = data3; + StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex); +} + +static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed) +{ + FillWindowPixelBuffer(windowId, 0xFF); + sEggHatchData->textColor.fgColor = 0; + sEggHatchData->textColor.bgColor = 5; + sEggHatchData->textColor.shadowColor = 6; + AddTextPrinterParametrized2(windowId, 3, x, y, 1, 1, &sEggHatchData->textColor, speed, string); +} diff --git a/src/egg_hatch.c b/src/egg_hatch.c new file mode 100644 index 000000000..59d61c569 --- /dev/null +++ b/src/egg_hatch.c @@ -0,0 +1,1758 @@ +#include "global.h" +#include "pokemon.h" +#include "egg_hatch.h" +#include "pokedex.h" +#include "constants/items.h" +#include "script.h" +#include "decompress.h" +#include "task.h" +#include "palette.h" +#include "main.h" +#include "event_data.h" +#include "sound.h" +#include "constants/songs.h" +#include "text.h" +#include "text_window.h" +#include "string_util.h" +#include "menu.h" +#include "trig.h" +#include "random.h" +#include "malloc.h" +#include "dma3.h" +#include "gpu_regs.h" +#include "bg.h" +#include "m4a.h" +#include "window.h" +#include "graphics.h" +#include "constants/abilities.h" +#include "constants/species.h" +#include "daycare.h" +#include "overworld.h" +#include "scanline_effect.h" +#include "field_weather.h" +#include "international_string_util.h" +#include "naming_screen.h" +#include "pokemon_storage_system.h" +#include "field_screen_effect.h" +#include "battle.h" // to get rid of later +#include "help_system.h" +#include "field_fadetransition.h" +#include "new_menu_helpers.h" +/* + +struct EggHatchData +{ + u8 eggSpriteID; + u8 pokeSpriteID; + u8 CB2_state; + u8 CB2_PalCounter; + u8 eggPartyID; + u8 unused_5; + u8 unused_6; + u8 eggShardVelocityID; + u8 windowId; + u8 unused_9; + u8 unused_A; + u16 species; + struct TextColor textColor; +}; + +extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle +extern const u8 gText_HatchedFromEgg[]; +extern const u8 gText_NickHatchPrompt[]; + +static void Task_EggHatch(u8 taskID); +static void CB2_EggHatch_0(void); +static void CB2_EggHatch_1(void); +static void SpriteCB_Egg_0(struct Sprite* sprite); +static void SpriteCB_Egg_1(struct Sprite* sprite); +static void SpriteCB_Egg_2(struct Sprite* sprite); +static void SpriteCB_Egg_3(struct Sprite* sprite); +static void SpriteCB_Egg_4(struct Sprite* sprite); +static void SpriteCB_Egg_5(struct Sprite* sprite); +static void SpriteCB_EggShard(struct Sprite* sprite); +static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed); +static void CreateRandomEggShardSprite(void); +static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex); + +// IWRAM bss +static IWRAM_DATA struct EggHatchData *sEggHatchData; + +// rom data +static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/palettes/egg_palette.gbapal"); +static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp"); +static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp"); + +static const struct OamData sOamData_EggHatch = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_EggHatch0[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_EggHatch1[] = +{ + ANIMCMD_FRAME(16, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_EggHatch2[] = +{ + ANIMCMD_FRAME(32, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_EggHatch3[] = +{ + ANIMCMD_FRAME(48, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_EggHatch[] = +{ + sSpriteAnim_EggHatch0, + sSpriteAnim_EggHatch1, + sSpriteAnim_EggHatch2, + sSpriteAnim_EggHatch3, +}; + +static const struct SpriteSheet sEggHatch_Sheet = +{ + .data = sEggHatchTiles, + .size = 2048, + .tag = 12345, +}; + +static const struct SpriteSheet sEggShards_Sheet = +{ + .data = sEggShardTiles, + .size = 128, + .tag = 23456, +}; + +static const struct SpritePalette sEgg_SpritePalette = +{ + .data = sEggPalette, + .tag = 54321 +}; + +static const struct SpriteTemplate sSpriteTemplate_EggHatch = +{ + .tileTag = 12345, + .paletteTag = 54321, + .oam = &sOamData_EggHatch, + .anims = sSpriteAnimTable_EggHatch, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const struct OamData sOamData_EggShard = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_EggShard0[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_EggShard1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_EggShard2[] = +{ + ANIMCMD_FRAME(2, 5), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_EggShard3[] = +{ + ANIMCMD_FRAME(3, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_EggShard[] = +{ + sSpriteAnim_EggShard0, + sSpriteAnim_EggShard1, + sSpriteAnim_EggShard2, + sSpriteAnim_EggShard3, +}; + +static const struct SpriteTemplate sSpriteTemplate_EggShard = +{ + .tileTag = 23456, + .paletteTag = 54321, + .oam = &sOamData_EggShard, + .anims = sSpriteAnimTable_EggShard, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_EggShard +}; + +static const struct BgTemplate sBgTemplates_EggHatch[2] = +{ + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 24, + .screenSize = 3, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 8, + .screenSize = 1, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, +}; + +static const struct WindowTemplate sWinTemplates_EggHatch[2] = +{ + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 26, + .height = 4, + .paletteNum = 0, + .baseBlock = 64 + }, + DUMMY_WIN_TEMPLATE +}; + +static const struct WindowTemplate sYesNoWinTemplate = +{ + .priority = 0, + .tilemapLeft = 21, + .tilemapTop = 9, + .width = 5, + .height = 4, + .paletteNum = 15, + .baseBlock = 424 +}; + +static const s16 sEggShardVelocities[][2] = +{ + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(-5), Q_8_8(-3)}, + {Q_8_8(3.5), Q_8_8(-3)}, + {Q_8_8(-4), Q_8_8(-3.75)}, + {Q_8_8(2), Q_8_8(-1.5)}, + {Q_8_8(-0.5), Q_8_8(-6.75)}, + {Q_8_8(5), Q_8_8(-2.25)}, + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(4.5), Q_8_8(-1.5)}, + {Q_8_8(-1), Q_8_8(-6.75)}, + {Q_8_8(4), Q_8_8(-2.25)}, + {Q_8_8(-3.5), Q_8_8(-3.75)}, + {Q_8_8(1), Q_8_8(-1.5)}, + {Q_8_8(-3.515625), Q_8_8(-6.75)}, + {Q_8_8(4.5), Q_8_8(-2.25)}, + {Q_8_8(-0.5), Q_8_8(-7.5)}, + {Q_8_8(1), Q_8_8(-4.5)}, + {Q_8_8(-2.5), Q_8_8(-2.25)}, + {Q_8_8(2.5), Q_8_8(-7.5)}, +}; + +// code + +static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) +{ + u16 species; + u32 personality, pokerus; + u8 i, friendship, language, gameMet, markings, obedience; + u16 moves[4]; + u32 ivs[NUM_STATS]; + + + species = GetMonData(egg, MON_DATA_SPECIES); + + for (i = 0; i < 4; i++) + { + moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i); + } + + personality = GetMonData(egg, MON_DATA_PERSONALITY); + + for (i = 0; i < NUM_STATS; i++) + { + ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i); + } + +// language = GetMonData(egg, MON_DATA_LANGUAGE); + gameMet = GetMonData(egg, MON_DATA_MET_GAME); + markings = GetMonData(egg, MON_DATA_MARKINGS); + pokerus = GetMonData(egg, MON_DATA_POKERUS); + obedience = GetMonData(egg, MON_DATA_OBEDIENCE); + + CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, 0, 0); + + for (i = 0; i < 4; i++) + { + SetMonData(temp, MON_DATA_MOVE1 + i, &moves[i]); + } + + for (i = 0; i < NUM_STATS; i++) + { + SetMonData(temp, MON_DATA_HP_IV + i, &ivs[i]); + } + + language = GAME_LANGUAGE; + SetMonData(temp, MON_DATA_LANGUAGE, &language); + SetMonData(temp, MON_DATA_MET_GAME, &gameMet); + SetMonData(temp, MON_DATA_MARKINGS, &markings); + + friendship = 120; + SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship); + SetMonData(temp, MON_DATA_POKERUS, &pokerus); + SetMonData(temp, MON_DATA_OBEDIENCE, &obedience); + + *egg = *temp; +} + +static void AddHatchedMonToParty(u8 id) +{ + u8 isEgg = 0x46; // ? + u16 pokeNum; + u8 name[12]; + u16 ball; + u16 caughtLvl; + u8 mapNameID; + struct Pokemon* mon = &gPlayerParty[id]; + + CreatedHatchedMon(mon, &gEnemyParty[0]); + SetMonData(mon, MON_DATA_IS_EGG, &isEgg); + + pokeNum = GetMonData(mon, MON_DATA_SPECIES); + GetSpeciesName(name, pokeNum); + SetMonData(mon, MON_DATA_NICKNAME, name); + + pokeNum = SpeciesToNationalPokedexNum(pokeNum); + GetSetPokedexFlag(pokeNum, FLAG_SET_SEEN); + GetSetPokedexFlag(pokeNum, FLAG_SET_CAUGHT); + + GetMonNick(mon, gStringVar1); + + ball = ITEM_POKE_BALL; + SetMonData(mon, MON_DATA_POKEBALL, &ball); + + caughtLvl = 0; + SetMonData(mon, MON_DATA_MET_LEVEL, &caughtLvl); + + mapNameID = GetCurrentRegionMapSectionId(); + SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID); + + MonRestorePP(mon); + CalculateMonStats(mon); +} + +void ScriptHatchMon(void) +{ + AddHatchedMonToParty(gSpecialVar_0x8004); +} + +static bool8 sub_8046E34(struct DayCare *daycare, u8 daycareId) +{ + u8 nick[0x20]; + struct DaycareMon *daycareMon = &daycare->mons[daycareId]; + + GetBoxMonNick(&daycareMon->mon, nick); + if (daycareMon->mail.message.itemId != 0 + && (StringCompare(nick, daycareMon->mail.monName) != 0 + || StringCompare(gSaveBlock2Ptr->playerName, daycareMon->mail.OT_name) != 0)) + { + StringCopy(gStringVar1, nick); + StringCopy(gStringVar2, daycareMon->mail.OT_name); + StringCopy(gStringVar3, daycareMon->mail.monName); + return TRUE; + } + return FALSE; +} + +bool8 sub_8046EAC(void) +{ + return sub_8046E34(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004); +} + +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; + +static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc) +{ + u8 r4 = 0; + u8 spriteID = 0; // r7 + struct Pokemon* mon = NULL; // r5 + + if (a0 == 0) + { + mon = &gPlayerParty[pokeID]; + r4 = 1; + } + if (a0 == 1) + { + mon = &gPlayerParty[pokeID]; + r4 = 3; + } + switch (switchID) + { + case 0: + { + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u32 pid = GetMonData(mon, MON_DATA_PERSONALITY); + sub_800ECC4(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[(a0 * 2) + 1], species, pid); + LoadCompressedObjectPalette(GetMonSpritePalStruct(mon)); + *speciesLoc = species; + } + break; + case 1: + SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, r4); + spriteID = CreateSprite(&gMultiuseSpriteTemplate, 120, 70, 6); + gSprites[spriteID].invisible = TRUE; + gSprites[spriteID].callback = SpriteCallbackDummy; + break; + } + return spriteID; +} + +static void VBlankCB_EggHatch(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void EggHatch(void) +{ + ScriptContext2_Enable(); + CreateTask(Task_EggHatch, 10); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + sub_812B478(); +} + +static void Task_EggHatch(u8 taskID) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + SetMainCallback2(CB2_EggHatch_0); + gFieldCallback = FieldCallback_ReturnToEventScript2; + DestroyTask(taskID); + } +} + +static void CB2_EggHatch_0(void) +{ + switch (gMain.state) + { + case 0: + SetGpuReg(REG_OFFSET_DISPCNT, 0); + + sEggHatchData = Alloc(sizeof(struct EggHatchData)); + AllocateMonSpritesGfx(); + sEggHatchData->eggPartyID = gSpecialVar_0x8004; + sEggHatchData->eggShardVelocityID = 0; + + SetVBlankCallback(VBlankCB_EggHatch); + gSpecialVar_0x8005 = GetCurrentMapMusic(); + + reset_temp_tile_data_buffers(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, sBgTemplates_EggHatch, ARRAY_COUNT(sBgTemplates_EggHatch)); + + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + + SetBgAttribute(1, 7, 2); + SetBgTilemapBuffer(1, Alloc(0x1000)); + SetBgTilemapBuffer(0, Alloc(0x2000)); + + DeactivateAllTextPrinters(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + ResetSpriteData(); + ResetTasks(); + ScanlineEffect_Stop(); + m4aSoundVSyncOn(); + gMain.state++; + break; + case 1: + InitWindows(sWinTemplates_EggHatch); + sEggHatchData->windowId = 0; + gMain.state++; + break; + case 2: + DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); + CopyToBgTilemapBuffer(0, gFile_graphics_interface_menu_map_tilemap, 0, 0); + LoadCompressedPalette(gBattleTextboxPalette, 0, 0x20); + gMain.state++; + break; + case 3: + LoadSpriteSheet(&sEggHatch_Sheet); + LoadSpriteSheet(&sEggShards_Sheet); + LoadSpritePalette(&sEgg_SpritePalette); + gMain.state++; + break; + case 4: + CopyBgTilemapBufferToVram(0); + AddHatchedMonToParty(sEggHatchData->eggPartyID); + gMain.state++; + break; + case 5: + EggHatchCreateMonSprite(0, 0, sEggHatchData->eggPartyID, &sEggHatchData->species); + gMain.state++; + break; + case 6: + sEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, sEggHatchData->eggPartyID, &sEggHatchData->species); + gMain.state++; + break; + case 7: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + LoadPalette(gTradeGba2_Pal, 0x10, 0xA0); + LoadBgTiles(1, gTradeGba_Gfx, 0x1420, 0); + CopyToBgTilemapBuffer(1, gUnknown_08331F60, 0x1000, 0); + CopyBgTilemapBufferToVram(1); + gMain.state++; + break; + case 8: + SetMainCallback2(CB2_EggHatch_1); + sEggHatchData->CB2_state = 0; + break; + } + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void EggHatchSetMonNickname(void) +{ + SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3); + FreeMonSpritesGfx(); + Free(sEggHatchData); + sub_812B484(); + SetMainCallback2(CB2_ReturnToField); +} + +static void Task_EggHatchPlayBGM(u8 taskID) +{ + if (gTasks[taskID].data[0] == 0) + { + StopMapMusic(); + } + if (gTasks[taskID].data[0] == 1) + PlayBGM(MUS_ME_SHINKA); + if (gTasks[taskID].data[0] > 60) + { + PlayBGM(MUS_SHINKA); + DestroyTask(taskID); + // UB: task is destroyed, yet the value is incremented + } + gTasks[taskID].data[0]++; +} + +static void CB2_EggHatch_1(void) +{ + u16 species; + u8 gender; + u32 personality; + + switch (sEggHatchData->CB2_state) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + sEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_EggHatch, 120, 75, 5); + ShowBg(0); + ShowBg(1); + sEggHatchData->CB2_state++; + CreateTask(Task_EggHatchPlayBGM, 5); + break; + case 1: + if (!gPaletteFade.active) + { + FillWindowPixelBuffer(sEggHatchData->windowId, 0x00); + sEggHatchData->CB2_PalCounter = 0; + sEggHatchData->CB2_state++; + } + break; + case 2: + if (++sEggHatchData->CB2_PalCounter > 30) + { + sEggHatchData->CB2_state++; + gSprites[sEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0; + } + break; + case 3: + if (gSprites[sEggHatchData->eggSpriteID].callback == SpriteCallbackDummy) + { + PlayCry1(sEggHatchData->species, 0); + sEggHatchData->CB2_state++; + } + break; + case 4: + if (IsCryFinished()) + { + sEggHatchData->CB2_state++; + } + break; + case 5: + GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_HatchedFromEgg); + EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 3, 0xFF); + PlayFanfare(MUS_FANFA5); + sEggHatchData->CB2_state++; + PutWindowTilemap(sEggHatchData->windowId); + CopyWindowToVram(sEggHatchData->windowId, 3); + break; + case 6: + if (IsFanfareTaskInactive()) + sEggHatchData->CB2_state++; + break; + case 7: + if (IsFanfareTaskInactive()) + sEggHatchData->CB2_state++; + break; + case 8: + GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_NickHatchPrompt); + EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 2, 1); + sEggHatchData->CB2_state++; + break; + case 9: + if (!IsTextPrinterActive(sEggHatchData->windowId)) + { + LoadUserWindowBorderGfx(sEggHatchData->windowId, 0x140, 0xE0); + CreateYesNoMenu(&sYesNoWinTemplate, 3, 0, 2, 0x140, 0xE, 0); + sEggHatchData->CB2_state++; + } + break; + case 10: + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3); + species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); + gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]); + personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0); + DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname); + break; + case 1: + case -1: + sEggHatchData->CB2_state++; + } + break; + case 11: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + sEggHatchData->CB2_state++; + break; + case 12: + if (!gPaletteFade.active) + { + RemoveWindow(sEggHatchData->windowId); + UnsetBgTilemapBuffer(0); + UnsetBgTilemapBuffer(1); + Free(sEggHatchData); + SetMainCallback2(CB2_ReturnToField); + sub_812B484(); + } + break; + } + + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void SpriteCB_Egg_0(struct Sprite* sprite) +{ + if (++sprite->data[0] > 20) + { + sprite->callback = SpriteCB_Egg_1; + sprite->data[0] = 0; + } + else + { + sprite->data[1] = (sprite->data[1] + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], 1); + if (sprite->data[0] == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 1); + CreateRandomEggShardSprite(); + } + } +} + +static void SpriteCB_Egg_1(struct Sprite* sprite) +{ + if (++sprite->data[2] > 30) + { + if (++sprite->data[0] > 20) + { + sprite->callback = SpriteCB_Egg_2; + sprite->data[0] = 0; + sprite->data[2] = 0; + } + else + { + sprite->data[1] = (sprite->data[1] + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], 2); + if (sprite->data[0] == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 2); + } + } + } +} + +struct UnkStruct_82349CC +{ + u8 field_0; + u8 field_1; + u8 field_2; + u8 field_3; +}; + +extern const struct UnkStruct_82349CC gUnknown_82349CC[NUM_SPECIES]; + +static void SpriteCB_Egg_2(struct Sprite* sprite) +{ + if (++sprite->data[2] > 30) + { + if (++sprite->data[0] > 38) + { + u16 species; + + sprite->callback = SpriteCB_Egg_3; + sprite->data[0] = 0; + species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); + gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0; + gSprites[sEggHatchData->pokeSpriteID].pos2.y = gUnknown_82349CC[species].field_1; + } + else + { + sprite->data[1] = (sprite->data[1] + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], 2); + if (sprite->data[0] == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 2); + CreateRandomEggShardSprite(); + CreateRandomEggShardSprite(); + } + if (sprite->data[0] == 30) + PlaySE(SE_BOWA); + } + } +} + +static void SpriteCB_Egg_3(struct Sprite* sprite) +{ + if (++sprite->data[0] > 50) + { + sprite->callback = SpriteCB_Egg_4; + sprite->data[0] = 0; + } +} + +static void SpriteCB_Egg_4(struct Sprite* sprite) +{ + s16 i; + if (sprite->data[0] == 0) + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, 0xFFFF); + if (sprite->data[0] < 4u) + { + for (i = 0; i <= 3; i++) + CreateRandomEggShardSprite(); + } + sprite->data[0]++; + if (!gPaletteFade.active) + { + PlaySE(SE_JIHANKI); + sprite->invisible = TRUE; + sprite->callback = SpriteCB_Egg_5; + sprite->data[0] = 0; + } +} + +static void SpriteCB_Egg_5(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + gSprites[sEggHatchData->pokeSpriteID].invisible = FALSE; + StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1); + } + if (sprite->data[0] == 8) + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0x10, 0, 0xFFFF); + if (sprite->data[0] <= 9) + gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1; + if (sprite->data[0] > 40) + sprite->callback = SpriteCallbackDummy; + sprite->data[0]++; +} + +static void SpriteCB_EggShard(struct Sprite* sprite) +{ + sprite->data[4] += sprite->data[1]; + sprite->data[5] += sprite->data[2]; + + sprite->pos2.x = sprite->data[4] / 256; + sprite->pos2.y = sprite->data[5] / 256; + + sprite->data[2] += sprite->data[3]; + + if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data[2] > 0) + DestroySprite(sprite); +} + +static void CreateRandomEggShardSprite(void) +{ + u16 spriteAnimIndex; + + s16 velocity1 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][0]; + s16 velocity2 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][1]; + sEggHatchData->eggShardVelocityID++; + spriteAnimIndex = Random() % 4; + CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex); +} + +static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex) +{ + u8 spriteID = CreateSprite(&sSpriteTemplate_EggShard, x, y, 4); + gSprites[spriteID].data[1] = data1; + gSprites[spriteID].data[2] = data2; + gSprites[spriteID].data[3] = data3; + StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex); +} + +static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed) +{ + FillWindowPixelBuffer(windowId, 0xFF); + sEggHatchData->textColor.fgColor = 0; + sEggHatchData->textColor.bgColor = 5; + sEggHatchData->textColor.shadowColor = 6; + AddTextPrinterParametrized2(windowId, 3, x, y, 1, 1, &sEggHatchData->textColor, speed, string); +} +*/ +#include "global.h" +#include "pokemon.h" +#include "egg_hatch.h" +#include "pokedex.h" +#include "constants/items.h" +#include "script.h" +#include "decompress.h" +#include "task.h" +#include "palette.h" +#include "main.h" +#include "event_data.h" +#include "sound.h" +#include "constants/songs.h" +#include "text.h" +#include "text_window.h" +#include "string_util.h" +#include "menu.h" +#include "trig.h" +#include "random.h" +#include "malloc.h" +#include "dma3.h" +#include "gpu_regs.h" +#include "bg.h" +#include "m4a.h" +#include "window.h" +#include "graphics.h" +#include "constants/abilities.h" +#include "constants/species.h" +#include "daycare.h" +#include "overworld.h" +#include "scanline_effect.h" +#include "field_weather.h" +#include "international_string_util.h" +#include "naming_screen.h" +#include "pokemon_storage_system.h" +#include "field_screen_effect.h" +#include "battle.h" // to get rid of later +#include "help_system.h" +#include "field_fadetransition.h" +#include "new_menu_helpers.h" + +struct EggHatchData +{ + u8 eggSpriteID; + u8 pokeSpriteID; + u8 CB2_state; + u8 CB2_PalCounter; + u8 eggPartyID; + u8 unused_5; + u8 unused_6; + u8 eggShardVelocityID; + u8 windowId; + u8 unused_9; + u8 unused_A; + u16 species; + struct TextColor textColor; +}; + +extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle +extern const u8 gText_HatchedFromEgg[]; +extern const u8 gText_NickHatchPrompt[]; + +static void Task_EggHatch(u8 taskID); +static void CB2_EggHatch_0(void); +static void CB2_EggHatch_1(void); +static void SpriteCB_Egg_0(struct Sprite* sprite); +static void SpriteCB_Egg_1(struct Sprite* sprite); +static void SpriteCB_Egg_2(struct Sprite* sprite); +static void SpriteCB_Egg_3(struct Sprite* sprite); +static void SpriteCB_Egg_4(struct Sprite* sprite); +static void SpriteCB_Egg_5(struct Sprite* sprite); +static void SpriteCB_EggShard(struct Sprite* sprite); +static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed); +static void CreateRandomEggShardSprite(void); +static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex); + +// IWRAM bss +static IWRAM_DATA struct EggHatchData *sEggHatchData; + +// rom data +static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/palettes/egg_palette.gbapal"); +static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp"); +static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp"); + +static const struct OamData sOamData_EggHatch = + { + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, + }; + +static const union AnimCmd sSpriteAnim_EggHatch0[] = + { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END + }; + +static const union AnimCmd sSpriteAnim_EggHatch1[] = + { + ANIMCMD_FRAME(16, 5), + ANIMCMD_END + }; + +static const union AnimCmd sSpriteAnim_EggHatch2[] = + { + ANIMCMD_FRAME(32, 5), + ANIMCMD_END + }; + +static const union AnimCmd sSpriteAnim_EggHatch3[] = + { + ANIMCMD_FRAME(48, 5), + ANIMCMD_END + }; + +static const union AnimCmd *const sSpriteAnimTable_EggHatch[] = + { + sSpriteAnim_EggHatch0, + sSpriteAnim_EggHatch1, + sSpriteAnim_EggHatch2, + sSpriteAnim_EggHatch3, + }; + +static const struct SpriteSheet sEggHatch_Sheet = + { + .data = sEggHatchTiles, + .size = 2048, + .tag = 12345, + }; + +static const struct SpriteSheet sEggShards_Sheet = + { + .data = sEggShardTiles, + .size = 128, + .tag = 23456, + }; + +static const struct SpritePalette sEgg_SpritePalette = + { + .data = sEggPalette, + .tag = 54321 + }; + +static const struct SpriteTemplate sSpriteTemplate_EggHatch = + { + .tileTag = 12345, + .paletteTag = 54321, + .oam = &sOamData_EggHatch, + .anims = sSpriteAnimTable_EggHatch, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy + }; + +static const struct OamData sOamData_EggShard = + { + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, + }; + +static const union AnimCmd sSpriteAnim_EggShard0[] = + { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END + }; + +static const union AnimCmd sSpriteAnim_EggShard1[] = + { + ANIMCMD_FRAME(1, 5), + ANIMCMD_END + }; + +static const union AnimCmd sSpriteAnim_EggShard2[] = + { + ANIMCMD_FRAME(2, 5), + ANIMCMD_END + }; + +static const union AnimCmd sSpriteAnim_EggShard3[] = + { + ANIMCMD_FRAME(3, 5), + ANIMCMD_END + }; + +static const union AnimCmd *const sSpriteAnimTable_EggShard[] = + { + sSpriteAnim_EggShard0, + sSpriteAnim_EggShard1, + sSpriteAnim_EggShard2, + sSpriteAnim_EggShard3, + }; + +static const struct SpriteTemplate sSpriteTemplate_EggShard = + { + .tileTag = 23456, + .paletteTag = 54321, + .oam = &sOamData_EggShard, + .anims = sSpriteAnimTable_EggShard, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_EggShard + }; + +static const struct BgTemplate sBgTemplates_EggHatch[2] = + { + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 24, + .screenSize = 3, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 8, + .screenSize = 1, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, + }; + +static const struct WindowTemplate sWinTemplates_EggHatch[2] = + { + { + .priority = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 26, + .height = 4, + .paletteNum = 0, + .baseBlock = 64 + }, + DUMMY_WIN_TEMPLATE + }; + +static const struct WindowTemplate sYesNoWinTemplate = + { + .priority = 0, + .tilemapLeft = 21, + .tilemapTop = 9, + .width = 5, + .height = 4, + .paletteNum = 15, + .baseBlock = 424 + }; + +static const s16 sEggShardVelocities[][2] = + { + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(-5), Q_8_8(-3)}, + {Q_8_8(3.5), Q_8_8(-3)}, + {Q_8_8(-4), Q_8_8(-3.75)}, + {Q_8_8(2), Q_8_8(-1.5)}, + {Q_8_8(-0.5), Q_8_8(-6.75)}, + {Q_8_8(5), Q_8_8(-2.25)}, + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(4.5), Q_8_8(-1.5)}, + {Q_8_8(-1), Q_8_8(-6.75)}, + {Q_8_8(4), Q_8_8(-2.25)}, + {Q_8_8(-3.5), Q_8_8(-3.75)}, + {Q_8_8(1), Q_8_8(-1.5)}, + {Q_8_8(-3.515625), Q_8_8(-6.75)}, + {Q_8_8(4.5), Q_8_8(-2.25)}, + {Q_8_8(-0.5), Q_8_8(-7.5)}, + {Q_8_8(1), Q_8_8(-4.5)}, + {Q_8_8(-2.5), Q_8_8(-2.25)}, + {Q_8_8(2.5), Q_8_8(-7.5)}, + }; + +// code + +static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) +{ + u16 species; + u32 personality, pokerus; + u8 i, friendship, language, gameMet, markings, obedience; + u16 moves[4]; + u32 ivs[NUM_STATS]; + + + species = GetMonData(egg, MON_DATA_SPECIES); + + for (i = 0; i < 4; i++) + { + moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i); + } + + personality = GetMonData(egg, MON_DATA_PERSONALITY); + + for (i = 0; i < NUM_STATS; i++) + { + ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i); + } + +// language = GetMonData(egg, MON_DATA_LANGUAGE); + gameMet = GetMonData(egg, MON_DATA_MET_GAME); + markings = GetMonData(egg, MON_DATA_MARKINGS); + pokerus = GetMonData(egg, MON_DATA_POKERUS); + obedience = GetMonData(egg, MON_DATA_OBEDIENCE); + + CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, 0, 0); + + for (i = 0; i < 4; i++) + { + SetMonData(temp, MON_DATA_MOVE1 + i, &moves[i]); + } + + for (i = 0; i < NUM_STATS; i++) + { + SetMonData(temp, MON_DATA_HP_IV + i, &ivs[i]); + } + + language = GAME_LANGUAGE; + SetMonData(temp, MON_DATA_LANGUAGE, &language); + SetMonData(temp, MON_DATA_MET_GAME, &gameMet); + SetMonData(temp, MON_DATA_MARKINGS, &markings); + + friendship = 120; + SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship); + SetMonData(temp, MON_DATA_POKERUS, &pokerus); + SetMonData(temp, MON_DATA_OBEDIENCE, &obedience); + + *egg = *temp; +} + +static void AddHatchedMonToParty(u8 id) +{ + u8 isEgg = 0x46; // ? + u16 pokeNum; + u8 name[12]; + u16 ball; + u16 caughtLvl; + u8 mapNameID; + struct Pokemon* mon = &gPlayerParty[id]; + + CreatedHatchedMon(mon, &gEnemyParty[0]); + SetMonData(mon, MON_DATA_IS_EGG, &isEgg); + + pokeNum = GetMonData(mon, MON_DATA_SPECIES); + GetSpeciesName(name, pokeNum); + SetMonData(mon, MON_DATA_NICKNAME, name); + + pokeNum = SpeciesToNationalPokedexNum(pokeNum); + GetSetPokedexFlag(pokeNum, FLAG_SET_SEEN); + GetSetPokedexFlag(pokeNum, FLAG_SET_CAUGHT); + + GetMonNick(mon, gStringVar1); + + ball = ITEM_POKE_BALL; + SetMonData(mon, MON_DATA_POKEBALL, &ball); + + caughtLvl = 0; + SetMonData(mon, MON_DATA_MET_LEVEL, &caughtLvl); + + mapNameID = GetCurrentRegionMapSectionId(); + SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID); + + MonRestorePP(mon); + CalculateMonStats(mon); +} + +void ScriptHatchMon(void) +{ + AddHatchedMonToParty(gSpecialVar_0x8004); +} + +static bool8 sub_8046E34(struct DayCare *daycare, u8 daycareId) +{ + u8 nick[0x20]; + struct DaycareMon *daycareMon = &daycare->mons[daycareId]; + + GetBoxMonNick(&daycareMon->mon, nick); + if (daycareMon->mail.message.itemId != 0 + && (StringCompare(nick, daycareMon->mail.monName) != 0 + || StringCompare(gSaveBlock2Ptr->playerName, daycareMon->mail.OT_name) != 0)) + { + StringCopy(gStringVar1, nick); + StringCopy(gStringVar2, daycareMon->mail.OT_name); + StringCopy(gStringVar3, daycareMon->mail.monName); + return TRUE; + } + return FALSE; +} + +bool8 sub_8046EAC(void) +{ + return sub_8046E34(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004); +} + +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; + +static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc) +{ + u8 r4 = 0; + u8 spriteID = 0; // r7 + struct Pokemon* mon = NULL; // r5 + + if (a0 == 0) + { + mon = &gPlayerParty[pokeID]; + r4 = 1; + } + if (a0 == 1) + { + mon = &gPlayerParty[pokeID]; + r4 = 3; + } + switch (switchID) + { + case 0: + { + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u32 pid = GetMonData(mon, MON_DATA_PERSONALITY); + sub_800ECC4(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[(a0 * 2) + 1], species, pid); + LoadCompressedObjectPalette(GetMonSpritePalStruct(mon)); + *speciesLoc = species; + } + break; + case 1: + SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, r4); + spriteID = CreateSprite(&gMultiuseSpriteTemplate, 120, 70, 6); + gSprites[spriteID].invisible = TRUE; + gSprites[spriteID].callback = SpriteCallbackDummy; + break; + } + return spriteID; +} + +static void VBlankCB_EggHatch(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void EggHatch(void) +{ + ScriptContext2_Enable(); + CreateTask(Task_EggHatch, 10); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + sub_812B478(); +} + +static void Task_EggHatch(u8 taskID) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + SetMainCallback2(CB2_EggHatch_0); + gFieldCallback = FieldCallback_ReturnToEventScript2; + DestroyTask(taskID); + } +} + +static void CB2_EggHatch_0(void) +{ + switch (gMain.state) + { + case 0: + SetGpuReg(REG_OFFSET_DISPCNT, 0); + + sEggHatchData = Alloc(sizeof(struct EggHatchData)); + AllocateMonSpritesGfx(); + sEggHatchData->eggPartyID = gSpecialVar_0x8004; + sEggHatchData->eggShardVelocityID = 0; + + SetVBlankCallback(VBlankCB_EggHatch); + gSpecialVar_0x8005 = GetCurrentMapMusic(); + + reset_temp_tile_data_buffers(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, sBgTemplates_EggHatch, ARRAY_COUNT(sBgTemplates_EggHatch)); + + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + + SetBgAttribute(1, 7, 2); + SetBgTilemapBuffer(1, Alloc(0x1000)); + SetBgTilemapBuffer(0, Alloc(0x2000)); + + DeactivateAllTextPrinters(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + ResetSpriteData(); + ResetTasks(); + ScanlineEffect_Stop(); + m4aSoundVSyncOn(); + gMain.state++; + break; + case 1: + InitWindows(sWinTemplates_EggHatch); + sEggHatchData->windowId = 0; + gMain.state++; + break; + case 2: + DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); + CopyToBgTilemapBuffer(0, gFile_graphics_interface_menu_map_tilemap, 0, 0); + LoadCompressedPalette(gBattleTextboxPalette, 0, 0x20); + gMain.state++; + break; + case 3: + LoadSpriteSheet(&sEggHatch_Sheet); + LoadSpriteSheet(&sEggShards_Sheet); + LoadSpritePalette(&sEgg_SpritePalette); + gMain.state++; + break; + case 4: + CopyBgTilemapBufferToVram(0); + AddHatchedMonToParty(sEggHatchData->eggPartyID); + gMain.state++; + break; + case 5: + EggHatchCreateMonSprite(0, 0, sEggHatchData->eggPartyID, &sEggHatchData->species); + gMain.state++; + break; + case 6: + sEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, sEggHatchData->eggPartyID, &sEggHatchData->species); + gMain.state++; + break; + case 7: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + LoadPalette(gTradeGba2_Pal, 0x10, 0xA0); + LoadBgTiles(1, gTradeGba_Gfx, 0x1420, 0); + CopyToBgTilemapBuffer(1, gUnknown_08331F60, 0x1000, 0); + CopyBgTilemapBufferToVram(1); + gMain.state++; + break; + case 8: + SetMainCallback2(CB2_EggHatch_1); + sEggHatchData->CB2_state = 0; + break; + } + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void EggHatchSetMonNickname(void) +{ + SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3); + FreeMonSpritesGfx(); + Free(sEggHatchData); + sub_812B484(); + SetMainCallback2(CB2_ReturnToField); +} + +static void Task_EggHatchPlayBGM(u8 taskID) +{ + if (gTasks[taskID].data[0] == 0) + { + StopMapMusic(); + } + if (gTasks[taskID].data[0] == 1) + PlayBGM(MUS_ME_SHINKA); + if (gTasks[taskID].data[0] > 60) + { + PlayBGM(MUS_SHINKA); + DestroyTask(taskID); + // UB: task is destroyed, yet the value is incremented + } + gTasks[taskID].data[0]++; +} + +static void CB2_EggHatch_1(void) +{ + u16 species; + u8 gender; + u32 personality; + + switch (sEggHatchData->CB2_state) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + sEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_EggHatch, 120, 75, 5); + ShowBg(0); + ShowBg(1); + sEggHatchData->CB2_state++; + CreateTask(Task_EggHatchPlayBGM, 5); + break; + case 1: + if (!gPaletteFade.active) + { + FillWindowPixelBuffer(sEggHatchData->windowId, 0x00); + sEggHatchData->CB2_PalCounter = 0; + sEggHatchData->CB2_state++; + } + break; + case 2: + if (++sEggHatchData->CB2_PalCounter > 30) + { + sEggHatchData->CB2_state++; + gSprites[sEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0; + } + break; + case 3: + if (gSprites[sEggHatchData->eggSpriteID].callback == SpriteCallbackDummy) + { + PlayCry1(sEggHatchData->species, 0); + sEggHatchData->CB2_state++; + } + break; + case 4: + if (IsCryFinished()) + { + sEggHatchData->CB2_state++; + } + break; + case 5: + GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_HatchedFromEgg); + EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 3, 0xFF); + PlayFanfare(MUS_FANFA5); + sEggHatchData->CB2_state++; + PutWindowTilemap(sEggHatchData->windowId); + CopyWindowToVram(sEggHatchData->windowId, 3); + break; + case 6: + if (IsFanfareTaskInactive()) + sEggHatchData->CB2_state++; + break; + case 7: + if (IsFanfareTaskInactive()) + sEggHatchData->CB2_state++; + break; + case 8: + GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_NickHatchPrompt); + EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 2, 1); + sEggHatchData->CB2_state++; + break; + case 9: + if (!IsTextPrinterActive(sEggHatchData->windowId)) + { + LoadUserWindowBorderGfx(sEggHatchData->windowId, 0x140, 0xE0); + CreateYesNoMenu(&sYesNoWinTemplate, 3, 0, 2, 0x140, 0xE, 0); + sEggHatchData->CB2_state++; + } + break; + case 10: + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3); + species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); + gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]); + personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0); + DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname); + break; + case 1: + case -1: + sEggHatchData->CB2_state++; + } + break; + case 11: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + sEggHatchData->CB2_state++; + break; + case 12: + if (!gPaletteFade.active) + { + RemoveWindow(sEggHatchData->windowId); + UnsetBgTilemapBuffer(0); + UnsetBgTilemapBuffer(1); + Free(sEggHatchData); + SetMainCallback2(CB2_ReturnToField); + sub_812B484(); + } + break; + } + + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void SpriteCB_Egg_0(struct Sprite* sprite) +{ + if (++sprite->data[0] > 20) + { + sprite->callback = SpriteCB_Egg_1; + sprite->data[0] = 0; + } + else + { + sprite->data[1] = (sprite->data[1] + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], 1); + if (sprite->data[0] == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 1); + CreateRandomEggShardSprite(); + } + } +} + +static void SpriteCB_Egg_1(struct Sprite* sprite) +{ + if (++sprite->data[2] > 30) + { + if (++sprite->data[0] > 20) + { + sprite->callback = SpriteCB_Egg_2; + sprite->data[0] = 0; + sprite->data[2] = 0; + } + else + { + sprite->data[1] = (sprite->data[1] + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], 2); + if (sprite->data[0] == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 2); + } + } + } +} + +struct UnkStruct_82349CC +{ + u8 field_0; + u8 field_1; + u8 field_2; + u8 field_3; +}; + +extern const struct UnkStruct_82349CC gUnknown_82349CC[NUM_SPECIES]; + +static void SpriteCB_Egg_2(struct Sprite* sprite) +{ + if (++sprite->data[2] > 30) + { + if (++sprite->data[0] > 38) + { + u16 species; + + sprite->callback = SpriteCB_Egg_3; + sprite->data[0] = 0; + species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); + gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0; + gSprites[sEggHatchData->pokeSpriteID].pos2.y = gUnknown_82349CC[species].field_1; + } + else + { + sprite->data[1] = (sprite->data[1] + 20) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], 2); + if (sprite->data[0] == 15) + { + PlaySE(SE_BOWA); + StartSpriteAnim(sprite, 2); + CreateRandomEggShardSprite(); + CreateRandomEggShardSprite(); + } + if (sprite->data[0] == 30) + PlaySE(SE_BOWA); + } + } +} + +static void SpriteCB_Egg_3(struct Sprite* sprite) +{ + if (++sprite->data[0] > 50) + { + sprite->callback = SpriteCB_Egg_4; + sprite->data[0] = 0; + } +} + +static void SpriteCB_Egg_4(struct Sprite* sprite) +{ + s16 i; + if (sprite->data[0] == 0) + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, 0xFFFF); + if (sprite->data[0] < 4u) + { + for (i = 0; i <= 3; i++) + CreateRandomEggShardSprite(); + } + sprite->data[0]++; + if (!gPaletteFade.active) + { + PlaySE(SE_JIHANKI); + sprite->invisible = TRUE; + sprite->callback = SpriteCB_Egg_5; + sprite->data[0] = 0; + } +} + +static void SpriteCB_Egg_5(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + gSprites[sEggHatchData->pokeSpriteID].invisible = FALSE; + StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1); + } + if (sprite->data[0] == 8) + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0x10, 0, 0xFFFF); + if (sprite->data[0] <= 9) + gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1; + if (sprite->data[0] > 40) + sprite->callback = SpriteCallbackDummy; + sprite->data[0]++; +} + +static void SpriteCB_EggShard(struct Sprite* sprite) +{ + sprite->data[4] += sprite->data[1]; + sprite->data[5] += sprite->data[2]; + + sprite->pos2.x = sprite->data[4] / 256; + sprite->pos2.y = sprite->data[5] / 256; + + sprite->data[2] += sprite->data[3]; + + if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data[2] > 0) + DestroySprite(sprite); +} + +static void CreateRandomEggShardSprite(void) +{ + u16 spriteAnimIndex; + + s16 velocity1 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][0]; + s16 velocity2 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][1]; + sEggHatchData->eggShardVelocityID++; + spriteAnimIndex = Random() % 4; + CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex); +} + +static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex) +{ + u8 spriteID = CreateSprite(&sSpriteTemplate_EggShard, x, y, 4); + gSprites[spriteID].data[1] = data1; + gSprites[spriteID].data[2] = data2; + gSprites[spriteID].data[3] = data3; + StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex); +} + +static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed) +{ + FillWindowPixelBuffer(windowId, 0xFF); + sEggHatchData->textColor.fgColor = 0; + sEggHatchData->textColor.bgColor = 5; + sEggHatchData->textColor.shadowColor = 6; + AddTextPrinterParametrized2(windowId, 3, x, y, 1, 1, &sEggHatchData->textColor, speed, string); +} diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index 0cbfb4be5..599ef387b 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -459,9 +459,9 @@ bool32 HandleMysteryGiftOrEReaderSetup(s32 mg_or_ereader) SetBgTilemapBuffer(1, Alloc(0x800)); SetBgTilemapBuffer(0, Alloc(0x800)); - sub_814FE40(0, 10, 0xE0); + LoadUserWindowBorderGfx(0, 10, 0xE0); sub_814FDA0(0, 1, 0xF0); - sub_80F696C(3, gUnkTextboxBorderGfx, 0x100, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, gUnkTextboxBorderGfx, 0x100, 0, 0); InitWindows(sMainWindows); DeactivateAllTextPrinters(); ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON); @@ -753,11 +753,11 @@ s8 mevent_message_print_and_prompt_yes_no(u8 * textState, u16 * windowId, bool8 { windowTemplate.tilemapTop = 15; } - sub_810FF60(&windowTemplate, 2, 0, 2, 10, 14, 0); + CreateYesNoMenu(&windowTemplate, 2, 0, 2, 10, 14, 0); (*textState)++; break; case 2: - input = ProcessMenuInputNoWrap_(); + input = Menu_ProcessInputNoWrapClearOnChoose(); if (input == -1 || input == 0 || input == 1) { *textState = 0; diff --git a/src/oak_speech.c b/src/oak_speech.c index eb87723a6..0100d76d3 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -1246,7 +1246,7 @@ static void Task_OakSpeech26(u8 taskId) data[3]--; else { - sub_810FF60(&sNewGameAdventureIntroWindowTemplates[2], 2, 0, 2, sub_80F796C(), 14, 0); + CreateYesNoMenu(&sNewGameAdventureIntroWindowTemplates[2], 2, 0, 2, sub_80F796C(), 14, 0); gTasks[taskId].func = Task_OakSpeech27; } } @@ -1255,7 +1255,7 @@ static void Task_OakSpeech26(u8 taskId) static void Task_OakSpeech27(u8 taskId) { - s8 input = ProcessMenuInputNoWrap_(); + s8 input = Menu_ProcessInputNoWrapClearOnChoose(); switch (input) { case 0: @@ -1614,7 +1614,7 @@ static void CreateNidoranFSprite(u8 taskId) DecompressPicFromTable(gUnknown_8235194, sub_8044E00(0), SPECIES_NIDORAN_F); sub_800F078(&gUnknown_82373F4); - sub_803F7D4(SPECIES_NIDORAN_F, 0); + SetMultiuseSpriteTemplateToPokemon(SPECIES_NIDORAN_F, 0); spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x60, 0x60, 1); gSprites[spriteId].callback = SpriteCallbackDummy; gSprites[spriteId].oam.priority = 1; diff --git a/src/pokemon.c b/src/pokemon.c index 0d4042137..7700d537a 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -80,7 +80,7 @@ extern const u16 sHMMoves[]; extern s8 gPokeblockFlavorCompatibilityTable[]; // External functions -extern u8 sav1_map_get_name(void); // overworld +extern u8 GetCurrentRegionMapSectionId(void); // overworld extern const struct BattleMove gBattleMoves[]; extern u8 sBattler_AI; // battle_ai extern void set_unknown_box_id(u8); // field_specials @@ -194,7 +194,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, SetBoxMonData(boxMon, MON_DATA_SPECIES, &species); SetBoxMonData(boxMon, MON_DATA_EXP, &gExperienceTables[gBaseStats[species].growthRate][level]); SetBoxMonData(boxMon, MON_DATA_FRIENDSHIP, &gBaseStats[species].friendship); - value = sav1_map_get_name(); + value = GetCurrentRegionMapSectionId(); SetBoxMonData(boxMon, MON_DATA_MET_LOCATION, &value); SetBoxMonData(boxMon, MON_DATA_MET_LEVEL, &level); SetBoxMonData(boxMon, MON_DATA_MET_GAME, &gGameVersion); @@ -1122,7 +1122,7 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality) return MON_MALE; } -void sub_803F7D4(u16 trainerSpriteId, u8 battlerPosition) +void SetMultiuseSpriteTemplateToPokemon(u16 trainerSpriteId, u8 battlerPosition) { if(gMonSpritesGfxPtr != NULL) { @@ -2769,7 +2769,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo { if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) friendship++; - if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name()) + if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) friendship++; } if (friendship < 0) @@ -2794,7 +2794,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo { if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) friendship++; - if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name()) + if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) friendship++; } if (friendship < 0) @@ -2818,7 +2818,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo { if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) friendship++; - if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name()) + if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) friendship++; } if (friendship < 0) @@ -3320,7 +3320,7 @@ bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 m { if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) friendship++; - if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name()) + if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) friendship++; } if (friendship < 0) @@ -3347,7 +3347,7 @@ bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 m { if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) friendship++; - if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name()) + if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) friendship++; } if (friendship < 0) @@ -3373,7 +3373,7 @@ bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 m { if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) friendship++; - if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name()) + if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) friendship++; } if (friendship < 0) @@ -5033,7 +5033,7 @@ void AdjustFriendship(struct Pokemon *mon, u8 event) { if (GetMonData(mon, MON_DATA_POKEBALL, 0) == ITEM_LUXURY_BALL) friendship++; - if (GetMonData(mon, MON_DATA_MET_LOCATION, 0) == sav1_map_get_name()) + if (GetMonData(mon, MON_DATA_MET_LOCATION, 0) == GetCurrentRegionMapSectionId()) friendship++; } diff --git a/src/quest_log_battle.c b/src/quest_log_battle.c index c702b6a5c..d4d1245ec 100644 --- a/src/quest_log_battle.c +++ b/src/quest_log_battle.c @@ -71,7 +71,7 @@ void sub_812BFDC(void) playerEndingHP = gBattleMons[GetBattlerAtPosition(0)].hp; playerMaxHP = gBattleMons[GetBattlerAtPosition(0)].maxHP; } - questLogTrainerBattleRecord->v7 = sav1_map_get_name(); + questLogTrainerBattleRecord->v7 = GetCurrentRegionMapSectionId(); questLogTrainerBattleRecord->v6 = 0; if (playerEndingHP < playerMaxHP / 3 * 2) questLogTrainerBattleRecord->v6 = 1; @@ -91,7 +91,7 @@ void sub_812BFDC(void) questLogWildBattleRecord->v0 = SPECIES_NONE; questLogWildBattleRecord->v2 = GetMonData(gEnemyParty + 0, MON_DATA_SPECIES); } - questLogWildBattleRecord->v4 = sav1_map_get_name(); + questLogWildBattleRecord->v4 = GetCurrentRegionMapSectionId(); sub_8113550(31, (const u16 *)questLogWildBattleRecord); } Free(questLogTrainerBattleRecord); diff --git a/src/seagallop.c b/src/seagallop.c index 001c827e5..7cdd6ebd0 100644 --- a/src/seagallop.c +++ b/src/seagallop.c @@ -322,7 +322,7 @@ static void Task_SeaGallop_3(void) Overworld_SetWarpDestination(warpInfo[0], warpInfo[1], -1, warpInfo[2], warpInfo[3]); PlayRainStoppingSoundEffect(); PlaySE(SE_KAIDAN); - gUnknown_3005020 = sub_807DF64; + gFieldCallback = sub_807DF64; warp_in(); SetMainCallback2(sub_805671C); ResetInitialPlayerAvatarState(); @@ -458,3 +458,42 @@ static bool8 GetDirectionOfTravel(void) } return (sTravelDirectionMatrix[gSpecialVar_0x8004] >> gSpecialVar_0x8006) & 1; } + +u8 sub_8147500(void) +{ + u16 originId, destId; + + originId = gSpecialVar_0x8004; + destId = gSpecialVar_0x8006; + + if (originId == SEAGALLOP_CINNABAR_ISLAND || destId == SEAGALLOP_CINNABAR_ISLAND) + return 1; + + if (originId == SEAGALLOP_VERMILION_CITY || destId == SEAGALLOP_VERMILION_CITY) + return 7; + + if (originId == SEAGALLOP_NAVEL_ROCK || destId == SEAGALLOP_NAVEL_ROCK) + return 10; + + if (originId == SEAGALLOP_BIRTH_ISLAND || destId == SEAGALLOP_BIRTH_ISLAND) + return 12; + + if ((originId == SEAGALLOP_ONE_ISLAND || originId == SEAGALLOP_TWO_ISLAND || originId == SEAGALLOP_THREE_ISLAND) && (destId == SEAGALLOP_ONE_ISLAND || destId == SEAGALLOP_TWO_ISLAND || destId == SEAGALLOP_THREE_ISLAND)) + return 2; + + if ((originId == SEAGALLOP_FOUR_ISLAND || originId == SEAGALLOP_FIVE_ISLAND) && (destId == SEAGALLOP_FOUR_ISLAND || destId == SEAGALLOP_FIVE_ISLAND)) + return 3; + + if ((originId == SEAGALLOP_SIX_ISLAND || originId == SEAGALLOP_SEVEN_ISLAND) && (destId == SEAGALLOP_SIX_ISLAND || destId == SEAGALLOP_SEVEN_ISLAND)) + return 5; + + return 6; +} + +bool8 sub_8147594(void) +{ + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(VERMILIONCITY) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(VERMILIONCITY) && gSaveBlock1Ptr->pos.x < 24) + return TRUE; + + return FALSE; +} diff --git a/src/trainer_tower.c b/src/trainer_tower.c index e914d7ac6..d2f7c92a9 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -1171,7 +1171,7 @@ void sub_815E124(u8 taskId) if (sub_80D08F8() == TRUE) { gMain.savedCallback = sub_815E114; - sub_80563F0(); + CleanupOverworldWindowsAndTilemaps(); SetMainCallback2(sub_800FD9C); DestroyTask(taskId); } diff --git a/src/vs_seeker.c b/src/vs_seeker.c index 9cf6a6e04..bd5b9c7ea 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -19,6 +19,7 @@ #include "random.h" #include "field_map_obj.h" #include "field_player_avatar.h" +#include "map_obj_80688E4.h" #include "map_obj_8097404.h" #include "unk_810c3a4.h" #include "constants/movement_commands.h" @@ -70,6 +71,8 @@ extern u8 gSelectedEventObject; // static declarations static EWRAM_DATA struct VsSeekerStruct *sVsSeeker = NULL; +static void sub_810C3B8(u8 taskId); +static void sub_810C594(void); static void Task_VsSeeker_1(u8 taskId); static void Task_VsSeeker_2(u8 taskId); static void GatherNearbyTrainerInfo(void); @@ -565,6 +568,229 @@ static const u8 gUnknown_8453F67[] = { 0x08, 0x08, 0x07, 0x09, 0x0a }; // text + + +void sub_810C3A4(void) +{ + CreateTask(sub_810C3B8, 80); +} + +static void sub_810C3B8(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + u8 i; + + if (task->data[0] == 0 && walkrun_is_standing_still() == TRUE) + { + sub_805C270(); + task->data[0] = 1; + } + + if (task->data[1] == 0) + { + for (i = 0; i < MAP_OBJECTS_COUNT; i++) + { + if (sub_810CF04(i) == TRUE) + { + if (gMapObjects[i].mapobj_bit_1) + return; + FreezeMapObject(&gMapObjects[i]); + } + } + } + + task->data[1] = 1; + if (task->data[0] != 0) + { + DestroyTask(taskId); + sub_805C780(); + EnableBothScriptContexts(); + } +} + +void sub_810C444(void) +{ + struct MapObjectTemplate * templates = gSaveBlock1Ptr->mapObjectTemplates; + u8 i; + u8 r6; + u8 sp0; + struct MapObject * mapObject; + + for (i = 0; i < gMapHeader.events->mapObjectCount; i++) + { + if ((templates[i].unkC == 1 || templates[i].unkC == 3) && (templates[i].movementType == 0x4D || templates[i].movementType == 0x4E || templates[i].movementType == 0x4F)) + { + r6 = sub_810CF54(); + TryGetFieldObjectIdByLocalIdAndMap(templates[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &sp0); + mapObject = &gMapObjects[sp0]; + if (sub_810CF04(sp0) == TRUE) + { + npc_set_running_behaviour_etc(mapObject, r6); + } + templates[i].movementType = r6; + } + } +} + +#ifdef NONMATCHING +bool8 sub_810C4EC(void) +{ + if (CheckBagHasItem(ITEM_VS_SEEKER, 1) == TRUE) + { + if ((gSaveBlock1Ptr->trainerRematchStepCounter & 0xFF) < 100) + gSaveBlock1Ptr->trainerRematchStepCounter++; + } + + if (FlagGet(0x801) == TRUE) + { + u16 x; + do { + x = (gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & 0xFF; + } while (0); + if (x < 100) + { + x++; + gSaveBlock1Ptr->trainerRematchStepCounter = ((u16)(x << 8)) | (gSaveBlock1Ptr->trainerRematchStepCounter & 0xFF); + } + do { + x = (gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & 0xFF; + } while (0); + if (x == 100) + { + FlagClear(0x801); + sub_810C640(); + sub_810D0D0(); + return TRUE; + } + } + + return FALSE; +} +#else +NAKED +bool8 sub_810C4EC(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmovs r0, 0xB5\n" + "\tlsls r0, 1\n" + "\tmovs r1, 0x1\n" + "\tbl CheckBagHasItem\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbne _0810C516\n" + "\tldr r0, _0810C568 @ =gSaveBlock1Ptr\n" + "\tldr r0, [r0]\n" + "\tmovs r2, 0xC7\n" + "\tlsls r2, 3\n" + "\tadds r1, r0, r2\n" + "\tldrh r2, [r1]\n" + "\tldrb r0, [r1]\n" + "\tcmp r0, 0x63\n" + "\tbhi _0810C516\n" + "\tadds r0, r2, 0x1\n" + "\tstrh r0, [r1]\n" + "_0810C516:\n" + "\tldr r7, _0810C56C @ =0x00000801\n" + "\tadds r0, r7, 0\n" + "\tbl FlagGet\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbne _0810C570\n" + "\tldr r6, _0810C568 @ =gSaveBlock1Ptr\n" + "\tldr r0, [r6]\n" + "\tmovs r5, 0xC7\n" + "\tlsls r5, 3\n" + "\tadds r3, r0, r5\n" + "\tldrh r2, [r3]\n" + "\tlsrs r1, r2, 8\n" + "\tmovs r4, 0xFF\n" + "\tcmp r1, 0x63\n" + "\tbhi _0810C548\n" + "\tadds r1, 0x1\n" + "\tlsls r1, 24\n" + "\tmovs r0, 0xFF\n" + "\tands r0, r2\n" + "\tlsrs r1, 16\n" + "\torrs r0, r1\n" + "\tstrh r0, [r3]\n" + "_0810C548:\n" + "\tldr r0, [r6]\n" + "\tadds r0, r5\n" + "\tldrh r0, [r0]\n" + "\tlsrs r0, 8\n" + "\tands r0, r4\n" + "\tcmp r0, 0x64\n" + "\tbne _0810C570\n" + "\tadds r0, r7, 0\n" + "\tbl FlagClear\n" + "\tbl sub_810C640\n" + "\tbl sub_810D0D0\n" + "\tmovs r0, 0x1\n" + "\tb _0810C572\n" + "\t.align 2, 0\n" + "_0810C568: .4byte gSaveBlock1Ptr\n" + "_0810C56C: .4byte 0x00000801\n" + "_0810C570:\n" + "\tmovs r0, 0\n" + "_0810C572:\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif + +void sub_810C578(void) +{ + FlagClear(0x801); + sub_810C640(); + sub_810D0D0(); + sub_810C594(); +} + +static void sub_810C594(void) +{ + u8 i; + + for (i = 0; i < MAP_OBJECTS_COUNT; i++) + { + struct MapObject * mapObject = &gMapObjects[i]; + if (mapObject->animPattern == 0x4D || mapObject->animPattern == 0x4E || mapObject->animPattern == 0x4F) + { + u8 r3 = sub_810CF54(); + if (mapObject->active && gSprites[mapObject->spriteId].data[0] == i) + { + gSprites[mapObject->spriteId].pos2.x = 0; + gSprites[mapObject->spriteId].pos2.y = 0; + npc_set_running_behaviour_etc(mapObject, r3); + } + } + } +} + +void sub_810C604(void) +{ + gSaveBlock1Ptr->trainerRematchStepCounter &= 0xFF00; +} + +void sub_810C620(void) +{ + gSaveBlock1Ptr->trainerRematchStepCounter &= 0xFF00; + gSaveBlock1Ptr->trainerRematchStepCounter |= 100; +} + +void sub_810C640(void) +{ + gSaveBlock1Ptr->trainerRematchStepCounter &= 0x00FF; +} + +void sub_810C654(void) +{ + gSaveBlock1Ptr->trainerRematchStepCounter &= 0x00FF; + gSaveBlock1Ptr->trainerRematchStepCounter |= (100 << 8); +} + void Task_VsSeeker_0(u8 taskId) { u8 i; @@ -1225,7 +1451,7 @@ static u16 GetTrainerFlagFromScript(const u8 *script) * because the ARM processor requires shorts to be 16-bit * aligned, this function needs to perform explicit bitwise * operations to get the correct flag. - * + * * 5c XX YY ZZ ... * -- -- */ @@ -1360,7 +1586,7 @@ static void StartAllRespondantIdleMovements(void) u8 dummy = 0; s32 i; s32 j; - + for (i = 0; i < sVsSeeker->numRematchableTrainers; i++) { for (j = 0; sVsSeeker->trainerInfo[j].localId != 0xFF; j++) diff --git a/sym_bss.txt b/sym_bss.txt index 529460f3e..88c464566 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -60,8 +60,7 @@ gUnknown_3000E6B: @ 3000E6B gUnknown_3000E6C: @ 3000E6C .space 0x8 -gUnknown_3000E74: @ 3000E74 - .space 0x4 + .include "src/daycare.o" gUnknown_3000E78: @ 3000E78 .space 0x4 diff --git a/sym_common.txt b/sym_common.txt index 7424575e8..6f47cb531 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -145,7 +145,7 @@ gUnknown_3005018: @ 3005018 gUnknown_300501C: @ 300501C .space 0x4 -gUnknown_3005020: @ 3005020 +gFieldCallback: @ 3005020 .space 0x4 gFieldCallback2: @ 3005024 |